Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


  1. Use Builders for automatic cleanup: Whenever possible, use the Builder test classes (see*) in "dpace-server-webapp", as these Builder classes automatically cleanup after themselves!

    Code Block
    // Example of creating a test Item via the ItemBuilder class
    // As soon as the method using this "testItem" completes, the "testItem" will be automatically deleted
    // by the AbstractBuilderCleanupUtil (which is called @After every test)
    Item testItem = ItemBuilder.createItem(context, collection);

  2. Cleanup after test POST or file upload: If you are testing a POST command (or file upload), you MUST cleanup the POSTed data by parsing the ID out of the response and using a Builder class for cleanup.  Our best practice is to use the following code logic.  Further examples can be found in the codebase.

    Code Block
    import static;
    import java.util.concurrent.atomic.AtomicReference;
    AtomicReference<UUID> idRef = new AtomicReference<>();
    try {
        // Example of a POST command to create a new Collection while logged in as the user with the given "authToken"
                            ...[various params and data sent via POST]...
                            // Check the POST was successful, which means we created test content & need to clean it up!
                            // From the JSON response, read the "id" field, parse it as a UUID, and save to "idRef" local variable.
                            .andDo(result -> idRef.set(UUID.fromString(read(result.getResponse().getContentAsString(), "$.id"))));
    } finally {
        // Using the CollectionBuilder, delete the Collection with UUID equal to value of idRef

  3. (If neither of the above are possible) "Manually" delete created data:  If you are creating test data in either the "dspace-api" or "dspace-server-webapp", you should use the Builder method (see above).  This manual test cleanup may no longer be necessary (in v7.x and above) & should be avoided wherever possible. That said, here's an example of manual cleanup:

    Code Block
    // Create test data by temporarily turning off authorization
    WorkspaceItem workspaceItem = workspaceItemService.create(context, collection, true);
    Item item = installItemService.installItem(context, workspaceItem);
    [perform various tests]
    // Delete the test Item created, again by temporarily turning off authorization
    itemService.delete(context, item);