/******************************************************************************* * Copyright French Prime minister Office/SGMAP/DINSIC/Vitam Program (2015-2019) * * contact.vitam@culture.gouv.fr * * This software is a computer program whose purpose is to implement a digital archiving back-office system managing * high volumetry securely and efficiently. * * This software is governed by the CeCILL 2.1 license under French law and abiding by the rules of distribution of free * software. You can use, modify and/ or redistribute the software under the terms of the CeCILL 2.1 license as * circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info". * * As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, * users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the * successive licensors have only limited liability. * * In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or * developing or reproducing the software by the user in light of its specific status of free software, that may mean * that it is complicated to manipulate, and that also therefore means that it is reserved for developers and * experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the * software's suitability as regards their requirements in conditions enabling the security of their systems and/or data * to be ensured and, more generally, to use and operate it in the same conditions as regards security. * * The fact that you are presently reading this means that you have had knowledge of the CeCILL 2.1 license and that you * accept its terms. *******************************************************************************/ package fr.gouv.vitam.storage.engine.server.rest; import static com.jayway.restassured.RestAssured.get; import static com.jayway.restassured.RestAssured.given; import java.io.ByteArrayInputStream; import java.io.InputStream; import javax.ws.rs.HttpMethod; import javax.ws.rs.container.AsyncResponse; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.core.Response.Status; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.glassfish.jersey.jackson.JacksonFeature; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.servlet.ServletContainer; import org.jhades.JHades; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import com.fasterxml.jackson.databind.JsonNode; import com.jayway.restassured.RestAssured; import com.jayway.restassured.http.ContentType; import fr.gouv.vitam.common.GlobalDataRest; import fr.gouv.vitam.common.VitamConfiguration; import fr.gouv.vitam.common.client.AbstractMockClient; import fr.gouv.vitam.common.client.VitamRequestIterator; import fr.gouv.vitam.common.digest.DigestType; import fr.gouv.vitam.common.exception.VitamApplicationServerException; import fr.gouv.vitam.common.junit.JunitHelper; import fr.gouv.vitam.common.logging.VitamLogger; import fr.gouv.vitam.common.logging.VitamLoggerFactory; import fr.gouv.vitam.common.parameter.ParameterHelper; import fr.gouv.vitam.common.server.BasicVitamServer; import fr.gouv.vitam.common.server.TenantIdContainerFilter; import fr.gouv.vitam.common.server.VitamServer; import fr.gouv.vitam.common.server.VitamServerFactory; import fr.gouv.vitam.common.server.application.AsyncInputStreamHelper; import fr.gouv.vitam.common.server.application.VitamHttpHeader; import fr.gouv.vitam.storage.driver.exception.StorageObjectAlreadyExistsException; import fr.gouv.vitam.storage.engine.common.exception.StorageAlreadyExistsException; import fr.gouv.vitam.storage.engine.common.exception.StorageException; import fr.gouv.vitam.storage.engine.common.exception.StorageNotFoundException; import fr.gouv.vitam.storage.engine.common.exception.StorageTechnicalException; import fr.gouv.vitam.storage.engine.common.model.DataCategory; import fr.gouv.vitam.storage.engine.common.model.request.ObjectDescription; import fr.gouv.vitam.storage.engine.common.model.response.StoredInfoResult; import fr.gouv.vitam.storage.engine.server.distribution.StorageDistribution; /** * */ public class StorageResourceTest { private static final VitamLogger LOGGER = VitamLoggerFactory.getInstance(StorageResourceTest.class); private static VitamServer vitamServer; private static int serverPort; private static final String REST_URI = "/storage/v1"; private static final String OBJECTS_URI = "/objects"; private static final String REPORTS_URI = "/reports"; private static final String OBJECT_ID_URI = "/{id_object}"; private static final String REPORT_ID_URI = "/{id_report}"; private static final String LOGBOOKS_URI = "/logbooks"; private static final String LOGBOOK_ID_URI = "/{id_logbook}"; private static final String UNITS_URI = "/units"; private static final String METADATA_ID_URI = "/{id_md}"; private static final String OBJECT_GROUPS_URI = "/objectgroups"; private static final String STATUS_URI = "/status"; private static final String MANIFESTS_URI = "/manifests"; private static final String MANIFEST_ID_URI = "/{id_manifest}"; private static final String ID_O1 = "idO1"; private static JunitHelper junitHelper; private static final String STRATEGY_ID = "strategyId"; private static final Integer TENANT_ID = 0; private static final Integer TENANT_ID_E = 1; private static final Integer TENANT_ID_A_E = 2; private static final Integer TENANT_ID_Ardyexist = 3; @BeforeClass public static void setUpBeforeClass() throws Exception { // Identify overlapping in particular jsr311 new JHades().overlappingJarsReport(); junitHelper = JunitHelper.getInstance(); serverPort = junitHelper.findAvailablePort(); RestAssured.port = serverPort; RestAssured.basePath = REST_URI; try { vitamServer = buildTestServer(); ((BasicVitamServer) vitamServer).start(); } catch (final VitamApplicationServerException e) { LOGGER.error(e); throw new IllegalStateException("Cannot start the Storage Application Server", e); } } @AfterClass public static void tearDownAfterClass() throws Exception { ((BasicVitamServer) vitamServer).stop(); junitHelper.releasePort(serverPort); } @Test public final void testGetStatus() { get(STATUS_URI).then().statusCode(Status.NO_CONTENT.getStatusCode()); } @Test public final void testContainers() { // TODO: review api endpoint // given().contentType(ContentType.JSON).body("").when().get("").then() // .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); // given().contentType(ContentType.JSON) // .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, // VitamHttpHeader.TENANT_ID.getName(), // TENANT_ID) // .body("").when().get().then() // .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); // given().contentType(ContentType.JSON) // .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, // VitamHttpHeader.TENANT_ID.getName(), // TENANT_ID_E) // .body("").when().get().then() // .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); // given().contentType(ContentType.JSON) // .body("").when().post().then() // .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().delete().then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().delete().then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NO_CONTENT.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .body("").when().delete().then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON).when().head().then().statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().head().then().statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().head().then().statusCode(Status.NOT_FOUND.getStatusCode()); } @Test public final void testObjects() { given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().get(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().get(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON).body("").accept(MediaType.APPLICATION_OCTET_STREAM).when() .get(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then().statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .body("").when().get(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON).body("").when().post(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then() .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.METHOD_OVERRIDE.getName(), HttpMethod.GET) .when().post(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.METHOD_OVERRIDE.getName(), HttpMethod.PUT) .body("").when().post(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then().statusCode(Status.BAD_REQUEST.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().post(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then().statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON).headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID).when() .post(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then().statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON).body("").when().delete(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then() .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.X_DIGEST.getName(), "digest", VitamHttpHeader.X_DIGEST_ALGORITHM.getName(), VitamConfiguration.getDefaultDigestType().getName()) .body("").when().delete(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then().statusCode(Status.NO_CONTENT.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E, VitamHttpHeader.X_DIGEST.getName(), "digest", VitamHttpHeader.X_DIGEST_ALGORITHM.getName(), VitamConfiguration.getDefaultDigestType().getName()) .body("").when().delete(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then().statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON).when().head(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then() .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().head(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then().statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().head(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then().statusCode(Status.NOT_FOUND.getStatusCode()); } @Test public final void testObjectCreated() { final ObjectDescription createObjectDescription = new ObjectDescription(); createObjectDescription.setWorkspaceObjectURI("dd"); createObjectDescription.setWorkspaceContainerGUID("dd"); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body(createObjectDescription).when().post(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then() .statusCode(Status.CREATED.getStatusCode()); } @Test public final void testReportCreation() { final ObjectDescription createObjectDescription = new ObjectDescription(); createObjectDescription.setWorkspaceObjectURI("dd"); createObjectDescription.setWorkspaceContainerGUID("dd"); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body(createObjectDescription).when().post(REPORTS_URI + REPORT_ID_URI, ID_O1).then() .statusCode(Status.CREATED.getStatusCode()); given().contentType(ContentType.JSON).body(createObjectDescription).when().post(REPORTS_URI + REPORT_ID_URI, ID_O1).then() .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_Ardyexist) .body(createObjectDescription).when().post(REPORTS_URI + REPORT_ID_URI, ID_O1).then() .statusCode(Status.METHOD_NOT_ALLOWED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().post(REPORTS_URI + REPORT_ID_URI, ID_O1).then().statusCode(Status.PRECONDITION_FAILED.getStatusCode()); } @Test public final void testManifestCreation() { final ObjectDescription createObjectDescription = new ObjectDescription(); createObjectDescription.setWorkspaceObjectURI("mm"); createObjectDescription.setWorkspaceContainerGUID("mm"); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body(createObjectDescription).when().post(MANIFESTS_URI + MANIFEST_ID_URI, ID_O1).then() .statusCode(Status.CREATED.getStatusCode()); given().contentType(ContentType.JSON).body(createObjectDescription).when().post(MANIFESTS_URI + MANIFEST_ID_URI, ID_O1) .then().statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_Ardyexist) .body(createObjectDescription).when().post(MANIFESTS_URI + MANIFEST_ID_URI, ID_O1).then() .statusCode(Status.METHOD_NOT_ALLOWED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().post(MANIFESTS_URI + MANIFEST_ID_URI, ID_O1).then() .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); } @Test public final void testObjectNotFound() { final ObjectDescription createObjectDescription = new ObjectDescription(); createObjectDescription.setWorkspaceObjectURI("dd"); createObjectDescription.setWorkspaceContainerGUID("dd"); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .body(createObjectDescription).when().post(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then() .statusCode(Status.NOT_FOUND.getStatusCode()); } @Test public final void testObjectTechnicalError() { final ObjectDescription createObjectDescription = new ObjectDescription(); createObjectDescription.setWorkspaceObjectURI("dd"); createObjectDescription.setWorkspaceContainerGUID("dd"); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_A_E) .body(createObjectDescription).when().post(OBJECTS_URI + OBJECT_ID_URI, ID_O1).then() .statusCode(Status.INTERNAL_SERVER_ERROR.getStatusCode()); } @Test public final void testLogbooks() { given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().get(LOGBOOKS_URI).then() // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().get(LOGBOOKS_URI).then() // .statusCode(Status.OK.getStatusCode()); .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .body("").when().get(LOGBOOKS_URI).then() // .statusCode(Status.NOT_FOUND.getStatusCode()); .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().get(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().get(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() // .statusCode(Status.OK.getStatusCode()); .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().get(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().post(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().post(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.METHOD_OVERRIDE.getName(), HttpMethod.GET) .body("").when().post(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.METHOD_OVERRIDE.getName(), HttpMethod.PUT) .body("").when().post(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_A_E) .body("").when().post(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .body("").when().post(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().delete(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().delete(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NO_CONTENT.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .body("").when().delete(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON) .when().headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1") .then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().head(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().head(LOGBOOKS_URI + LOGBOOK_ID_URI, "idl1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); } @Test public void getObjectIllegalArgumentException() throws Exception { given().accept(MediaType.APPLICATION_OCTET_STREAM).when().get(OBJECTS_URI + OBJECT_ID_URI, "id0").then() .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().accept(MediaType.APPLICATION_OCTET_STREAM).header(VitamHttpHeader.TENANT_ID.getName(), TENANT_ID).when() .get(OBJECTS_URI + OBJECT_ID_URI, "id0").then().statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().accept(MediaType.APPLICATION_OCTET_STREAM).header(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID).when() .get(OBJECTS_URI + OBJECT_ID_URI, "id0").then().statusCode(Status.PRECONDITION_FAILED.getStatusCode()); } @Test public void getObjectNotFoundException() throws Exception { given().accept(MediaType.APPLICATION_OCTET_STREAM) .headers(VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E, VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID) .when().get(OBJECTS_URI + OBJECT_ID_URI, "id0").then().statusCode(Status.NOT_FOUND.getStatusCode()); } @Test public void getObjectTechnicalException() throws Exception { given().accept(MediaType.APPLICATION_OCTET_STREAM) .headers(VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_A_E, VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID) .when().get(OBJECTS_URI + OBJECT_ID_URI, "id0").then().statusCode(Status.INTERNAL_SERVER_ERROR.getStatusCode()); } @Test public void getObjectOk() throws Exception { given().accept(MediaType.APPLICATION_OCTET_STREAM) .headers(VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID) .when().get(OBJECTS_URI + OBJECT_ID_URI, "id0").then().statusCode(Status.OK.getStatusCode()); } @Test public void getReportOk() throws Exception { given().accept(MediaType.APPLICATION_OCTET_STREAM) .headers(VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID) .when().get(REPORTS_URI + REPORT_ID_URI, "id0").then().statusCode(Status.OK.getStatusCode()); given().accept(MediaType.APPLICATION_OCTET_STREAM).when().get(REPORTS_URI + REPORT_ID_URI, "id0").then() .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().accept(MediaType.APPLICATION_OCTET_STREAM) .headers(VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E, VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID) .when().get(REPORTS_URI + REPORT_ID_URI, "id0").then().statusCode(Status.NOT_FOUND.getStatusCode()); given().accept(MediaType.APPLICATION_OCTET_STREAM) .headers(VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_A_E, VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID) .when().get(REPORTS_URI + REPORT_ID_URI, "id0").then().statusCode(Status.INTERNAL_SERVER_ERROR.getStatusCode()); } @Test public void getManifestOk() throws Exception { given().accept(MediaType.APPLICATION_OCTET_STREAM) .headers(VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID) .when().get(MANIFESTS_URI + MANIFEST_ID_URI, "id0").then().statusCode(Status.OK.getStatusCode()); given().accept(MediaType.APPLICATION_OCTET_STREAM).when().get(MANIFESTS_URI + MANIFEST_ID_URI, "id0").then() .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().accept(MediaType.APPLICATION_OCTET_STREAM) .headers(VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E, VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID) .when().get(MANIFESTS_URI + MANIFEST_ID_URI, "id0").then().statusCode(Status.NOT_FOUND.getStatusCode()); given().accept(MediaType.APPLICATION_OCTET_STREAM) .headers(VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_A_E, VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID) .when().get(MANIFESTS_URI + MANIFEST_ID_URI, "id0").then() .statusCode(Status.INTERNAL_SERVER_ERROR.getStatusCode()); } @Test public final void testUnits() { given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().get(UNITS_URI).then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().get(UNITS_URI).then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().get(UNITS_URI).then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().get(UNITS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().get(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().get(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().post(UNITS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().post(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.METHOD_OVERRIDE.getName(), HttpMethod.GET) .when().post(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.METHOD_OVERRIDE.getName(), HttpMethod.PUT) .when().post(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().post(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_A_E) .when().post(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.CONFLICT.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().put(UNITS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().put(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().put(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_A_E) .when().put(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.CONFLICT.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().delete(UNITS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().delete(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NO_CONTENT.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().delete(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON) .when().headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, UNITS_URI + METADATA_ID_URI, "idmd1") .then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().head(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().head(UNITS_URI + METADATA_ID_URI, "idmd1").then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); } @Test public final void testObjectGroups() { given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().get(OBJECT_GROUPS_URI).then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().get(OBJECT_GROUPS_URI).then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().get(OBJECT_GROUPS_URI).then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().get(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().get(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().get(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().post(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().post(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.METHOD_OVERRIDE.getName(), HttpMethod.GET) .when().post(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, VitamHttpHeader.METHOD_OVERRIDE.getName(), HttpMethod.PUT) .when().post(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().post(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_A_E) .when().post(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.CREATED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().put(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().put(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().put(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_A_E) .when().put(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.CONFLICT.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .body("").when().delete(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().delete(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NO_CONTENT.getStatusCode()); given().contentType(ContentType.JSON).body("") .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().delete(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); given().contentType(ContentType.JSON) .when().headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID, OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1") .then().statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.PRECONDITION_FAILED.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().head(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.OK.getStatusCode()); given().contentType(ContentType.JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().head(OBJECT_GROUPS_URI + METADATA_ID_URI, "idmd1").then() .statusCode(Status.NOT_IMPLEMENTED.getStatusCode()); // .statusCode(Status.NOT_FOUND.getStatusCode()); } @Test public void getContainerInformationOk() { given().accept(MediaType.APPLICATION_JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID) .when().head().then().statusCode(Status.OK.getStatusCode()); } @Test public void getContainerInformationWrongHeaders() { given().accept(MediaType.APPLICATION_JSON).headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID).when().head() .then().statusCode(Status.PRECONDITION_FAILED.getStatusCode()); } @Test public void getContainerInformationStorageNotFoundException() { given().accept(MediaType.APPLICATION_JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_E) .when().head().then().statusCode(Status.NOT_FOUND.getStatusCode()); } @Test public void getContainerInformationStorageTechnicalException() { given().accept(MediaType.APPLICATION_JSON) .headers(VitamHttpHeader.STRATEGY_ID.getName(), STRATEGY_ID, VitamHttpHeader.TENANT_ID.getName(), TENANT_ID_A_E) .when().head().then().statusCode(Status.INTERNAL_SERVER_ERROR.getStatusCode()); } @Ignore @Test public void listObjectsTest() { // TODO: make it work given().accept(MediaType.APPLICATION_JSON).when().get("{type}", DataCategory.OBJECT.getFolder()).then() .statusCode(Status.OK.getStatusCode()); } private static VitamServer buildTestServer() throws VitamApplicationServerException { final VitamServer vitamServer = VitamServerFactory.newVitamServer(serverPort); final ResourceConfig resourceConfig = new ResourceConfig(); final StorageResourceTest outer = new StorageResourceTest(); resourceConfig.register(JacksonFeature.class); final StorageDistributionInnerClass storage = outer.new StorageDistributionInnerClass(); resourceConfig.register(new StorageResource(storage)); resourceConfig.register(TenantIdContainerFilter.class); final ServletContainer servletContainer = new ServletContainer(resourceConfig); final ServletHolder sh = new ServletHolder(servletContainer); final ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.NO_SESSIONS); contextHandler.setContextPath("/"); contextHandler.addServlet(sh, "/*"); final HandlerList handlers = new HandlerList(); handlers.setHandlers(new Handler[] { contextHandler }); vitamServer.configure(contextHandler); return vitamServer; } private class StorageDistributionInnerClass implements StorageDistribution { @Override public StoredInfoResult storeData(String strategyId, String objectId, ObjectDescription createObjectDescription, DataCategory category, String requester) throws StorageTechnicalException, StorageNotFoundException, StorageObjectAlreadyExistsException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } else if (TENANT_ID_A_E.equals(tenantId)) { throw new StorageTechnicalException("Technical error"); } else if (TENANT_ID_Ardyexist.equals(tenantId)) { throw new StorageObjectAlreadyExistsException("Already Exists Exception"); } return null; } @Override public JsonNode getContainerInformation(String strategyId) throws StorageNotFoundException, StorageTechnicalException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } else if (TENANT_ID_A_E.equals(tenantId)) { throw new StorageTechnicalException("Technical error"); } return null; } @Override public InputStream getStorageContainer(String strategyId) throws StorageNotFoundException { return null; } @Override public JsonNode createContainer(String strategyId) throws StorageAlreadyExistsException { return null; } @Override public void deleteContainer(String strategyId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } } @Override public Response listContainerObjects(String strategyId, DataCategory category, String cursorId) throws StorageException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } return null; } @Override public Response getContainerByCategory(String strategyId, String objectId, DataCategory category, AsyncResponse asyncResponse) throws StorageNotFoundException, StorageTechnicalException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Object not found"); } if (TENANT_ID_A_E.equals(tenantId)) { throw new StorageTechnicalException("Technical exception"); } final Response response = new AbstractMockClient.FakeInboundResponse(Status.OK, new ByteArrayInputStream("test".getBytes()), MediaType.APPLICATION_OCTET_STREAM_TYPE, null); final AsyncInputStreamHelper helper = new AsyncInputStreamHelper(asyncResponse, response); final ResponseBuilder responseBuilder = Response.status(Status.OK).type(MediaType.APPLICATION_OCTET_STREAM); helper.writeResponse(responseBuilder); return response; } @Override public JsonNode getContainerObjectInformations(String strategyId, String objectId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } return null; } @Override public void deleteObject(String strategyId, String objectId, String digest, DigestType digestAlgorithm) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } } @Override public JsonNode getContainerLogbooks(String strategyId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } return null; } @Override public JsonNode getContainerLogbook(String strategyId, String logbookId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } return null; } @Override public void deleteLogbook(String strategyId, String logbookId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } } @Override public JsonNode getContainerUnits(String strategyId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } return null; } @Override public JsonNode getContainerUnit(String strategyId, String unitId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } return null; } @Override public void deleteUnit(String strategyId, String unitId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } } @Override public JsonNode getContainerObjectGroups(String strategyId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } return null; } @Override public JsonNode getContainerObjectGroup(String strategyId, String objectGroupId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } return null; } @Override public void deleteObjectGroup(String strategyId, String objectGroupId) throws StorageNotFoundException { Integer tenantId = ParameterHelper.getTenantParameter(); if (TENANT_ID_E.equals(tenantId)) { throw new StorageNotFoundException("Not Found"); } } @Override public JsonNode status() throws StorageException { return null; } @Override public void close() { // Nothing } } }