func TestManifestBuildReplicationTransfer(t *testing.T) { nsqMessage := testutil.MakeNsqMessage("999") manifest := models.NewDPNIngestManifest(nsqMessage) fromNode := "aptrust" toNode := "chron" link := "[email protected]:outbound/1234567.tar" xfer, err := manifest.BuildReplicationTransfer(fromNode, toNode, link) // No DPNBag attached to manifest. Should get error. require.NotNil(t, err) manifest.DPNBag = testutil.MakeDPNBag() xfer, err = manifest.BuildReplicationTransfer(fromNode, toNode, link) require.Nil(t, err) require.NotNil(t, xfer) assert.Equal(t, fromNode, xfer.FromNode) assert.Equal(t, toNode, xfer.ToNode) assert.Equal(t, manifest.DPNBag.UUID, xfer.Bag) assert.True(t, util.LooksLikeUUID(xfer.ReplicationId)) assert.Equal(t, constants.AlgSha256, xfer.FixityAlgorithm) assert.Nil(t, xfer.FixityNonce) assert.Nil(t, xfer.FixityValue) assert.Equal(t, "rsync", xfer.Protocol) assert.Equal(t, link, xfer.Link) assert.False(t, xfer.CreatedAt.IsZero()) assert.False(t, xfer.UpdatedAt.IsZero()) }
func TestManifestBuildDPNIdentifierEvent(t *testing.T) { nsqMessage := testutil.MakeNsqMessage("999") manifest := models.NewDPNIngestManifest(nsqMessage) manifest.StorageURL = "https://example.com/my_bag.tar" // Should give error, since DPNBag is nil event, err := manifest.BuildDPNIdentifierEvent() require.NotNil(t, err) manifest.DPNBag = testutil.MakeDPNBag() event, err = manifest.BuildDPNIdentifierEvent() require.Nil(t, err) require.NotNil(t, event) assert.True(t, util.LooksLikeUUID(event.Identifier)) assert.Equal(t, constants.EventIdentifierAssignment, event.EventType) assert.False(t, event.DateTime.IsZero()) assert.Equal(t, "Item assigned DPN UUID", event.Detail) assert.Equal(t, constants.StatusSuccess, event.Outcome) assert.Equal(t, manifest.DPNBag.UUID, event.OutcomeDetail) assert.Equal(t, "APTrust exchange using Satori go.uuid", event.Object) assert.Equal(t, "https://github.com/satori/go.uuid", event.Agent) assert.True(t, strings.Contains(event.OutcomeInformation, manifest.DPNBag.UUID)) assert.Equal(t, manifest.DPNBag.LocalId, event.IntellectualObjectIdentifier) }
func TestNewDPNIngestManifest(t *testing.T) { nsqMessage := testutil.MakeNsqMessage("999") manifest := models.NewDPNIngestManifest(nsqMessage) assert.Equal(t, nsqMessage, manifest.NsqMessage) assert.NotNil(t, manifest.PackageSummary) assert.NotNil(t, manifest.ValidateSummary) assert.NotNil(t, manifest.StoreSummary) assert.NotNil(t, manifest.RecordSummary) require.NotNil(t, manifest.ReplicationTransfers) assert.Equal(t, 0, len(manifest.ReplicationTransfers)) assert.Empty(t, manifest.StorageURL) }
// Test the JSON serialized WorkItemState. Param WorkItemState is a // string of JSON data. Param detail describes which object we're // testing and where the JSON came from, so failure messages can be // more informative. func testIngestStoreWorkItemState(t *testing.T, _context *context.Context, workItemState, detail string) { dpnIngestManifest := models.NewDPNIngestManifest(nil) err := json.Unmarshal([]byte(workItemState), dpnIngestManifest) require.Nil(t, err, "Could not unmarshal state") testIngestStoreManifest(t, _context, dpnIngestManifest, detail) }