diff --git a/src/main/java/org/openepics/names/rest/api/v1/IStructures.java b/src/main/java/org/openepics/names/rest/api/v1/IStructures.java index a7168af2beb45b9d1e03fee58af37079bc241fab..afff578007f17f4602ab1296484d3dfccc81008e 100644 --- a/src/main/java/org/openepics/names/rest/api/v1/IStructures.java +++ b/src/main/java/org/openepics/names/rest/api/v1/IStructures.java @@ -97,6 +97,7 @@ public interface IStructures { ---------------------------------------------------------------------------------------------------- read GET /structures/{type} - readStructures read GET /structures/{type}/download - readStructuresDownload download Excel file + read GET /structures/{type}/{uuid} - readStructure read GET /structures/children/{uuid} - readStructuresChildren read GET /structures/mnemonic/{mnemonic} - readStructuresMnemonic read GET /structures/mnemonicPath/{mnemonicPath} - readStructuresMnemonicPath @@ -442,6 +443,62 @@ public interface IStructures { @Parameter(in = ParameterIn.QUERY, description = "page starting from 0, offset") @RequestParam(required = false, defaultValue = DEFAULT_PAGE) Integer page, @Parameter(in = ParameterIn.QUERY, description = "page size, limit") @RequestParam(required = false, defaultValue = DEFAULT_PAGE_SIZE) Integer pageSize); + /** + * Find valid structure by type and uuid (exact match). + * Return paged list of structure elements. + * Maximum number of elements will be two (PENDING, APPROVED) for given uuid. + * + * @param type type of structure + * @param uuid uuid + * @return structure element + */ + @Operation( + summary = "Find valid structure by type and uuid (exact match)", + description = """ + Find valid structure by type and uuid (exact match). + Return paged list of structure elements. + Maximum number of elements will be two (PENDING, APPROVED) for given uuid. + """ + ) + @ApiResponses(value = { + @ApiResponse( + responseCode = "200", + description = "OK. Return paged list of structure elements.", + content = @Content( + mediaType = "application/json", + schema = @Schema(implementation = ResponsePageStructureElements.class))), + @ApiResponse( + responseCode = "400", + description = "Bad request. Reason and information such as message, details, field are available.", + content = @Content( + mediaType = "application/json", + schema = @Schema(implementation = Response.class))), + @ApiResponse( + responseCode = "404", + description = "Not found. Reason and information such as message, details, field are available.", + content = @Content( + mediaType = "application/json", + schema = @Schema(implementation = Response.class))), + @ApiResponse( + responseCode = "422", + description = "Unprocessable entity. Reason and information such as message, details, field are available.", + content = @Content( + mediaType = "application/json", + schema = @Schema(implementation = Response.class))), + @ApiResponse( + responseCode = "500", + description = "Internal server error. Reason and information such as message, details, field are available.", + content = @Content( + mediaType = "application/json", + schema = @Schema(implementation = Response.class))) + }) + @GetMapping( + value = "/{type}/{uuid}", + produces = {"application/json"}) + public ResponseEntity<ResponsePageStructureElements> readStructure( + @Parameter(in = ParameterIn.PATH, description = "find by type of structure") @PathVariable("type") Type type, + @Parameter(in = ParameterIn.PATH, description = "find by uuid") @PathVariable("uuid") String uuid); + /** * Find valid children structures by parent uuid (exact match). * Return paged list of structure elements. diff --git a/src/main/java/org/openepics/names/rest/controller/StructuresController.java b/src/main/java/org/openepics/names/rest/controller/StructuresController.java index 4185183135f9bc49a27e335958e02aee64d9648e..0d671ec12662f576c1b13ed0df392bfa386c1f45 100644 --- a/src/main/java/org/openepics/names/rest/controller/StructuresController.java +++ b/src/main/java/org/openepics/names/rest/controller/StructuresController.java @@ -193,6 +193,39 @@ public class StructuresController implements IStructures { .body(isr); } + @Override + public ResponseEntity<ResponsePageStructureElements> readStructure(Type type, String uuid) { + // validate + // read structure + // maximum number of elements will be two (PENDING, APPROVED) for given uuid + + try { + ValidateUtil.validateInputType(type); + ValidateUtil.validateInputUuid(uuid); + ResponsePageStructureElements structureElements = structuresService.readStructures(type, null, null, + uuid, null, null, null, null, null, null, null, + null, null, null, null); + + HttpStatus status = null; + if (structureElements.getListSize() == 0) { + status = HttpStatus.NOT_FOUND; + } else if (structureElements.getListSize() > 2) { + status = HttpStatus.UNPROCESSABLE_ENTITY; + } else { + status = HttpStatus.OK; + } + + return new ResponseEntity<>(structureElements, Response.getHeaderJson(), status); + } catch (ServiceException e) { + logService.logServiceException(LOGGER, Level.WARNING, e); + logService.logStackTraceElements(LOGGER, Level.WARNING, e); + throw e; + } catch (Exception e) { + logService.logStackTraceElements(LOGGER, Level.WARNING, e); + throw e; + } + } + @Override public ResponsePageStructureElements readStructuresChildren(String uuid, Type type, Status[] statuses, Boolean deleted, String name, String mnemonic, String mnemonicEquivalence, String mnemonicPath, String description, String who, diff --git a/src/test/java/org/openepics/names/docker/ITUtilStructures.java b/src/test/java/org/openepics/names/docker/ITUtilStructures.java index a41fed3177a07681703fa4cf7bdc238ab0c29e6e..3b1fa5e0cdf7a6f5de8ffc1da3cda92fa55a0dd3 100644 --- a/src/test/java/org/openepics/names/docker/ITUtilStructures.java +++ b/src/test/java/org/openepics/names/docker/ITUtilStructures.java @@ -243,6 +243,58 @@ public class ITUtilStructures { // ---------------------------------------------------------------------------------------------------- + /** + * Utility method to find structure elements. + * + * @param queryString query string + * @return esponse page structure elements + */ + public static ResponsePageStructureElements assertFind(String queryString) { + return assertFind(queryString, HttpURLConnection.HTTP_OK); + } + /** + * Utility method to find structure elements. + * + * @param queryString query string + * @param responseCode expected response code + * @return response page structure elements + */ + public static ResponsePageStructureElements assertFind(String queryString, int responseCode) { + // maximum number of elements will be two (PENDING, APPROVED) for given uuid + try { + String[] response = null; + ResponsePageStructureElements responsePageStructureElements = null; + + response = ITUtil.doGetJson(ITUtil.HTTP_IP_PORT_NAMING_API_V1_STRUCTURES + queryString); + ITUtil.assertResponseLength2Code(response, responseCode); + responsePageStructureElements = mapper.readValue(response[1], ResponsePageStructureElements.class); + + // response code and value + if (HttpURLConnection.HTTP_OK == responseCode) { + assertNotNull(responsePageStructureElements); + int listSize = responsePageStructureElements.getListSize(); + assertTrue(listSize >= 1); + assertTrue(listSize <= 2); + } else if (HttpURLConnection.HTTP_NOT_FOUND == responseCode){ + assertNotNull(responsePageStructureElements); + int listSize = responsePageStructureElements.getListSize(); + assertEquals(0, listSize); + } else { + assertNotNull(responsePageStructureElements); + } + + // expected value for latest for items in list + assertLatest(responsePageStructureElements); + + return responsePageStructureElements; + } catch (IOException e) { + fail(); + } catch (Exception e) { + fail(); + } + return null; + } + /** * Utility method to read structure elements. * diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java index 26f34c1516d0a8398b2c5fd9ab6586ec55d6ffcd..44490ada4a8faeeffaa0374340da6bca72ab63b1 100644 --- a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java @@ -1108,6 +1108,8 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/DEVICEGROUP?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICEGROUP/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rsha", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rsha", 0); @@ -1136,6 +1138,8 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/DEVICEGROUP?uuid=" + approvedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICEGROUP/" + approvedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rsha", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rsha", 0); @@ -1192,6 +1196,8 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/DEVICEGROUP?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICEGROUP/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rshc", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rshc", 0); @@ -1220,6 +1226,8 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/DEVICEGROUP?uuid=" + cancelledStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICEGROUP/" + cancelledStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rshc", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rshc", 0); @@ -1276,6 +1284,8 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshr", 0); ITUtilStructures.assertRead("/DEVICEGROUP?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICEGROUP/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rshr", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rshr", 0); @@ -1304,6 +1314,8 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshr", 0); ITUtilStructures.assertRead("/DEVICEGROUP?uuid=" + rejectedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICEGROUP/" + rejectedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rshr", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rshr", 0); @@ -1400,6 +1412,11 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertRead("/DEVICEGROUP?uuid=" + uuid3.toString(), 1); ITUtilStructures.assertRead("/DEVICEGROUP?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid.toString()); + ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid2.toString()); + ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid3.toString()); + ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P1", 0); ITUtilStructures.assertRead("/mnemonic/C1", 0); ITUtilStructures.assertRead("/mnemonic/R1", 0); @@ -1573,6 +1590,11 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertRead("/DEVICEGROUP?uuid=" + uuid3.toString(), 2); ITUtilStructures.assertRead("/DEVICEGROUP?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid.toString()); + ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid2.toString()); + ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid3.toString()); + ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P9", 0); ITUtilStructures.assertRead("/mnemonic/C9", 0); ITUtilStructures.assertRead("/mnemonic/R9", 0); @@ -1988,6 +2010,12 @@ class StructuresDeviceGroupIT { response2 = ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=2&pageSize=12&orderBy=WHEN&isAsc=true", 6); assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // type and uuid + // /{type}/{uuid} + ITUtilStructures.assertFind("/DEVICEGROUP/" + discipline2Uuid.toString(), HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid.toString()); + ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid2.toString()); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java index 00fef5e9d1feaf4ff3d886fa4e1adbdb829fa278..9a38ff0fceb94543f1d60d63e33a20971ea4272c 100644 --- a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java @@ -1104,6 +1104,8 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/DEVICETYPE?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICETYPE/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rsha", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rsha", 0); @@ -1133,6 +1135,8 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/DEVICETYPE?uuid=" + approvedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICETYPE/" + approvedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rsha", 1); ITUtilStructures.assertRead("/mnemonic/Di-Rsha", 0); @@ -1190,6 +1194,8 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/DEVICETYPE?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICETYPE/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rshc", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rshc", 0); @@ -1219,6 +1225,8 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/DEVICETYPE?uuid=" + cancelledStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICETYPE/" + cancelledStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rshc", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rshc", 0); @@ -1276,6 +1284,8 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshr", 0); ITUtilStructures.assertRead("/DEVICETYPE?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICETYPE/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rshr", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rshr", 0); @@ -1305,6 +1315,8 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshr", 1); ITUtilStructures.assertRead("/DEVICETYPE?uuid=" + rejectedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DEVICETYPE/" + rejectedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Di", 1); ITUtilStructures.assertRead("/mnemonic/Rshr", 0); ITUtilStructures.assertRead("/mnemonic/Di-Rshr", 0); @@ -1402,6 +1414,11 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertRead("/DEVICETYPE?uuid=" + uuid3.toString(), 1); ITUtilStructures.assertRead("/DEVICETYPE?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/DEVICETYPE/" + uuid.toString()); + ITUtilStructures.assertFind("/DEVICETYPE/" + uuid2.toString()); + ITUtilStructures.assertFind("/DEVICETYPE/" + uuid3.toString()); + ITUtilStructures.assertFind("/DEVICETYPE/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P1", 0); ITUtilStructures.assertRead("/mnemonic/C1", 0); ITUtilStructures.assertRead("/mnemonic/R1", 0); @@ -1578,6 +1595,11 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertRead("/DEVICETYPE?uuid=" + uuid3.toString(), 2); ITUtilStructures.assertRead("/DEVICETYPE?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/DEVICETYPE/" + uuid.toString()); + ITUtilStructures.assertFind("/DEVICETYPE/" + uuid2.toString()); + ITUtilStructures.assertFind("/DEVICETYPE/" + uuid3.toString()); + ITUtilStructures.assertFind("/DEVICETYPE/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P9", 1); ITUtilStructures.assertRead("/mnemonic/C9", 1); ITUtilStructures.assertRead("/mnemonic/R9", 1); @@ -1998,6 +2020,13 @@ class StructuresDeviceTypeIT { response2 = ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=true", 5); assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // type and uuid + // /{type}/{uuid} + ITUtilStructures.assertFind("/DEVICETYPE/" + disciplineUuid.toString(), HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertFind("/DEVICETYPE/" + deviceGroupUuid.toString(), HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertFind("/DEVICETYPE/" + uuid.toString()); + ITUtilStructures.assertFind("/DEVICETYPE/" + uuid2.toString()); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description diff --git a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java index 3df1c35cc636520671496bd7cf32b50f79ecafe6..2ea05cde73090dceb731913349f8e20e3b6de423 100644 --- a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java @@ -1039,6 +1039,8 @@ class StructuresDisciplineIT { ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DISCIPLINE/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rsha", 0); ITUtilStructures.assertRead("/mnemonicPath/Rsha", 0); @@ -1063,6 +1065,8 @@ class StructuresDisciplineIT { ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + approvedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DISCIPLINE/" + approvedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rsha", 1); ITUtilStructures.assertRead("/mnemonicPath/Rsha", 1); @@ -1115,6 +1119,8 @@ class StructuresDisciplineIT { ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DISCIPLINE/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rshc", 0); ITUtilStructures.assertRead("/mnemonicPath/Rshc", 0); @@ -1139,6 +1145,8 @@ class StructuresDisciplineIT { ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + cancelledStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DISCIPLINE/" + cancelledStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rshc", 0); ITUtilStructures.assertRead("/mnemonicPath/Rshc", 0); @@ -1191,6 +1199,8 @@ class StructuresDisciplineIT { ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshr", 0); ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DISCIPLINE/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rshr", 0); ITUtilStructures.assertRead("/mnemonicPath/Rshr", 0); @@ -1215,6 +1225,8 @@ class StructuresDisciplineIT { ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshr", 1); ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + rejectedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/DISCIPLINE/" + rejectedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rshr", 0); ITUtilStructures.assertRead("/mnemonicPath/Rshr", 0); @@ -1307,6 +1319,11 @@ class StructuresDisciplineIT { ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + uuid3.toString(), 1); ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/DISCIPLINE/" + uuid.toString()); + ITUtilStructures.assertFind("/DISCIPLINE/" + uuid2.toString()); + ITUtilStructures.assertFind("/DISCIPLINE/" + uuid3.toString()); + ITUtilStructures.assertFind("/DISCIPLINE/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P1", 0); ITUtilStructures.assertRead("/mnemonic/C1", 0); ITUtilStructures.assertRead("/mnemonic/R1", 0); @@ -1479,6 +1496,11 @@ class StructuresDisciplineIT { ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + uuid3.toString(), 2); ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/DISCIPLINE/" + uuid.toString()); + ITUtilStructures.assertFind("/DISCIPLINE/" + uuid2.toString()); + ITUtilStructures.assertFind("/DISCIPLINE/" + uuid3.toString()); + ITUtilStructures.assertFind("/DISCIPLINE/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P9", 1); ITUtilStructures.assertRead("/mnemonic/C9", 1); ITUtilStructures.assertRead("/mnemonic/R9", 1); @@ -1836,9 +1858,9 @@ class StructuresDisciplineIT { ITUtilStructures.assertRead("/DISCIPLINE?deleted=true&statuses=REJECTED&mnemonic=A__", 5); ITUtilStructures.assertRead("/DISCIPLINE?deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 10); + ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + uuidRandom.toString(), 0); ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + uuid.toString(), 1); ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + uuid2.toString(), 2); - ITUtilStructures.assertRead("/DISCIPLINE?uuid=" + uuidRandom.toString(), 0); ITUtilStructures.assertRead("/DISCIPLINE?parent=" + uuid.toString(), 0); @@ -1893,6 +1915,12 @@ class StructuresDisciplineIT { response2 = ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=true", 5); assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // type and uuid + // /{type}/{uuid} + ITUtilStructures.assertFind("/DISCIPLINE/" + uuidRandom.toString(), HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertFind("/DISCIPLINE/" + uuid.toString()); + ITUtilStructures.assertFind("/DISCIPLINE/" + uuid2.toString()); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description diff --git a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java index c0320ac2abc86df0ee5d902d29133c547ef8caed..cdb1d31ed23f75db048e5979b27fed9c07755e6b 100644 --- a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java @@ -1102,6 +1102,8 @@ class StructuresSubsystemIT { ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/SUBSYSTEM?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SUBSYSTEM/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Sys", 1); ITUtilStructures.assertRead("/mnemonic/Rsha", 0); @@ -1138,6 +1140,8 @@ class StructuresSubsystemIT { ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/SUBSYSTEM?uuid=" + approvedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SUBSYSTEM/" + approvedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Sys", 1); ITUtilStructures.assertRead("/mnemonic/Rsha", 1); @@ -1202,6 +1206,8 @@ class StructuresSubsystemIT { ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/SUBSYSTEM?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SUBSYSTEM/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Sys", 1); ITUtilStructures.assertRead("/mnemonic/Rshc", 0); @@ -1238,6 +1244,8 @@ class StructuresSubsystemIT { ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/SUBSYSTEM?uuid=" + cancelledStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SUBSYSTEM/" + cancelledStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Sys", 1); ITUtilStructures.assertRead("/mnemonic/Rshc", 0); @@ -1302,6 +1310,8 @@ class StructuresSubsystemIT { ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshr", 0); ITUtilStructures.assertRead("/SUBSYSTEM?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SUBSYSTEM/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Sys", 1); ITUtilStructures.assertRead("/mnemonic/Rshr", 0); @@ -1338,6 +1348,8 @@ class StructuresSubsystemIT { ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshr", 1); ITUtilStructures.assertRead("/SUBSYSTEM?uuid=" + rejectedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SUBSYSTEM/" + rejectedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Sys", 1); ITUtilStructures.assertRead("/mnemonic/Rshr", 0); @@ -1442,6 +1454,11 @@ class StructuresSubsystemIT { ITUtilStructures.assertRead("/SUBSYSTEM?uuid=" + uuid3.toString(), 1); ITUtilStructures.assertRead("/SUBSYSTEM?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid.toString()); + ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid2.toString()); + ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid3.toString()); + ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P1", 0); ITUtilStructures.assertRead("/mnemonic/C1", 0); ITUtilStructures.assertRead("/mnemonic/R1", 0); @@ -1622,6 +1639,11 @@ class StructuresSubsystemIT { ITUtilStructures.assertRead("/SUBSYSTEM?uuid=" + uuid3.toString(), 2); ITUtilStructures.assertRead("/SUBSYSTEM?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid.toString()); + ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid2.toString()); + ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid3.toString()); + ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P9", 1); ITUtilStructures.assertRead("/mnemonic/C9", 1); ITUtilStructures.assertRead("/mnemonic/R9", 1); @@ -2046,6 +2068,13 @@ class StructuresSubsystemIT { response2 = ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=true", 5); assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // type and uuid + // /{type}/{uuid} + ITUtilStructures.assertFind("/SUBSYSTEM/" + systemGroupUuid.toString(), HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertFind("/SUBSYSTEM/" + systemUuid.toString(), HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid.toString()); + ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid2.toString()); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java index fdd13004d2a58074bd5ffa73d2d4e7a015259433..e0a70f7adf5150f55aa0f4e7d24a6ef52ed01e8f 100644 --- a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java @@ -1101,6 +1101,8 @@ class StructuresSystemGroupIT { ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rsha", 0); ITUtilStructures.assertRead("/mnemonicPath/Rsha", 0); @@ -1125,6 +1127,8 @@ class StructuresSystemGroupIT { ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + approvedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + approvedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rsha", 1); ITUtilStructures.assertRead("/mnemonicPath/Rsha", 1); @@ -1177,6 +1181,8 @@ class StructuresSystemGroupIT { ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rshc", 0); ITUtilStructures.assertRead("/mnemonicPath/Rshc", 0); @@ -1201,6 +1207,8 @@ class StructuresSystemGroupIT { ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + cancelledStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + cancelledStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rshc", 0); ITUtilStructures.assertRead("/mnemonicPath/Rshc", 0); @@ -1253,6 +1261,8 @@ class StructuresSystemGroupIT { ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshr", 0); ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rshr", 0); ITUtilStructures.assertRead("/mnemonicPath/Rshr", 0); @@ -1277,6 +1287,8 @@ class StructuresSystemGroupIT { ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshr", 1); ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + rejectedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + rejectedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Rshr", 0); ITUtilStructures.assertRead("/mnemonicPath/Rshr", 0); @@ -1369,6 +1381,11 @@ class StructuresSystemGroupIT { ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + uuid3.toString(), 1); ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid.toString()); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid2.toString()); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid3.toString()); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P1", 0); ITUtilStructures.assertRead("/mnemonic/C1", 0); ITUtilStructures.assertRead("/mnemonic/R1", 0); @@ -1541,6 +1558,11 @@ class StructuresSystemGroupIT { ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + uuid3.toString(), 2); ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid.toString()); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid2.toString()); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid3.toString()); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P9", 1); ITUtilStructures.assertRead("/mnemonic/C9", 1); ITUtilStructures.assertRead("/mnemonic/R9", 1); @@ -1898,9 +1920,9 @@ class StructuresSystemGroupIT { ITUtilStructures.assertRead("/SYSTEMGROUP?deleted=true&statuses=REJECTED&mnemonic=A__", 5); ITUtilStructures.assertRead("/SYSTEMGROUP?deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 10); + ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + uuidRandom.toString(), 0); ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + uuid.toString(), 1); ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + uuid2.toString(), 2); - ITUtilStructures.assertRead("/SYSTEMGROUP?uuid=" + uuidRandom.toString(), 0); ITUtilStructures.assertRead("/SYSTEMGROUP?parent=" + uuid.toString(), 0); @@ -1955,6 +1977,12 @@ class StructuresSystemGroupIT { response2 = ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=true", 5); assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // type and uuid + // /{type}/{uuid} + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuidRandom.toString(), HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid.toString()); + ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid2.toString()); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java index b1c1adeed8189b8ac6c3dc7a8a46b285dd2d6551..d975918b03682f491a546472e713d4fded2d12a1 100644 --- a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java @@ -1085,6 +1085,8 @@ class StructuresSystemIT { ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/SYSTEM?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEM/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Rsha", 0); ITUtilStructures.assertRead("/mnemonic/Sg-Rsha", 0); @@ -1114,6 +1116,8 @@ class StructuresSystemIT { ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rsha", 0); ITUtilStructures.assertRead("/SYSTEM?uuid=" + approvedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEM/" + approvedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Rsha", 1); ITUtilStructures.assertRead("/mnemonic/Sg-Rsha", 0); @@ -1171,6 +1175,8 @@ class StructuresSystemIT { ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/SYSTEM?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEM/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Rshc", 0); ITUtilStructures.assertRead("/mnemonic/Sg-Rshc", 0); @@ -1200,6 +1206,8 @@ class StructuresSystemIT { ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshc", 0); ITUtilStructures.assertRead("/SYSTEM?uuid=" + cancelledStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEM/" + cancelledStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Rshc", 0); ITUtilStructures.assertRead("/mnemonic/Sg-Rshc", 0); @@ -1257,6 +1265,8 @@ class StructuresSystemIT { ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshr", 0); ITUtilStructures.assertRead("/SYSTEM?uuid=" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEM/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Rshr", 0); ITUtilStructures.assertRead("/mnemonic/Sg-Rshr", 0); @@ -1286,6 +1296,8 @@ class StructuresSystemIT { ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshr", 1); ITUtilStructures.assertRead("/SYSTEM?uuid=" + rejectedStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertFind("/SYSTEM/" + rejectedStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("/mnemonic/Sg", 1); ITUtilStructures.assertRead("/mnemonic/Rshr", 0); ITUtilStructures.assertRead("/mnemonic/Sg-Rshr", 0); @@ -1383,6 +1395,11 @@ class StructuresSystemIT { ITUtilStructures.assertRead("/SYSTEM?uuid=" + uuid3.toString(), 1); ITUtilStructures.assertRead("/SYSTEM?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/SYSTEM/" + uuid.toString()); + ITUtilStructures.assertFind("/SYSTEM/" + uuid2.toString()); + ITUtilStructures.assertFind("/SYSTEM/" + uuid3.toString()); + ITUtilStructures.assertFind("/SYSTEM/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P1", 0); ITUtilStructures.assertRead("/mnemonic/C1", 0); ITUtilStructures.assertRead("/mnemonic/R1", 0); @@ -1559,6 +1576,11 @@ class StructuresSystemIT { ITUtilStructures.assertRead("/SYSTEM?uuid=" + uuid3.toString(), 2); ITUtilStructures.assertRead("/SYSTEM?uuid=" + uuid4.toString(), 1); + ITUtilStructures.assertFind("/SYSTEM/" + uuid.toString()); + ITUtilStructures.assertFind("/SYSTEM/" + uuid2.toString()); + ITUtilStructures.assertFind("/SYSTEM/" + uuid3.toString()); + ITUtilStructures.assertFind("/SYSTEM/" + uuid4.toString()); + ITUtilStructures.assertRead("/mnemonic/P9", 1); ITUtilStructures.assertRead("/mnemonic/C9", 1); ITUtilStructures.assertRead("/mnemonic/R9", 1); @@ -1977,6 +1999,12 @@ class StructuresSystemIT { response2 = ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=2&pageSize=20&orderBy=WHEN&isAsc=true", 5); assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1)); + // type and uuid + // /{type}/{uuid} + ITUtilStructures.assertFind("/SYSTEM/" + systemGroupUuid.toString(), HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertFind("/SYSTEM/" + uuid.toString()); + ITUtilStructures.assertFind("/SYSTEM/" + uuid2.toString()); + // children // /children/{uuid} // uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description