diff --git a/docs/api/partition_openapi.yaml b/docs/api/partition_openapi.yaml index 604f10a04ace21353021903a2fc39db172019979..0c7b31274dcab50e769a84ae8c6e7fde068df199 100644 --- a/docs/api/partition_openapi.yaml +++ b/docs/api/partition_openapi.yaml @@ -118,10 +118,6 @@ paths: schema: $ref: '#/definitions/PartitionInfo' responses: - '200': - description: OK - schema: - $ref: '#/definitions/PartitionInfo' '201': description: Created '401': diff --git a/partition-core/src/main/java/org/opengroup/osdu/partition/api/PartitionApi.java b/partition-core/src/main/java/org/opengroup/osdu/partition/api/PartitionApi.java index fc2d35c103d30a89984dd14dab542b34e99ec3e3..540da827e965855a9eb3810ff9e9a671009dcbcd 100644 --- a/partition-core/src/main/java/org/opengroup/osdu/partition/api/PartitionApi.java +++ b/partition-core/src/main/java/org/opengroup/osdu/partition/api/PartitionApi.java @@ -23,8 +23,10 @@ import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.context.annotation.RequestScope; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; import javax.validation.Valid; +import java.net.URI; import java.util.Map; @RestController @@ -38,8 +40,10 @@ public class PartitionApi { @PostMapping("/{partitionId}") @PreAuthorize("@authorizationFilter.hasPermissions()") - public ResponseEntity<PartitionInfo> create(@PathVariable("partitionId") String partitionId, @RequestBody @Valid PartitionInfo partitionInfo) { - return ResponseEntity.ok(this.partitionService.createPartition(partitionId, partitionInfo)); + public ResponseEntity create(@PathVariable("partitionId") String partitionId, @RequestBody @Valid PartitionInfo partitionInfo) { + this.partitionService.createPartition(partitionId, partitionInfo); + URI partitionLocation = ServletUriComponentsBuilder.fromCurrentRequest().buildAndExpand().toUri(); + return ResponseEntity.created(partitionLocation).build(); } @GetMapping("/{partitionId}") diff --git a/partition-core/src/test/java/org/opengroup/osdu/partition/api/PartitionApiTest.java b/partition-core/src/test/java/org/opengroup/osdu/partition/api/PartitionApiTest.java index 3adcd3374c9e4c52ff2b23cc1a6ea16d884c7365..a9c44fc503d69b11b5816a087396c4fced3e57b6 100644 --- a/partition-core/src/test/java/org/opengroup/osdu/partition/api/PartitionApiTest.java +++ b/partition-core/src/test/java/org/opengroup/osdu/partition/api/PartitionApiTest.java @@ -23,18 +23,27 @@ import org.opengroup.osdu.core.common.model.http.AppException; import org.opengroup.osdu.partition.model.PartitionInfo; import org.opengroup.osdu.partition.model.Property; import org.opengroup.osdu.partition.provider.interfaces.IPartitionService; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; +import javax.servlet.http.HttpServletRequest; +import java.net.URI; import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; +import static org.powermock.api.mockito.PowerMockito.mockStatic; -@RunWith(MockitoJUnitRunner.class) +@RunWith(PowerMockRunner.class) +@PrepareForTest(ServletUriComponentsBuilder.class) public class PartitionApiTest { private final AppException NOT_FOUND_EXCEPTION = @@ -50,15 +59,22 @@ public class PartitionApiTest { @Mock private PartitionInfo partitionInfo; + + @Test public void should_return201AndPartitionId_when_givenValidPartitionId() { String partitionId = "partition1"; - when(partitionService.createPartition(anyString(), any(PartitionInfo.class))).thenReturn(partitionInfo); + mockStatic(ServletUriComponentsBuilder.class); - ResponseEntity<PartitionInfo> result = this.sut.create(partitionId, partitionInfo); - assertEquals(HttpStatus.OK, result.getStatusCode()); - assertEquals(partitionInfo, result.getBody()); + ServletUriComponentsBuilder builder = spy(ServletUriComponentsBuilder.class); + + when(ServletUriComponentsBuilder.fromCurrentRequest()).thenReturn(builder); + + ResponseEntity result = this.sut.create(partitionId, partitionInfo); + assertEquals(HttpStatus.CREATED, result.getStatusCode()); + assertNull(result.getBody()); + assertNotNull(result.getHeaders().get(HttpHeaders.LOCATION)); } @Test diff --git a/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/CreatePartitionTest.java b/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/CreatePartitionTest.java index 52dde6be621c5a9b8f2cb2402ef01ee0961d8fec..9aefd3f9754ad11d2a03e61b110f95351c4d4372 100644 --- a/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/CreatePartitionTest.java +++ b/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/CreatePartitionTest.java @@ -49,7 +49,7 @@ public abstract class CreatePartitionTest extends BaseTestTemplate { @Override protected int expectedOkResponseCode() { - return HttpStatus.OK.value(); + return HttpStatus.CREATED.value(); } @Test diff --git a/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/DeletePartitionTest.java b/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/DeletePartitionTest.java index b93800a24bbd27480a88945c98aaaec3f93b1632..b1c7682c0899ba796809afecd9f7a194e21eeb5a 100644 --- a/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/DeletePartitionTest.java +++ b/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/DeletePartitionTest.java @@ -64,7 +64,7 @@ public abstract class DeletePartitionTest extends BaseTestTemplate { ClientResponse createResponse = this.descriptor.run(this.getId(), this.testUtils.getAccessToken()); Assert.assertEquals(this.error((String) createResponse.getEntity(String.class)) - , HttpStatus.OK.value(), (long) createResponse.getStatus()); + , HttpStatus.CREATED.value(), (long) createResponse.getStatus()); this.descriptor = oldDescriptor; } diff --git a/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/GetPartitionByIdApitTest.java b/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/GetPartitionByIdApitTest.java index 4fabbf8a17ba310288050f7651920a59f9b28dc2..0040284f5ea0273cd7514995885ec578084f61f6 100644 --- a/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/GetPartitionByIdApitTest.java +++ b/testing/partition-test-core/src/main/java/org/opengroup/osdu/partition/api/GetPartitionByIdApitTest.java @@ -47,7 +47,7 @@ public abstract class GetPartitionByIdApitTest extends BaseTestTemplate { ClientResponse createResponse = createPartitionDescriptor.run(this.getId(), this.testUtils.getAccessToken()); assertEquals(this.error((String) createResponse.getEntity(String.class)) - , HttpStatus.OK.value(), (long) createResponse.getStatus()); + , HttpStatus.CREATED.value(), (long) createResponse.getStatus()); } public GetPartitionByIdApitTest() {