From 14d1bd4f23af21abc31f6791fbb5bf8a609ed6d9 Mon Sep 17 00:00:00 2001 From: Monobikash Das <43202165+MonobikashDas@users.noreply.github.com> Date: Tue, 31 Aug 2021 16:27:36 +0530 Subject: [PATCH 01/17] Created 1.2.0-rc2 (#23) Co-authored-by: Monobikash Das --- commons-packet/commons-packet-manager/pom.xml | 24 +++++++++---------- commons-packet/commons-packet-service/pom.xml | 20 ++++++++-------- commons-packet/pom.xml | 18 +++++++------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/commons-packet/commons-packet-manager/pom.xml b/commons-packet/commons-packet-manager/pom.xml index f7685333da..b8efb959d1 100644 --- a/commons-packet/commons-packet-manager/pom.xml +++ b/commons-packet/commons-packet-manager/pom.xml @@ -9,7 +9,7 @@ commons-packet-manager Mosip commons project https://github.com/mosip/commons - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT UTF-8 @@ -30,23 +30,23 @@ 2.0.0.RELEASE 1.4.197 2.9.8 - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT 2.9.2 2.0.7 4.13.1 1.3.1 - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT 2.0.2.RELEASE - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT **/constants/**,**/config/**,**/audit/**,**/util/**,**/dto/**,**/entity/**,**/model/**,**/exception/**,**/repository/**,**/security/**,**/*Config.java,**/*BootApplication.java,**/*VertxApplication.java,**/cbeffutil/**,**/*Utils.java,**/*Validator.java,**/*Helper.java,**/verticle/**,**/VidWriter.java/**,**/masterdata/utils/**,**/spi/**,**/core/http/**,"**/LocationServiceImpl.java","**/RegistrationCenterMachineServiceImpl.java","**/RegistrationCenterServiceImpl.java","**/pridgenerator/**","**/idgenerator/prid","**/proxy/**","**/cryptosignature/**" **/dto/**,**/entity/**,**/config/** diff --git a/commons-packet/commons-packet-service/pom.xml b/commons-packet/commons-packet-service/pom.xml index 40d100544f..4b4eb650f7 100644 --- a/commons-packet/commons-packet-service/pom.xml +++ b/commons-packet/commons-packet-service/pom.xml @@ -6,7 +6,7 @@ 4.0.0 io.mosip.commons commons-packet-service - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT commons-packet-service Mosip commons project https://github.com/mosip/commons @@ -30,21 +30,21 @@ 2.0.0.RELEASE 1.4.197 2.9.8 - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT 2.9.2 2.0.7 - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT 2.0.2.RELEASE - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT **/constant/**,**/config/**,**/httpfilter/**,**/cache/**,**/dto/**,**/entity/**,**/model/**,**/exception/**,**/repository/**,**/security/**,**/*Config.java,**/*BootApplication.java,**/*VertxApplication.java,**/cbeffutil/**,**/*Utils.java,**/*Validator.java,**/*Helper.java,**/verticle/**,**/VidWriter.java/**,**/masterdata/utils/**,**/spi/**,**/core/http/**,"**/LocationServiceImpl.java","**/RegistrationCenterMachineServiceImpl.java","**/RegistrationCenterServiceImpl.java","**/pridgenerator/**","**/idgenerator/prid","**/proxy/**","**/cryptosignature/**" **/dto/**,**/entity/**,**/config/** - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT diff --git a/commons-packet/pom.xml b/commons-packet/pom.xml index 48bf1f0398..e44d9267d7 100644 --- a/commons-packet/pom.xml +++ b/commons-packet/pom.xml @@ -7,7 +7,7 @@ io.mosip.commons commons-packet - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT common-packet Common packet manager for MOSIP https://github.com/mosip/packet-manager @@ -34,18 +34,18 @@ 2.0.0.RELEASE 1.4.197 2.9.8 - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT 2.9.2 2.0.7 - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT + 1.2.0-rc2-SNAPSHOT 2.0.2.RELEASE - 1.2.0-SNAPSHOT + 1.2.0-rc2-SNAPSHOT **/constant/**,**/config/**,**/httpfilter/**,**/cache/**,**/dto/**,**/entity/**,**/model/**,**/exception/**,**/repository/**,**/security/**,**/*Config.java,**/*BootApplication.java,**/*VertxApplication.java,**/cbeffutil/**,**/*Utils.java,**/*Validator.java,**/*Helper.java,**/verticle/**,**/VidWriter.java/**,**/masterdata/utils/**,**/spi/**,**/core/http/**,"**/LocationServiceImpl.java","**/RegistrationCenterMachineServiceImpl.java","**/RegistrationCenterServiceImpl.java","**/pridgenerator/**","**/idgenerator/prid","**/proxy/**","**/cryptosignature/**" **/dto/**,**/entity/**,**/config/** From 466dc349a2eb1650212e174cbaeb4b2d27c9a35b Mon Sep 17 00:00:00 2001 From: kameshsr <47484458+kameshsr@users.noreply.github.com> Date: Fri, 29 Oct 2021 17:11:56 +0530 Subject: [PATCH 02/17] MOSIP-15420: Upgraded swagger2.0 to openapi3.0 for packet manager service (#31) Resolved merge conflict --- commons-packet/commons-packet-service/pom.xml | 14 +++- .../config/OpenApiProperties.java | 47 +++++++++++++ .../config/PacketSwaggerConfig.java | 68 ++++++++++++------- .../controller/PacketReaderController.java | 63 +++++++++++++++++ .../controller/PacketWriterController.java | 33 +++++++++ .../src/main/resources/bootstrap.properties | 18 ++++- .../src/test/resources/bootstrap.properties | 13 +++- 7 files changed, 228 insertions(+), 28 deletions(-) create mode 100644 commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/OpenApiProperties.java diff --git a/commons-packet/commons-packet-service/pom.xml b/commons-packet/commons-packet-service/pom.xml index 4b4eb650f7..893526402e 100644 --- a/commons-packet/commons-packet-service/pom.xml +++ b/commons-packet/commons-packet-service/pom.xml @@ -45,7 +45,8 @@ **/constant/**,**/config/**,**/httpfilter/**,**/cache/**,**/dto/**,**/entity/**,**/model/**,**/exception/**,**/repository/**,**/security/**,**/*Config.java,**/*BootApplication.java,**/*VertxApplication.java,**/cbeffutil/**,**/*Utils.java,**/*Validator.java,**/*Helper.java,**/verticle/**,**/VidWriter.java/**,**/masterdata/utils/**,**/spi/**,**/core/http/**,"**/LocationServiceImpl.java","**/RegistrationCenterMachineServiceImpl.java","**/RegistrationCenterServiceImpl.java","**/pridgenerator/**","**/idgenerator/prid","**/proxy/**","**/cryptosignature/**" **/dto/**,**/entity/**,**/config/** 1.2.0-rc2-SNAPSHOT - + 1.5.10 + @@ -90,6 +91,17 @@ kernel-logger-logback ${kernel.logger.logback.version} + + org.springdoc + springdoc-openapi-ui + ${springdoc.version} + + + org.springframework + spring-webmvc + + + diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/OpenApiProperties.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/OpenApiProperties.java new file mode 100644 index 0000000000..d303fc7a98 --- /dev/null +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/OpenApiProperties.java @@ -0,0 +1,47 @@ +package io.mosip.commons.packetmanager.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import java.util.List; + +@Configuration +@ConfigurationProperties(prefix = "openapi") +@Data +public class OpenApiProperties { + private InfoProperty info; + private Service service; + private Group group; +} + +@Data +class InfoProperty { + private String title; + private String description; + private String version; + private LicenseProperty license; +} + +@Data +class LicenseProperty { + private String name; + private String url; +} + +@Data +class Service { + private List servers; +} + +@Data +class Server { + private String description; + private String url; +} + +@Data +class Group { + private String name; + private List paths; +} \ No newline at end of file diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/PacketSwaggerConfig.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/PacketSwaggerConfig.java index e172f8ecb4..3137bb2a43 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/PacketSwaggerConfig.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/PacketSwaggerConfig.java @@ -1,32 +1,50 @@ package io.mosip.commons.packetmanager.config; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springdoc.core.GroupedOpenApi; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -/** - * The Class RegistrationStatusConfig. - */ + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.servers.Server; + @Configuration -@EnableSwagger2 public class PacketSwaggerConfig { - /** - * Registration status bean. - * - * @return the docket - */ - @Bean - @Primary - public Docket swaggerBean() { - return new Docket(DocumentationType.SWAGGER_2).groupName("Packet manager").select() - .apis(RequestHandlerSelectors.basePackage("io.mosip.commons.packetmanager.controller")) - .paths(PathSelectors.ant("/*")).build(); - } - -} + private static final Logger logger = LoggerFactory.getLogger(PacketSwaggerConfig.class); + + @Autowired + private OpenApiProperties openApiProperties; + + @Bean + public OpenAPI openApi() { + OpenAPI api = new OpenAPI() + .components(new Components()) + .info(new Info() + .title(openApiProperties.getInfo().getTitle()) + .version(openApiProperties.getInfo().getVersion()) + .description(openApiProperties.getInfo().getDescription()) + .license(new License() + .name(openApiProperties.getInfo().getLicense().getName()) + .url(openApiProperties.getInfo().getLicense().getUrl()))); + + openApiProperties.getService().getServers().forEach(server -> { + api.addServersItem(new Server().description(server.getDescription()).url(server.getUrl())); + }); + logger.info("swagger open api bean is ready"); + return api; + } + + @Bean + public GroupedOpenApi groupedOpenApi() { + return GroupedOpenApi.builder().group(openApiProperties.getGroup().getName()) + .pathsToMatch(openApiProperties.getGroup().getPaths().stream().toArray(String[]::new)) + .build(); + } + +} \ No newline at end of file diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketReaderController.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketReaderController.java index 9738a9043e..9c99af70eb 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketReaderController.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketReaderController.java @@ -35,7 +35,16 @@ import io.mosip.kernel.core.http.ResponseWrapper; import io.mosip.kernel.core.util.DateUtils; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; + @RestController +@Tag(name = "packet-reader-controller", description = "Packet Reader Controller") public class PacketReaderController { @Autowired @@ -47,6 +56,12 @@ public class PacketReaderController { @PreAuthorize("hasAnyRole('DATA_READ')") @ResponseFilter @PostMapping(path = "/searchField", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "searchField", description = "searchField", tags = { "packet-reader-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper searchField(@RequestBody(required = true) RequestWrapper fieldDto) { SourceProcessDto sourceProcessDto = packetReaderService.getSourceAndProcess(fieldDto.getRequest().getId(), fieldDto.getRequest().getField(), fieldDto.getRequest().getSource(), fieldDto.getRequest().getProcess()); @@ -65,6 +80,12 @@ public ResponseWrapper searchField(@RequestBody(required = tru @PreAuthorize("hasAnyRole('DATA_READ')") @ResponseFilter @PostMapping(path = "/searchFields", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "searchFields", description = "searchFields", tags = { "packet-reader-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper searchFields(@RequestBody(required = true) RequestWrapper request) { FieldDtos fieldDtos = request.getRequest(); Map resultFields = new HashMap<>(); @@ -88,6 +109,12 @@ public ResponseWrapper searchFields(@RequestBody(required = tr @PreAuthorize("hasAnyRole('DOCUMENT_READ')") @ResponseFilter @PostMapping(path = "/document", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "getDocument", description = "getDocument", tags = { "packet-reader-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper getDocument(@RequestBody(required = true) RequestWrapper request) { DocumentDto documentDto = request.getRequest(); SourceProcessDto sourceProcessDto = packetReaderService.getSourceAndProcess(documentDto.getId(), @@ -103,6 +130,12 @@ public ResponseWrapper getDocument(@RequestBody(required = true) Reque @PreAuthorize("hasAnyRole('BIOMETRIC_READ')") @ResponseFilter @PostMapping(path = "/biometrics", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "getBiometrics", description = "getBiometrics", tags = { "packet-reader-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper getBiometrics(@RequestBody(required = true) RequestWrapper request) { BiometricRequestDto bioRequest = request.getRequest(); SourceProcessDto sourceProcessDto = packetReaderService.getSourceAndProcess(bioRequest.getId(), @@ -119,6 +152,12 @@ public ResponseWrapper getBiometrics(@RequestBody(required = tr @PreAuthorize("hasAnyRole('METADATA_READ')") @ResponseFilter @PostMapping(path = "/metaInfo", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "getMetaInfo", description = "getMetaInfo", tags = { "packet-reader-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper getMetaInfo(@RequestBody(required = true) RequestWrapper request) { InfoDto metaDto = request.getRequest(); SourceProcessDto sourceProcessDto = packetReaderService.getSourceAndProcess(metaDto.getId(), metaDto.getSource(), metaDto.getProcess()); @@ -133,6 +172,12 @@ public ResponseWrapper getMetaInfo(@RequestBody(required = tru @PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PostMapping(path = "/audits", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "getAudits", description = "getAudits", tags = { "packet-reader-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper> getAudits(@RequestBody(required = true) RequestWrapper request) { InfoDto metaDto = request.getRequest(); SourceProcessDto sourceProcessDto = packetReaderService.getSourceAndProcess(metaDto.getId(), metaDto.getSource(), metaDto.getProcess()); @@ -153,6 +198,12 @@ public ResponseWrapper> getAudits(@RequestBody(required = @PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PostMapping(path = "/validatePacket", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "validatePacket", description = "validatePacket", tags = { "packet-reader-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper validatePacket(@RequestBody(required = true) RequestWrapper request) { InfoDto metaDto = request.getRequest(); SourceProcessDto sourceProcessDto = packetReaderService.getSourceAndProcess(metaDto.getId(), metaDto.getSource(), metaDto.getProcess()); @@ -165,6 +216,12 @@ public ResponseWrapper validatePacket(@RequestBody(requi @PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PostMapping(path = "/getTags", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "getTags", description = "getTags", tags = { "packet-reader-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper getTags( @RequestBody(required = true) RequestWrapper request) { @@ -177,6 +234,12 @@ public ResponseWrapper getTags( @PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PostMapping(path = "/info", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "info", description = "info", tags = { "packet-reader-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper info(@RequestBody(required = true) RequestWrapper request) { String id = request.getRequest().getId(); InfoResponseDto resultFields = null; diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java index 175cf10681..20e1906e22 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java @@ -23,7 +23,16 @@ import io.mosip.kernel.core.http.ResponseWrapper; import io.mosip.kernel.core.util.DateUtils; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; + @RestController +@Tag(name = "packet-writer-controller", description = "Packet Writer Controller") public class PacketWriterController { @Autowired @@ -35,6 +44,12 @@ public class PacketWriterController { @PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PutMapping(path = "/createPacket", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "createPacket", description = "createPacket", tags = { "packet-writer-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper> createPacket(@RequestBody(required = true) RequestWrapper requestr) { List resultField = packetWriter.createPacket(requestr.getRequest()); @@ -54,6 +69,12 @@ private ResponseWrapper getResponseWrapper() { @PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PostMapping(path = "/addTag", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "setTags", description = "setTags", tags = { "packet-writer-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper setTags( @RequestBody(required = true) RequestWrapper tagRequest) { @@ -66,6 +87,12 @@ public ResponseWrapper setTags( @PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PostMapping(path = "/addOrUpdateTag", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "updateTags", description = "updateTags", tags = { "packet-writer-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper updateTags(@RequestBody(required = true) RequestWrapper tagRequest) { TagResponseDto tagResponse = packetWriterService.updateTags(tagRequest.getRequest()); @@ -76,6 +103,12 @@ public ResponseWrapper updateTags(@RequestBody(required = true) @PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PostMapping(path = "/deleteTag", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "deleteTags", description = "deleteTags", tags = { "packet-writer-controller" }) + @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "201", description = "Created", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(hidden = true))), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(hidden = true))) }) public ResponseWrapper deleteTags(@RequestBody(required = true) RequestWrapper tagRequest) { TagDeleteResponseDto tagResponse = packetWriterService.deleteTags(tagRequest.getRequest()); diff --git a/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties b/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties index 1acbd0bcec..8d7a186999 100644 --- a/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties +++ b/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties @@ -10,4 +10,20 @@ health.config.enabled=false server.servlet.path=/commons/v1/packetmanager config.server.file.storage.uri=${spring.cloud.config.uri}/*/${spring.profiles.active}/${spring.cloud.config.label}/ registration.processor.identityjson=registration-processor-identity.json -object.store.s3.use.account.as.bucketname=true \ No newline at end of file +object.store.s3.use.account.as.bucketname=true + +spring.mvc.servlet.path=${server.servlet.path} +openapi.info.title=Packet-Manager +openapi.info.description=Packet-Manager Service +openapi.info.version=1.0 +openapi.info.license.name=Mosip +openapi.info.license.url=https://docs.mosip.io/platform/license +mosipbox.public.url=http://localhost:${server.port} +openapi.service.servers[0].url=${mosipbox.public.url}${server.servlet.path} +openapi.service.servers[0].description=Packet-Manager Service +openapi.group.name=${openapi.info.title} +openapi.group.paths[0]=/** +springdoc.swagger-ui.disable-swagger-default-url=true +springdoc.swagger-ui.tagsSorter=alpha +springdoc.swagger-ui.operationsSorter=alpha + diff --git a/commons-packet/commons-packet-service/src/test/resources/bootstrap.properties b/commons-packet/commons-packet-service/src/test/resources/bootstrap.properties index 09d69595cd..9cb19dd634 100644 --- a/commons-packet/commons-packet-service/src/test/resources/bootstrap.properties +++ b/commons-packet/commons-packet-service/src/test/resources/bootstrap.properties @@ -103,4 +103,15 @@ objectstore.adapter.name=S3Adapter objectstore.crypto.name=OnlinePacketCryptoServiceImpl default.provider.version=v1.0 -mosip.kernel.pdf_owner_password=123 \ No newline at end of file +mosip.kernel.pdf_owner_password=123 + +openapi.info.title=Packet-Manager +openapi.info.description=Packet-Manager Service +openapi.info.version=1.0 +openapi.info.license.name=Mosip +openapi.info.license.url=https://docs.mosip.io/platform/license +mosipbox.public.url=http://localhost:${server.port} +openapi.service.servers[0].url=${mosipbox.public.url}${server.servlet.path} +openapi.service.servers[0].description=Packet-Manager Service +openapi.group.name=${openapi.info.title} +openapi.group.paths[0]=/** \ No newline at end of file From f59d453d08d275485a1b146b5b743d4f618faeba Mon Sep 17 00:00:00 2001 From: Monobikash Das <43202165+MonobikashDas@users.noreply.github.com> Date: Wed, 3 Nov 2021 19:35:45 +0530 Subject: [PATCH 03/17] Added logger and fixed test cases (#32) Co-authored-by: Monobikash Das --- .../impl/OnlinePacketCryptoServiceImpl.java | 26 +- .../impl/OnlinePacketCryptoServiceTest.java | 4 +- .../test/impl/PacketWriterImplTest.java | 2 + .../packet/test/keeper/PacketKeeperTest.java | 481 +++++++++--------- 4 files changed, 261 insertions(+), 252 deletions(-) diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java index 27c34dcf14..c38ad02a82 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java @@ -257,8 +257,7 @@ public byte[] decrypt(String refId, byte[] packet) { @Override public boolean verify(String refId, byte[] packet, byte[] signature) { try { - String machineId = refId.split("_")[1]; - String publicKey=getPublicKey(machineId); + String publicKey=getPublicKey(refId); TpmSignVerifyRequestDto dto = new TpmSignVerifyRequestDto(); dto.setData(CryptoUtil.encodeBase64(packet)); dto.setSignature(CryptoUtil.encodeBase64(signature)); @@ -274,11 +273,15 @@ public boolean verify(String refId, byte[] packet, byte[] signature) { ResponseEntity response = restTemplate.exchange(keymanagerCsverifysignUrl, HttpMethod.POST, httpEntity, String.class); LinkedHashMap responseMap = (LinkedHashMap) mapper.readValue(response.getBody(), LinkedHashMap.class).get("response");//.get("signature"); - if (responseMap != null && responseMap.size() > 0) - return responseMap.get("verified") != null && responseMap.get("verified").toString().equalsIgnoreCase("true"); - else { - LOGGER.error(PacketManagerLogger.SESSIONID, "SIGNATURE", new String(signature), - "Failed to verify signature"); + if (responseMap != null && responseMap.size() > 0) { + boolean result = responseMap.get("verified") != null && responseMap.get("verified").toString().equalsIgnoreCase("true"); + if (!result) + LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REFERENCEID, refId, + "Signature verification Failed."); + return result; + } else { + LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REFERENCEID, refId, + "Failed to verify signature. Received error response from keymanager verify API."); throw new SignatureException(); } } catch (IOException e) { @@ -292,15 +295,16 @@ public boolean verify(String refId, byte[] packet, byte[] signature) { } } - private String getPublicKey(String machineId) throws IOException { + private String getPublicKey(String refId) throws IOException { + String machineId = refId.split("_")[1]; ResponseEntity response = restTemplate.exchange(syncdataGetTpmKeyUrl+machineId, HttpMethod.GET, null, String.class); LinkedHashMap responseMap = (LinkedHashMap) mapper.readValue(response.getBody(), LinkedHashMap.class).get("response");//.get("signature"); if (responseMap != null && responseMap.size() > 0) - return (String) responseMap.get("signingPublicKey") ; + return (String) responseMap.get("signingPublicKey"); else { - LOGGER.error(PacketManagerLogger.SESSIONID, "PUBLIC_KEY", machineId, - "Failed to get public key"); + LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REFERENCEID, refId, + "Failed to get public key. Error Response : " + response.getBody()); throw new SignatureException(); } } diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java index cd9b5ea4cd..3ea6876cfc 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java @@ -63,9 +63,7 @@ public class OnlinePacketCryptoServiceTest { public void setup() { ReflectionTestUtils.setField(onlinePacketCryptoService, "DATETIME_PATTERN", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); ReflectionTestUtils.setField(onlinePacketCryptoService, "APPLICATION_VERSION", "v1"); - ReflectionTestUtils.setField(onlinePacketCryptoService, "centerIdLength", 5); ReflectionTestUtils.setField(onlinePacketCryptoService, "cryptomanagerDecryptUrl", "http://localhost"); - ReflectionTestUtils.setField(onlinePacketCryptoService, "machineIdLength", 5); ReflectionTestUtils.setField(onlinePacketCryptoService, "cryptomanagerEncryptUrl", "http://localhost"); ReflectionTestUtils.setField(onlinePacketCryptoService, "DATETIME_PATTERN", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); @@ -193,7 +191,7 @@ public void verifyTest() throws IOException { Mockito.when(mapper.readValue(anyString(), any(Class.class))).thenReturn(responseMap); - boolean result = onlinePacketCryptoService.verify("10077",packet, expected.getBytes()); + boolean result = onlinePacketCryptoService.verify("10077_10077",packet, expected.getBytes()); assertTrue(result); } } diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketWriterImplTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketWriterImplTest.java index a4a91afcaa..46e2054021 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketWriterImplTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketWriterImplTest.java @@ -66,6 +66,8 @@ public void setup() throws Exception { ReflectionTestUtils.setField(packetWriter, "defaultProviderVersion", "v1.0"); ReflectionTestUtils.setField(packetWriter, "defaultSubpacketName", "id"); ReflectionTestUtils.setField(packetWriter, "defaultSubpacketName", "id"); + ReflectionTestUtils.setField(packetWriter, "dateTimePattern", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + ReflectionTestUtils.setField(packetWriter, "zipDatetimePattern", "yyyyMMddHHmmss"); PacketInfo packetInfo = new PacketInfo(); packetInfo.setSource(source); diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/keeper/PacketKeeperTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/keeper/PacketKeeperTest.java index 31991fe635..072c00343f 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/keeper/PacketKeeperTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/keeper/PacketKeeperTest.java @@ -1,238 +1,243 @@ -package io.mosip.commons.packet.test.keeper; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.util.ReflectionTestUtils; - -import com.google.common.collect.Lists; - -import io.mosip.commons.khazana.dto.ObjectDto; -import io.mosip.commons.khazana.spi.ObjectStoreAdapter; -import io.mosip.commons.packet.constants.PacketManagerConstants; -import io.mosip.commons.packet.dto.Packet; -import io.mosip.commons.packet.dto.PacketInfo; -import io.mosip.commons.packet.dto.TagDto; -import io.mosip.commons.packet.dto.TagRequestDto; -import io.mosip.commons.packet.exception.PacketKeeperException; -import io.mosip.commons.packet.keeper.PacketKeeper; -import io.mosip.commons.packet.spi.IPacketCryptoService; -import io.mosip.kernel.core.exception.BaseUncheckedException; -import io.mosip.kernel.core.util.DateUtils; - -@RunWith(SpringRunner.class) -public class PacketKeeperTest { - - @InjectMocks - private PacketKeeper packetKeeper; - - @Mock - @Qualifier("SwiftAdapter") - private ObjectStoreAdapter swiftAdapter; - - @Mock - @Qualifier("S3Adapter") - private ObjectStoreAdapter s3Adapter; - - @Mock - @Qualifier("PosixAdapter") - private ObjectStoreAdapter posixAdapter; - - @Mock - @Qualifier("OnlinePacketCryptoServiceImpl") - private IPacketCryptoService onlineCrypto; - - /*@Mock - private OfflinePacketCryptoServiceImpl offlineCrypto;*/ - - private Packet packet; - private PacketInfo packetInfo; - - private static final String id = "1234567890"; - private static final String source = "source"; - private static final String process = "process"; - - @Before - public void setup() { - ReflectionTestUtils.setField(packetKeeper, "cryptoName", onlineCrypto.getClass().getSimpleName()); - ReflectionTestUtils.setField(packetKeeper, "adapterName", swiftAdapter.getClass().getSimpleName()); - ReflectionTestUtils.setField(packetKeeper, "PACKET_MANAGER_ACCOUNT", "PACKET_MANAGER_ACCOUNT"); - ReflectionTestUtils.setField(packetKeeper, "centerIdLength", 5); - ReflectionTestUtils.setField(packetKeeper, "machineIdLength", 5); - ReflectionTestUtils.setField(packetKeeper, "disablePacketSignatureVerification", false); - - packetInfo = new PacketInfo(); - packetInfo.setCreationDate(DateUtils.getCurrentDateTimeString()); - packetInfo.setEncryptedHash("yWxtW-jQihLntc3Bsgf6ayQwl0yGgD2IkWdedv2ZLCA"); - packetInfo.setId(id); - packetInfo.setProcess(process); - packetInfo.setSource(source); - packetInfo.setSignature("sign"); - packetInfo.setSchemaVersion("0.1"); - packetInfo.setProviderVersion("1.0"); - packet = new Packet(); - packet.setPacket("packet".getBytes()); - packet.setPacketInfo(packetInfo); - - Map metaMap = new HashMap<>(); - metaMap.put(PacketManagerConstants.ID, id); - metaMap.put(PacketManagerConstants.SOURCE, source); - metaMap.put(PacketManagerConstants.PROCESS, process); - metaMap.put(PacketManagerConstants.SIGNATURE, "signature"); - metaMap.put(PacketManagerConstants.ENCRYPTED_HASH, "yWxtW-jQihLntc3Bsgf6ayQwl0yGgD2IkWdedv2ZLCA"); - - Mockito.when(onlineCrypto.encrypt(any(), any())).thenReturn("encryptedpacket".getBytes()); - Mockito.when(onlineCrypto.sign(any())).thenReturn("signed data".getBytes()); - Mockito.when(swiftAdapter.putObject(any(), any(), any(),any(), any(), any())).thenReturn(true); - Mockito.when(swiftAdapter.addObjectMetaData(any(), any(), any(),any(), any(), any())).thenReturn(metaMap); - - InputStream is = new ByteArrayInputStream("input".getBytes()); - - Mockito.when(swiftAdapter.getObject(any(), any(),any(), any(), any())).thenReturn(is); - Mockito.when(onlineCrypto.decrypt(any(), any())).thenReturn("decryptedpacket".getBytes()); - Mockito.when(swiftAdapter.getMetaData(any(), any(),any(), any(), any())).thenReturn(metaMap); - Mockito.when(onlineCrypto.verify(any(),any(), any())).thenReturn(true); - Map tagsMap = new HashMap<>(); - tagsMap.put("osivalidation", "pass"); - Mockito.when(swiftAdapter.getTags(any(), any())).thenReturn(tagsMap); - - - } - - @Test - public void testPutPacketSuccess() throws PacketKeeperException { - PacketInfo packetInfo = packetKeeper.putPacket(packet); - - assertTrue(packetInfo.getId().equals(id)); - assertTrue(packetInfo.getSource().equals(source)); - assertTrue(packetInfo.getProcess().equals(process)); - } - - @Test(expected = PacketKeeperException.class) - public void testPutPacketException() throws PacketKeeperException { - Mockito.when(onlineCrypto.encrypt(any(), any())).thenThrow(new BaseUncheckedException("code","message")); - - packetKeeper.putPacket(packet); - } - - @Test(expected = PacketKeeperException.class) - public void testObjectStoreAdapterException() throws PacketKeeperException { - ReflectionTestUtils.setField(packetKeeper, "adapterName", "wrongAdapterName"); - - packetKeeper.putPacket(packet); - } - - @Test(expected = PacketKeeperException.class) - public void testCryptoException() throws PacketKeeperException { - ReflectionTestUtils.setField(packetKeeper, "cryptoName", "wrongname"); - - packetKeeper.putPacket(packet); - } - - @Test - public void testGetPacketSuccess() throws PacketKeeperException { - Packet result = packetKeeper.getPacket(packetInfo); - - assertTrue(result.getPacketInfo().getId().equals(id)); - assertTrue(result.getPacketInfo().getSource().equals(source)); - assertTrue(result.getPacketInfo().getProcess().equals(process)); - } - - @Test(expected = PacketKeeperException.class) - public void testGetPacketFailure() throws PacketKeeperException { - Mockito.when(swiftAdapter.getObject(any(), any(), any(), any(), any())).thenThrow(new BaseUncheckedException("code","message")); - - packetKeeper.getPacket(packetInfo); - } - - @Test(expected = PacketKeeperException.class) - @Ignore - public void testPacketIntegrityFailure() throws PacketKeeperException { - Mockito.when(onlineCrypto.verify(any(),any(), any())).thenReturn(false); - - packetKeeper.getPacket(packetInfo); - } - @Test - public void testAddTags() { - TagDto tagDto=new TagDto(); - tagDto.setId(id); - Map tags = new HashMap<>(); - tags.put("test", "testValue"); - tagDto.setTags(tags); - Mockito.when(swiftAdapter.addTags(any(), any(),any())).thenReturn(tags); - Map map = packetKeeper.addTags(tagDto); - assertEquals(tags, map); - - } - - @Test - public void testUpdateTags() { - TagDto tagDto=new TagDto(); - tagDto.setId(id); - Map tags = new HashMap<>(); - tags.put("test", "testValue"); - tagDto.setTags(tags); - Mockito.when(swiftAdapter.addTags(any(), any(),any())).thenReturn(tags); - Map map = packetKeeper.addorUpdate(tagDto); - assertEquals(tags, map); - - } - - @Test - public void testGetTags() { - List tagNames=new ArrayList<>(); - tagNames.add("osivalidation"); - - Map map = packetKeeper.getTags(id); - assertEquals(map.get("osivalidation"), "pass"); - - } - - - @Test - public void testgetAll() { - ObjectDto objectDto = new ObjectDto("source1", "process1", "object1", new Date()); - ObjectDto objectDto2 = new ObjectDto("source2", "process2", "object2", new Date()); - ObjectDto objectDto3 = new ObjectDto("source3", "process3", "object3", new Date()); - List objectDtos = Lists.newArrayList(objectDto, objectDto2, objectDto3); - - Mockito.when(swiftAdapter.getAllObjects(anyString(), anyString())).thenReturn(objectDtos); - - List result = packetKeeper.getAll(id); - assertEquals(objectDtos.size(), result.size()); - - } - @Test - public void testdeleteTags() { - TagRequestDto tagRequestDto=new TagRequestDto(); - tagRequestDto.setId(id); - List tagNames=new ArrayList<>(); - tagNames.add("osivalidation"); - tagRequestDto.setTagNames(tagNames); - packetKeeper.deleteTags(tagRequestDto); - - } - - -} - - +package io.mosip.commons.packet.test.keeper; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import io.mosip.commons.packet.util.PacketManagerHelper; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.util.ReflectionTestUtils; + +import com.google.common.collect.Lists; + +import io.mosip.commons.khazana.dto.ObjectDto; +import io.mosip.commons.khazana.spi.ObjectStoreAdapter; +import io.mosip.commons.packet.constants.PacketManagerConstants; +import io.mosip.commons.packet.dto.Packet; +import io.mosip.commons.packet.dto.PacketInfo; +import io.mosip.commons.packet.dto.TagDto; +import io.mosip.commons.packet.dto.TagRequestDto; +import io.mosip.commons.packet.exception.PacketKeeperException; +import io.mosip.commons.packet.keeper.PacketKeeper; +import io.mosip.commons.packet.spi.IPacketCryptoService; +import io.mosip.kernel.core.exception.BaseUncheckedException; +import io.mosip.kernel.core.util.DateUtils; + +@RunWith(SpringRunner.class) +public class PacketKeeperTest { + + @InjectMocks + private PacketKeeper packetKeeper; + + @Mock + private PacketManagerHelper helper; + + @Mock + @Qualifier("SwiftAdapter") + private ObjectStoreAdapter swiftAdapter; + + @Mock + @Qualifier("S3Adapter") + private ObjectStoreAdapter s3Adapter; + + @Mock + @Qualifier("PosixAdapter") + private ObjectStoreAdapter posixAdapter; + + @Mock + @Qualifier("OnlinePacketCryptoServiceImpl") + private IPacketCryptoService onlineCrypto; + + /*@Mock + private OfflinePacketCryptoServiceImpl offlineCrypto;*/ + + private Packet packet; + private PacketInfo packetInfo; + + private static final String id = "1234567890"; + private static final String source = "source"; + private static final String process = "process"; + + @Before + public void setup() { + ReflectionTestUtils.setField(packetKeeper, "cryptoName", onlineCrypto.getClass().getSimpleName()); + ReflectionTestUtils.setField(packetKeeper, "adapterName", swiftAdapter.getClass().getSimpleName()); + ReflectionTestUtils.setField(packetKeeper, "PACKET_MANAGER_ACCOUNT", "PACKET_MANAGER_ACCOUNT"); + ReflectionTestUtils.setField(packetKeeper, "centerIdLength", 5); + ReflectionTestUtils.setField(packetKeeper, "machineIdLength", 5); + ReflectionTestUtils.setField(packetKeeper, "disablePacketSignatureVerification", false); + + packetInfo = new PacketInfo(); + packetInfo.setCreationDate(DateUtils.getCurrentDateTimeString()); + packetInfo.setEncryptedHash("yWxtW-jQihLntc3Bsgf6ayQwl0yGgD2IkWdedv2ZLCA"); + packetInfo.setId(id); + packetInfo.setProcess(process); + packetInfo.setSource(source); + packetInfo.setSignature("sign"); + packetInfo.setSchemaVersion("0.1"); + packetInfo.setProviderVersion("1.0"); + packet = new Packet(); + packet.setPacket("packet".getBytes()); + packet.setPacketInfo(packetInfo); + + Map metaMap = new HashMap<>(); + metaMap.put(PacketManagerConstants.ID, id); + metaMap.put(PacketManagerConstants.SOURCE, source); + metaMap.put(PacketManagerConstants.PROCESS, process); + metaMap.put(PacketManagerConstants.SIGNATURE, "signaturesignaturesignaturesignaturesignaturesignaturesignaturesignaturesignaturesignature"); + metaMap.put(PacketManagerConstants.ENCRYPTED_HASH, "yWxtW-jQihLntc3Bsgf6ayQwl0yGgD2IkWdedv2ZLCA"); + + Mockito.when(onlineCrypto.encrypt(any(), any())).thenReturn("encryptedpacket".getBytes()); + Mockito.when(onlineCrypto.sign(any())).thenReturn("signed data".getBytes()); + Mockito.when(swiftAdapter.putObject(any(), any(), any(),any(), any(), any())).thenReturn(true); + Mockito.when(swiftAdapter.addObjectMetaData(any(), any(), any(),any(), any(), any())).thenReturn(metaMap); + + InputStream is = new ByteArrayInputStream("input".getBytes()); + + Mockito.when(swiftAdapter.getObject(any(), any(),any(), any(), any())).thenReturn(is); + Mockito.when(onlineCrypto.decrypt(any(), any())).thenReturn("decryptedpacket".getBytes()); + Mockito.when(swiftAdapter.getMetaData(any(), any(),any(), any(), any())).thenReturn(metaMap); + Mockito.when(helper.getRefId(any(), any())).thenReturn("11001_11001"); + Mockito.when(onlineCrypto.verify(any(),any(), any())).thenReturn(true); + Map tagsMap = new HashMap<>(); + tagsMap.put("osivalidation", "pass"); + Mockito.when(swiftAdapter.getTags(any(), any())).thenReturn(tagsMap); + + + } + + @Test + public void testPutPacketSuccess() throws PacketKeeperException { + PacketInfo packetInfo = packetKeeper.putPacket(packet); + + assertTrue(packetInfo.getId().equals(id)); + assertTrue(packetInfo.getSource().equals(source)); + assertTrue(packetInfo.getProcess().equals(process)); + } + + @Test(expected = PacketKeeperException.class) + public void testPutPacketException() throws PacketKeeperException { + Mockito.when(onlineCrypto.encrypt(any(), any())).thenThrow(new BaseUncheckedException("code","message")); + + packetKeeper.putPacket(packet); + } + + @Test(expected = PacketKeeperException.class) + public void testObjectStoreAdapterException() throws PacketKeeperException { + ReflectionTestUtils.setField(packetKeeper, "adapterName", "wrongAdapterName"); + + packetKeeper.putPacket(packet); + } + + @Test(expected = PacketKeeperException.class) + public void testCryptoException() throws PacketKeeperException { + ReflectionTestUtils.setField(packetKeeper, "cryptoName", "wrongname"); + + packetKeeper.putPacket(packet); + } + + @Test + public void testGetPacketSuccess() throws PacketKeeperException { + Packet result = packetKeeper.getPacket(packetInfo); + + assertTrue(result.getPacketInfo().getId().equals(id)); + assertTrue(result.getPacketInfo().getSource().equals(source)); + assertTrue(result.getPacketInfo().getProcess().equals(process)); + } + + @Test(expected = PacketKeeperException.class) + public void testGetPacketFailure() throws PacketKeeperException { + Mockito.when(swiftAdapter.getObject(any(), any(), any(), any(), any())).thenThrow(new BaseUncheckedException("code","message")); + + packetKeeper.getPacket(packetInfo); + } + + @Test(expected = PacketKeeperException.class) + @Ignore + public void testPacketIntegrityFailure() throws PacketKeeperException { + Mockito.when(onlineCrypto.verify(any(),any(), any())).thenReturn(false); + + packetKeeper.getPacket(packetInfo); + } + @Test + public void testAddTags() { + TagDto tagDto=new TagDto(); + tagDto.setId(id); + Map tags = new HashMap<>(); + tags.put("test", "testValue"); + tagDto.setTags(tags); + Mockito.when(swiftAdapter.addTags(any(), any(),any())).thenReturn(tags); + Map map = packetKeeper.addTags(tagDto); + assertEquals(tags, map); + + } + + @Test + public void testUpdateTags() { + TagDto tagDto=new TagDto(); + tagDto.setId(id); + Map tags = new HashMap<>(); + tags.put("test", "testValue"); + tagDto.setTags(tags); + Mockito.when(swiftAdapter.addTags(any(), any(),any())).thenReturn(tags); + Map map = packetKeeper.addorUpdate(tagDto); + assertEquals(tags, map); + + } + + @Test + public void testGetTags() { + List tagNames=new ArrayList<>(); + tagNames.add("osivalidation"); + + Map map = packetKeeper.getTags(id); + assertEquals(map.get("osivalidation"), "pass"); + + } + + + @Test + public void testgetAll() { + ObjectDto objectDto = new ObjectDto("source1", "process1", "object1", new Date()); + ObjectDto objectDto2 = new ObjectDto("source2", "process2", "object2", new Date()); + ObjectDto objectDto3 = new ObjectDto("source3", "process3", "object3", new Date()); + List objectDtos = Lists.newArrayList(objectDto, objectDto2, objectDto3); + + Mockito.when(swiftAdapter.getAllObjects(anyString(), anyString())).thenReturn(objectDtos); + + List result = packetKeeper.getAll(id); + assertEquals(objectDtos.size(), result.size()); + + } + @Test + public void testdeleteTags() { + TagRequestDto tagRequestDto=new TagRequestDto(); + tagRequestDto.setId(id); + List tagNames=new ArrayList<>(); + tagNames.add("osivalidation"); + tagRequestDto.setTagNames(tagNames); + packetKeeper.deleteTags(tagRequestDto); + + } + + +} + + From 1e5a04d04675e45337f4b2dcd1240ee9e24334fb Mon Sep 17 00:00:00 2001 From: kameshsr <47484458+kameshsr@users.noreply.github.com> Date: Fri, 12 Nov 2021 11:22:54 +0530 Subject: [PATCH 04/17] MOSIP-15420: Generated openapi.json for packet manager service (#34) * MOSIP-15420: Upgraded swagger2.0 to openapi3.0 for packet manager service Resolved merge conflict * MOSIP-15420: Generated openapi.json for packet manager service Resolved merge conflicts --- commons-packet/commons-packet-service/pom.xml | 84 ++++++++++++++++++- .../src/test/resources/application.properties | 10 +++ 2 files changed, 93 insertions(+), 1 deletion(-) diff --git a/commons-packet/commons-packet-service/pom.xml b/commons-packet/commons-packet-service/pom.xml index 893526402e..f3461b3a59 100644 --- a/commons-packet/commons-packet-service/pom.xml +++ b/commons-packet/commons-packet-service/pom.xml @@ -281,4 +281,86 @@ https://github.com/mosip/commons - \ No newline at end of file + + + openapi-doc-generate-profile + + + io.mosip.kernel + kernel-auth-adapter + ${project.version} + + + org.springframework.boot + spring-boot-starter-webflux + 2.5.4 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring.boot.version} + + true + ZIP + + + + pre-integration-test + + start + + + + src/test/resources + + + openapi-profile + + + --server.port=8090 + --server.servlet.path=/app/generic + + + + + post-integration-test + + stop + + + + + build-info + repackage + + + + + + org.springdoc + springdoc-openapi-maven-plugin + 0.2 + + + integration-test + + generate + + + + + http://localhost:8090/app/generic/v3/api-docs + openapi.json + ${project.build.directory} + false + + + + + + + \ No newline at end of file diff --git a/commons-packet/commons-packet-service/src/test/resources/application.properties b/commons-packet/commons-packet-service/src/test/resources/application.properties index 07c49c96e3..08a7d76295 100644 --- a/commons-packet/commons-packet-service/src/test/resources/application.properties +++ b/commons-packet/commons-packet-service/src/test/resources/application.properties @@ -29,3 +29,13 @@ mosip.kernel.machineid.length=5 masterdata.registerdevice.timestamp.validate=+5 mosip.kernel.applicant.type.age.limit = 5 +centerIdLength=5 + +mosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter +packet.manager.account.name=PACKET_MANAGER_ACCOUNT +config.server.file.storage.uri=http://104.211.212.28:51000/registration-processor/default/DEV/ +registration.processor.identityjson=RegistrationProcessorIdentity.json +packetmanager.default.read.strategy= +packetmanager.default.priority= +mosip.kernel.auth.appids.realm.map={prereg:'preregistration',ida:'mosip',registrationclient:'mosip',regproc:'mosip',partner:'mosip',resident:'mosip'} + From d89828b871842ac3afd43291d6c00128ff4f9d75 Mon Sep 17 00:00:00 2001 From: Monobikash Das <43202165+MonobikashDas@users.noreply.github.com> Date: Mon, 6 Dec 2021 20:31:32 +0530 Subject: [PATCH 05/17] MOSIP-18453 : improved usage of caching (#36) Co-authored-by: Monobikash Das --- .../commons/packet/impl/PacketReaderImpl.java | 32 +- .../commons/packet/util/IdSchemaUtils.java | 114 +++ .../commons/packet/util/PacketValidator.java | 76 +- .../test/impl/PacketReaderImplTest.java | 887 +++++++++--------- .../PacketServiceControllerAdvice.java | 4 +- .../src/main/resources/bootstrap.properties | 2 +- .../PacketManagerControllerTest.java | 2 + 7 files changed, 635 insertions(+), 482 deletions(-) diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java index 1d3608ce95..51cc7d04e1 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.Map; +import io.mosip.commons.packet.facade.PacketReader; import io.mosip.kernel.biometrics.constant.BiometricType; import io.mosip.kernel.core.util.JsonUtils; import org.apache.commons.collections4.CollectionUtils; @@ -74,6 +75,9 @@ public class PacketReaderImpl implements IPacketReader { @Value("${mosip.commons.packetnames}") private String packetNames; + @Autowired + private PacketReader packetReader; + @Autowired private PacketKeeper packetKeeper; @@ -100,13 +104,13 @@ public class PacketReaderImpl implements IPacketReader { public boolean validatePacket(String id, String source, String process) { try { return packetValidator.validate(id, source, process); - } catch (BaseCheckedException | IOException | NoSuchAlgorithmException e) { + } catch (Exception e) { LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, id, "Packet Validation exception : " + ExceptionUtils.getStackTrace(e)); if (e instanceof BaseCheckedException) throw new PacketValidationFailureException(((BaseCheckedException) e).getMessage(), e); else - throw new PacketValidationFailureException(((IOException) e).getMessage(), e); + throw new PacketValidationFailureException((e).getMessage(), e); } } @@ -158,10 +162,10 @@ else if (value != null && (value instanceof String)) ExceptionUtils.getStackTrace(e)); if (e instanceof BaseCheckedException) { BaseCheckedException ex = (BaseCheckedException) e; - throw new GetAllIdentityException(ex.getErrorCode(), ex.getMessage()); + throw new GetAllIdentityException(ex.getErrorCode(), ex.getErrorText()); } else if (e instanceof BaseUncheckedException) { BaseUncheckedException ex = (BaseUncheckedException) e; - throw new GetAllIdentityException(ex.getErrorCode(), ex.getMessage()); + throw new GetAllIdentityException(ex.getErrorCode(), ex.getErrorText()); } throw new GetAllIdentityException(e.getMessage()); } @@ -197,12 +201,10 @@ public Map getFields(String id, List fields, String sour public Document getDocument(String id, String documentName, String source, String process) { LOGGER.info(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, id, "getDocument :: for - " + documentName); - Map idobjectMap = getAll(id, source, process); - Double schemaVersion = idobjectMap.get(PacketManagerConstants.IDSCHEMA_VERSION) != null - ? Double.valueOf(idobjectMap.get(PacketManagerConstants.IDSCHEMA_VERSION).toString()) - : null; - String documentString = (String) idobjectMap.get(documentName); try { + String schemaVersionString = packetReader.getField(id, idSchemaUtils.getIdschemaVersionFromMappingJson(), source, process, false); + Double schemaVersion = schemaVersionString != null ? Double.valueOf(schemaVersionString) : null; + String documentString = packetReader.getField(id, documentName, source, process, false); if (documentString != null && schemaVersion != null) { JSONObject documentMap = new JSONObject(documentString); String packetName = idSchemaUtils.getSource(documentName, schemaVersion); @@ -218,8 +220,7 @@ public Document getDocument(String id, String documentName, String source, Strin return document; } } - } catch (IOException | ApiNotAccessibleException | PacketDecryptionFailureException | JSONException - | PacketKeeperException e) { + } catch (Exception e) { LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, id, ExceptionUtils.getStackTrace(e)); throw new GetDocumentException(e.getMessage()); @@ -236,8 +237,7 @@ public BiometricRecord getBiometric(String id, String biometricFieldName, List idobjectMap = getAll(id, source, process); - String bioString = (String) idobjectMap.get(biometricFieldName); + String bioString = packetReader.getField(id, biometricFieldName, source, process, false);//(String) idobjectMap.get(biometricFieldName); JSONObject biometricMap = null; if (bioString != null) biometricMap = new JSONObject(bioString); @@ -258,9 +258,9 @@ public BiometricRecord getBiometric(String id, String biometricFieldName, List categorySubpacketMapping = new HashMap<>(); private Map idschema = null; + public static final String RESPONSE = "response"; + public static final String PROPERTIES = "properties"; + public static final String IDENTITY = "identity"; + public static final String SCHEMA_CATEGORY = "fieldCategory"; + public static final String SCHEMA_ID = "id"; + public static final String SCHEMA_TYPE = "type"; + public static final String SCHEMA_REF = "$ref"; + public static final String IDSCHEMA_URL = "IDSCHEMA"; + public static final String SCHEMA_JSON = "schemaJson"; + public static final String SCHEMA_VERSION_QUERY_PARAM = "schemaVersion"; + public static final String SCHEMA_REF_DEFINITIONS_PREFIX = "#/definitions/"; + + static { + categorySubpacketMapping.put("pvt", "id"); + categorySubpacketMapping.put("kyc", "id"); + categorySubpacketMapping.put("none", "id,evidence,optional"); + categorySubpacketMapping.put("evidence", "evidence"); + categorySubpacketMapping.put("optional", "optional"); + } + + @Value("${config.server.file.storage.uri}") + private String configServerUrl; + + @Value("${registration.processor.identityjson}") + private String mappingjsonFileName; @Value("${packet.default.source:REGISTRATION_CLIENT}") private String defaultSource; @@ -47,6 +79,9 @@ public class IdSchemaUtils { @Value("${IDSCHEMAURL:null}") private String idschemaUrl; + + @Autowired + private ObjectMapper objMapper; @Autowired @Qualifier("restTemplate") @@ -158,4 +193,83 @@ private JSONObject getJSONObjFromStr(String jsonString, String id) { return null; } } + + public List getDefaultFields(Double schemaVersion) throws JSONException, IOException { + List fieldList = new ArrayList<>(); + List> fieldMapList = loadDefaultFields(schemaVersion); + fieldMapList.stream().forEach(f -> fieldList.add(f.get(SCHEMA_ID))); + return fieldList; + } + + public List> loadDefaultFields(Double schemaVersion) throws JSONException, IOException { + Map>> packetBasedMap = new HashMap>>(); + + String schemaJson = getIdSchema(schemaVersion); + + JSONObject schema = getIdentityFieldsSchema(schemaJson); + + JSONArray fieldNames = schema.names(); + for(int i=0;i>()); + } + + Map attributes = new HashMap<>(); + attributes.put(SCHEMA_ID, fieldName); + attributes.put(SCHEMA_TYPE, fieldDetail.has(SCHEMA_REF) ? + fieldDetail.getString(SCHEMA_REF) : fieldDetail.getString(SCHEMA_TYPE)); + packetBasedMap.get(packetName).add(attributes); + } + } + return packetBasedMap.get("id"); + } + + private JSONObject getIdentityFieldsSchema(String schemaJson) throws JSONException { + + JSONObject schema = new JSONObject(schemaJson); + schema = schema.getJSONObject(PROPERTIES); + schema = schema.getJSONObject(IDENTITY); + schema = schema.getJSONObject(PROPERTIES); + + return schema; + } + + + public String getIdschemaVersionFromMappingJson() throws IOException { + String field = getJSONValue(getJSONObject(getMappingJson(), PacketManagerConstants.IDSCHEMA_VERSION), PacketManagerConstants.VALUE); + return field; + + } + + public org.json.simple.JSONObject getMappingJson() throws IOException { + + if (mappingJsonObject == null) { + String mappingJsonString = restTemplate.getForObject(configServerUrl + "/" + mappingjsonFileName, String.class); + mappingJsonObject = objMapper.readValue(mappingJsonString, org.json.simple.JSONObject.class); + + } + return getJSONObject(mappingJsonObject, PacketManagerConstants.IDENTITY); + } + + public static org.json.simple.JSONObject getJSONObject(org.json.simple.JSONObject jsonObject, Object key) { + if(jsonObject == null) + return null; + LinkedHashMap identity = (LinkedHashMap) jsonObject.get(key); + return identity != null ? new org.json.simple.JSONObject(identity) : null; + } + + public static T getJSONValue(org.json.simple.JSONObject jsonObject, String key) { + if(jsonObject == null) + return null; + T value = (T) jsonObject.get(key); + return value; + } } diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketValidator.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketValidator.java index cc6f61445f..4f6ab27351 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketValidator.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketValidator.java @@ -15,9 +15,12 @@ import java.util.List; import java.util.Map; -import io.mosip.kernel.core.exception.ExceptionUtils; +import io.mosip.commons.packet.facade.PacketReader; import io.mosip.kernel.core.util.HMACUtils2; import org.apache.commons.io.IOUtils; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONTokener; import org.json.simple.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -58,6 +61,8 @@ public class PacketValidator { private static final String eventName = "PACKET MANAGER"; private static final String eventType = "SYSTEM"; + @Autowired + private PacketReader reader; @Autowired private Environment env; @@ -78,7 +83,7 @@ public class PacketValidator { private AuditLogEntry auditLogEntry; - public boolean validate(String id, String source, String process) throws IdObjectIOException, IdObjectValidationFailedException, InvalidIdSchemaException, IOException, JsonProcessingException, PacketKeeperException, NoSuchAlgorithmException { + public boolean validate(String id, String source, String process) throws IdObjectIOException, InvalidIdSchemaException, IOException, JsonProcessingException, PacketKeeperException, NoSuchAlgorithmException, JSONException { boolean result = validateSchema(id, source, process); if(result) { LOGGER.info(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, id, "Id object validation successful for process name : " + process); @@ -92,38 +97,28 @@ public boolean validate(String id, String source, String process) throws IdObjec return result; } - private boolean validateSchema(String id, String source, String process) throws IOException, InvalidIdSchemaException, IdObjectIOException { - LinkedHashMap objectMap = new LinkedHashMap<>(); + private boolean validateSchema(String id, String source, String process) throws IOException, InvalidIdSchemaException, IdObjectIOException, JSONException { + Map objectMap = new HashMap<>(); try { - for (String packetName : packetNames.split(",")) { - Packet packet = packetKeeper.getPacket(getPacketInfo(id, packetName, source, process)); - InputStream idJsonStream = ZipUtils.unzipAndGetFile(packet.getPacket(), "ID"); - if (idJsonStream != null) { - byte[] bytearray = IOUtils.toByteArray(idJsonStream); - String jsonString = new String(bytearray); - LinkedHashMap currentIdMap = (LinkedHashMap) mapper - .readValue(jsonString, LinkedHashMap.class).get(IDENTITY); - if (convertIdschemaToDouble && currentIdMap.get(IDSCHEMA_VERSION) != null) - currentIdMap.put(IDSCHEMA_VERSION, Double.valueOf(currentIdMap.get(IDSCHEMA_VERSION).toString())); - currentIdMap.entrySet().forEach(e -> objectMap.putIfAbsent(e.getKey(), e.getValue())); + String idschemaValueFromMappingJson = idSchemaUtils.getIdschemaVersionFromMappingJson(); + String idschemaVersion = reader.getField(id, idschemaValueFromMappingJson, source, process, false); + List allFields = idSchemaUtils.getDefaultFields(Double.valueOf(idschemaVersion)); + Map fieldsMap = reader.getFields(id, allFields, source, process, false); + objectMap.putAll(fieldsMap); + + if (convertIdschemaToDouble) + objectMap.put(idschemaValueFromMappingJson, Double.valueOf(fieldsMap.get(idschemaValueFromMappingJson))); - } - } String fields = env.getProperty(String.format(FIELD_LIST, IdObjectsSchemaValidationOperationMapper.getOperation(process))); LinkedHashMap finalMap = new LinkedHashMap(); - finalMap.put(IDENTITY, objectMap); + finalMap.put(IDENTITY, loadDemographicIdentity(objectMap)); JSONObject finalIdObject = new JSONObject(finalMap); return idObjectValidator.validateIdObject(idSchemaUtils.getIdSchema(Double.valueOf(objectMap.get( PacketManagerConstants.IDSCHEMA_VERSION).toString())), finalIdObject, Arrays.asList(fields.split(","))); - } catch (IdObjectValidationFailedException | PacketKeeperException e) { - if (e instanceof IdObjectValidationFailedException) { - LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, id, - "Id object masterdata validation failed with errors: " + e.getErrorTexts()); - } else { - LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, id, - "Id object validation failed : " + ExceptionUtils.getStackTrace(e)); - } + } catch (IdObjectValidationFailedException e) { + LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, id, + "Id object masterdata validation failed with errors: " + e.getErrorTexts()); return false; } @@ -296,5 +291,34 @@ private boolean checksumValidation(List hashseq1List, List hashseq2List, Map fieldMap) throws IOException, JSONException { + LinkedHashMap demographicIdentity = new LinkedHashMap(); + for (Map.Entry e : fieldMap.entrySet()) { + if (e.getValue() != null) { + String value = e.getValue().toString(); + if (value != null) { + Object json = new JSONTokener(value).nextValue(); + if (json instanceof org.json.JSONObject) { + HashMap hashMap = new ObjectMapper().readValue(value, HashMap.class); + demographicIdentity.putIfAbsent(e.getKey(), hashMap); + } + else if (json instanceof JSONArray) { + List jsonList = new ArrayList<>(); + JSONArray jsonArray = new JSONArray(value); + for (int i = 0; i < jsonArray.length(); i++) { + Object obj = jsonArray.get(i); + HashMap hashMap = new ObjectMapper().readValue(obj.toString(), HashMap.class); + jsonList.add(hashMap); + } + demographicIdentity.putIfAbsent(e.getKey(), jsonList); + } else + demographicIdentity.putIfAbsent(e.getKey(), e.getValue()); + } else + demographicIdentity.putIfAbsent(e.getKey(), value); + } + } + return demographicIdentity; + } + } diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java index 045b8d6945..654cba802c 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java @@ -1,437 +1,450 @@ -package io.mosip.commons.packet.test.impl; - -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyObject; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.when; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.io.IOUtils; -import org.json.simple.JSONObject; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.springframework.context.annotation.PropertySource; -import org.springframework.test.util.ReflectionTestUtils; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.Lists; - -import io.mosip.commons.packet.dto.Document; -import io.mosip.commons.packet.dto.Packet; -import io.mosip.commons.packet.exception.GetAllIdentityException; -import io.mosip.commons.packet.exception.GetAllMetaInfoException; -import io.mosip.commons.packet.exception.GetDocumentException; -import io.mosip.commons.packet.exception.PacketKeeperException; -import io.mosip.commons.packet.exception.PacketValidationFailureException; -import io.mosip.commons.packet.impl.PacketReaderImpl; -import io.mosip.commons.packet.keeper.PacketKeeper; -import io.mosip.commons.packet.spi.IPacketReader; -import io.mosip.commons.packet.util.IdSchemaUtils; -import io.mosip.commons.packet.util.PacketValidator; -import io.mosip.commons.packet.util.ZipUtils; -import io.mosip.kernel.biometrics.commons.CbeffValidator; -import io.mosip.kernel.biometrics.constant.BiometricType; -import io.mosip.kernel.biometrics.constant.QualityType; -import io.mosip.kernel.biometrics.entities.BDBInfo; -import io.mosip.kernel.biometrics.entities.BIR; -import io.mosip.kernel.biometrics.entities.BiometricRecord; -import io.mosip.kernel.biometrics.entities.RegistryIDType; -import io.mosip.kernel.core.idobjectvalidator.exception.IdObjectIOException; -import io.mosip.kernel.core.idobjectvalidator.exception.IdObjectValidationFailedException; -import io.mosip.kernel.core.idobjectvalidator.exception.InvalidIdSchemaException; -import io.mosip.kernel.core.util.JsonUtils; -import io.mosip.kernel.core.util.exception.JsonProcessingException; - -@RunWith(PowerMockRunner.class) -@PrepareForTest({ZipUtils.class, IOUtils.class, JsonUtils.class, CbeffValidator.class}) -@PropertySource("classpath:application-test.properties") -@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*"}) -public class PacketReaderImplTest { - - @InjectMocks - private IPacketReader iPacketReader = new PacketReaderImpl(); - - @Mock - private PacketValidator packetValidator; - - @Mock - private PacketKeeper packetKeeper; - - @Mock - private ObjectMapper objectMapper; - - @Mock - private IdSchemaUtils idSchemaUtils; - - private static final String docName = "proofOfIdentity"; - private static final String biometricFieldName = "individualBiometrics"; - - @Before - public void setup() throws PacketKeeperException, IOException { - Packet packet = new Packet(); - packet.setPacket("hello".getBytes()); - - String str = "{ \"identity\" : {\n" + - " \"proofOfAddress\" : {\n" + - " \"value\" : \"proofOfAddress\",\n" + - " \"type\" : \"DOC004\",\n" + - " \"format\" : \"jpg\"\n" + - " },\n" + - " \"gender\" : [ {\n" + - " \"language\" : \"eng\",\n" + - " \"value\" : \"Male\"\n" + - " }, {\n" + - " \"language\" : \"ara\",\n" + - " \"value\" : \"الذكر\"\n" + - " } ],\n" + - " \"city\" : [ {\n" + - " \"language\" : \"eng\",\n" + - " \"value\" : \"Kenitra\"\n" + - " }, {\n" + - " \"language\" : \"ara\",\n" + - " \"value\" : \"القنيطرة\"\n" + - " } ],\n" + - " \"postalCode\" : \"14000\",\n" + - " \"fullName\" : [ {\n" + - " \"language\" : \"eng\",\n" + - " \"value\" : \"Test after fix\"\n" + - " }, {\n" + - " \"language\" : \"ara\",\n" + - " \"value\" : \"Test after fix\"\n" + - " } ],\n" + - " \"dateOfBirth\" : \"1976/01/01\",\n" + - " \"referenceIdentityNumber\" : \"2345235252352353523\",\n" + - " \"individualBiometrics\" : {\n" + - " \"format\" : \"cbeff\",\n" + - " \"version\" : 1.0,\n" + - " \"value\" : \"individualBiometrics_bio_CBEFF\"\n" + - " },\n" + - " \"IDSchemaVersion\" : \"0.1\",\n" + - " \"province\" : [ {\n" + - " \"language\" : \"eng\",\n" + - " \"value\" : \"Kenitra\"\n" + - " }, {\n" + - " \"language\" : \"ara\",\n" + - " \"value\" : \"القنيطرة\"\n" + - " } ],\n" + - " \"zone\" : [ {\n" + - " \"language\" : \"eng\",\n" + - " \"value\" : \"Assam\"\n" + - " }, {\n" + - " \"language\" : \"ara\",\n" + - " \"value\" : \"العصام\"\n" + - " } ],\n" + - " \"phone\" : \"9606139887\",\n" + - " \"addressLine1\" : [ {\n" + - " \"language\" : \"eng\",\n" + - " \"value\" : \"asdadsfas\"\n" + - " }, {\n" + - " \"language\" : \"ara\",\n" + - " \"value\" : \"asdadsfas\"\n" + - " } ],\n" + - " \"addressLine2\" : [ {\n" + - " \"language\" : \"eng\",\n" + - " \"value\" : \"qqwqrqwrw\"\n" + - " }, {\n" + - " \"language\" : \"ara\",\n" + - " \"value\" : \"qqwqrqwrw\"\n" + - " } ],\n" + - " \"residenceStatus\" : [ {\n" + - " \"language\" : \"eng\",\n" + - " \"value\" : \"Non-Foreigner\"\n" + - " }, {\n" + - " \"language\" : \"ara\",\n" + - " \"value\" : \"غير أجنبي\"\n" + - " } ],\n" + - " \"addressLine3\" : [ {\n" + - " \"language\" : \"eng\",\n" + - " \"value\" : \"wfwfwef\"\n" + - " }, {\n" + - " \"language\" : \"ara\",\n" + - " \"value\" : \"wfwfwef\"\n" + - " } ],\n" + - " \"region\" : [ {\n" + - " \"language\" : \"eng\",\n" + - " \"value\" : \"Rabat Sale Kenitra\"\n" + - " }, {\n" + - " \"language\" : \"ara\",\n" + - " \"value\" : \"جهة الرباط سلا القنيطرة\"\n" + - " } ],\n" + - " \"email\" : \"niyati.swami@technoforte.co.in\"\n" + - "} } "; - - Map keyValueMap = new LinkedHashMap<>(); - keyValueMap.put("email", "niyati.swami@technoforte.co.in"); - keyValueMap.put("phone", "9606139887"); - keyValueMap.put("fullName", "[ {\r\n \"language\" : \"eng\",\r\n \"value\" : \"Test after fix\"\r\n}, {\r\n \"language\" : \"ara\",\r\n \"value\" : \"Test after fix\"\r\n} ]"); - keyValueMap.put("IDSchemaVersion", "0.1"); - keyValueMap.put(biometricFieldName, "{\r\n \"format\" : \"cbeff\",\r\n \"version\" : 1.0,\r\n \"value\" : \"individualBiometrics_bio_CBEFF\"\r\n}"); - keyValueMap.put(docName, "{\r\n \"value\" : \"proofOfIdentity\",\r\n \"type\" : \"DOC003\",\r\n \"format\" : \"jpg\"\r\n}"); - - - Map finalMap = new LinkedHashMap<>(); - finalMap.put("identity", keyValueMap); - - ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes()); - - MockitoAnnotations.initMocks(this); - ReflectionTestUtils.setField(iPacketReader, "packetNames", "id,evidence,optional"); - when(packetKeeper.getPacket(any())).thenReturn(packet); - - PowerMockito.mockStatic(ZipUtils.class); - when(ZipUtils.unzipAndGetFile(any(), anyString())).thenReturn(bis); - PowerMockito.mockStatic(IOUtils.class); - when(IOUtils.toByteArray(any(InputStream.class))).thenReturn(str.getBytes()); - - when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(finalMap); - when(idSchemaUtils.getSource(any(), any())).thenReturn("id"); - - } - - @Test - public void validatePacketTest() throws JsonProcessingException, PacketKeeperException, InvalidIdSchemaException, IdObjectValidationFailedException, IdObjectIOException, IOException, NoSuchAlgorithmException { - when(packetValidator.validate(anyString(), anyString(), anyString())).thenReturn(true); - boolean result = iPacketReader.validatePacket("id", "source", "process"); - - assertTrue("Should be true", result); - } - - @Test(expected = PacketValidationFailureException.class) - public void validatePacketExceptionTest() throws JsonProcessingException, PacketKeeperException, InvalidIdSchemaException, IdObjectValidationFailedException, IdObjectIOException, IOException, NoSuchAlgorithmException { - when(packetValidator.validate(anyString(), anyString(), anyString())).thenThrow(new IOException("exception")); - boolean result = iPacketReader.validatePacket("id", "source","process"); - - } - - @Test - public void getAllTest() { - Map result = iPacketReader.getAll("id", "source", "process"); - - assertTrue("Should be true", result.size() == 6); - } - - @Test(expected = GetAllIdentityException.class) - public void getAllExceptionTest() throws IOException { - when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(null); - - Map result = iPacketReader.getAll("id", "source", "process"); - } - - @Test(expected = GetAllIdentityException.class) - public void getAllExceptionTest2() throws JsonProcessingException, IOException { - PowerMockito.mockStatic(JsonUtils.class); - Map keyValueMap = new LinkedHashMap<>(); - keyValueMap.put("email", new JSONObject(new LinkedHashMap())); - Map finalMap = new LinkedHashMap<>(); - finalMap.put("identity", keyValueMap); - when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(finalMap); - - when(JsonUtils.javaObjectToJsonString(anyObject())).thenThrow(new JsonProcessingException("errormessage")); - Map result = iPacketReader.getAll("id", "source", "process"); - } - - @Test - public void getFieldTest() { - String result = iPacketReader.getField("id", "phone", "source","process"); - - assertTrue("Should be true", result.equals("9606139887")); - } - - @Test - public void getFieldsTest() { - List list = Lists.newArrayList("phone", "email"); - - Map result = iPacketReader.getFields("id", list, "source", "process"); - - assertTrue("Should be true", result.size() == 2); - } - - @Test - public void getDocumentTest() { - List list = Lists.newArrayList("phone", "email"); - - Document result = iPacketReader.getDocument("id", docName, "source", "process"); - - assertTrue("Should be true", result.getDocument() != null); - } - - @Test(expected = GetDocumentException.class) - public void getDocumentExceptionTest() throws IOException { - List list = Lists.newArrayList("phone", "email"); - - when(idSchemaUtils.getSource(any(), any())).thenThrow(new IOException("exception")); - - Document result = iPacketReader.getDocument("id", docName, "source", "process"); - - } - - @Test - public void getBiometricsTest() throws Exception { - BIR birType = new BIR(); - BIR bir1 = new BIR(); - BDBInfo bdbInfoType1 = new BDBInfo(); - RegistryIDType registryIDType = new RegistryIDType(); - registryIDType.setOrganization("Mosip"); - registryIDType.setType("257"); - QualityType quality = new QualityType(); - quality.setAlgorithm(registryIDType); - quality.setScore(90l); - bdbInfoType1.setQuality(quality); - BiometricType singleType1 = BiometricType .FINGER; - List singleTypeList1 = new ArrayList<>(); - singleTypeList1.add(singleType1); - List subtype1 = new ArrayList<>(Arrays.asList("Left", "RingFinger")); - bdbInfoType1.setSubtype(subtype1); - bdbInfoType1.setType(singleTypeList1); - bdbInfoType1.setFormat(registryIDType); - bir1.setBdbInfo(bdbInfoType1); - BIR bir2 = new BIR(); - bir2.setBdbInfo(bdbInfoType1); - - PowerMockito.mockStatic(CbeffValidator.class); - birType.setBirs(Lists.newArrayList(bir1, bir2)); - when(CbeffValidator.getBIRFromXML(any())).thenReturn(birType); - - BiometricRecord result = iPacketReader.getBiometric("id", biometricFieldName, null, "source", "process"); - - assertTrue("Should be true", result.getSegments().size() == 2); - } - - @Test - @Ignore - public void getBiometricsExceptionTest() throws Exception { - List list = Lists.newArrayList("phone", "email"); - BIR birType = new BIR(); - - BIR bir1 = new BIR(); - BDBInfo bdbInfoType1 = new BDBInfo(); - RegistryIDType registryIDType = new RegistryIDType(); - registryIDType.setOrganization("Mosip"); - registryIDType.setType("257"); - QualityType quality = new QualityType(); - quality.setAlgorithm(registryIDType); - quality.setScore(90l); - bdbInfoType1.setQuality(quality); - BiometricType singleType1 = BiometricType.FINGER; - List singleTypeList1 = new ArrayList<>(); - singleTypeList1.add(singleType1); - List subtype1 = new ArrayList<>(Arrays.asList("Left", "RingFinger")); - bdbInfoType1.setSubtype(subtype1); - bdbInfoType1.setType(singleTypeList1); - bdbInfoType1.setFormat(registryIDType); - bir1.setBdbInfo(bdbInfoType1); - BIR bir2 = new BIR(); - bir2.setBdbInfo(bdbInfoType1); - birType.setBirs(Lists.newArrayList(bir1, bir2)); - - Map keyValueMap = new LinkedHashMap<>(); - keyValueMap.put("operationsData", "[{\n \"label\\\" : \\\"officerId\\\",\n \\\"value\\\" : \\\"110012\\\"\n}, {\n \\\"label\\\" : \\\"officerBiometricFileName\\\",\n \\\"value\\\" : \\\"officer_bio_cbeff\\\"\n}, {\n \\\"label\\\" : \\\"supervisorId\\\",\n \\\"value\\\" : null\n}, {\n \\\"label\\\" : \\\"supervisorBiometricFileName\\\",\n \\\"value\\\" : null\n}, {\n \\\"label\\\" : \\\"supervisorPassword\\\",\n \\\"value\\\" : \\\"false\\\"\n}, {\n \\\"label\\\" : \\\"officerPassword\\\",\n \\\"value\\\" : \\\"true\\\"\n}, {\n \\\"label\\\" : \\\"supervisorPIN\\\",\n \\\"value\\\" : null\n}, {\n \\\"label\\\" : \\\"officerPIN\\\",\n \\\"value\\\" : null\n}]"); - keyValueMap.put("metaData", "[{\r\n \"label\" : \"registrationId\",\r\n \"value\" : \"10001100770000320200720092256\"\r\n}, {\r\n \"label\" : \"creationDate\",\r\n \"value\" : \"2020-07-20T14:54:49.823Z\"\r\n}, {\r\n \"label\" : \"Registration Client Version Number\",\r\n \"value\" : \"1.0.10\"\r\n}, {\r\n \"label\" : \"registrationType\",\r\n \"value\" : \"New\"\r\n}, {\r\n \"label\" : \"preRegistrationId\",\r\n \"value\" : null\r\n}, {\r\n \"label\" : \"machineId\",\r\n \"value\" : \"10077\"\r\n}, {\r\n \"label\" : \"centerId\",\r\n \"value\" : \"10001\"\r\n}, {\r\n \"label\" : \"dongleId\",\r\n \"value\" : null\r\n}, {\r\n \"label\" : \"keyIndex\",\r\n \"value\" : \"4F:38:72:D9:F8:DB:94:E7:22:48:96:D0:91:01:6D:3C:64:90:2E:14:DC:D2:F8:14:1F:2A:A4:19:1A:BC:91:41\"\r\n}, {\r\n \"label\" : \"consentOfApplicant\",\r\n \"value\" : \"Yes} ]"); - Map finalMap = new LinkedHashMap<>(); - finalMap.put("identity", keyValueMap); - - when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(finalMap); - - PowerMockito.mockStatic(CbeffValidator.class); - when(CbeffValidator.getBIRFromXML(any())).thenReturn(birType); - - BiometricRecord result = iPacketReader.getBiometric("id", "officerBiometric", null, "source", "process"); - - assertTrue("Should be true", result.getSegments().size() == 2); - } - - @Test - public void getMetaInfoTest() throws IOException { - Map keyValueMap = new LinkedHashMap<>(); - keyValueMap.put("operationsData", "[{\n" + - "\t\"label\": \"officerId\",\n" + - "\t\"value\": \"110122\"\n" + - "}, {\n" + - "\t\"label\": \"officerBiometricFileName\",\n" + - "\t\"value\": \"officerBiometric\"\n" + - "}, {\n" + - "\t\"label\": \"supervisorId\",\n" + - "\t\"value\": null\n" + - "}, {\n" + - "\t\"label\": \"supervisorBiometricFileName\",\n" + - "\t\"value\": null\n" + - "}, {\n" + - "\t\"label\": \"supervisorPassword\",\n" + - "\t\"value\": \"false\"\n" + - "}, {\n" + - "\t\"label\": \"officerPassword\",\n" + - "\t\"value\": \"true\"\n" + - "}, {\n" + - "\t\"label\": \"supervisorPIN\",\n" + - "\t\"value\": null\n" + - "}, {\n" + - "\t\"label\": \"officerPIN\",\n" + - "\t\"value\": null\n" + - "}, {\n" + - "\t\"label\": \"supervisorOTPAuthentication\",\n" + - "\t\"value\": \"false\"\n" + - "}, {\n" + - "\t\"label\": \"officerOTPAuthentication\",\n" + - "\t\"value\": \"false\"\n" + - "}]"); - keyValueMap.put("metaData", "\"[ {\r\n \"label\" : \"registrationId\",\r\n \"value\" : \"10001100770000320200720092256\"\r\n}, {\r\n \"label\" : \"creationDate\",\r\n \"value\" : \"2020-07-20T14:54:49.823Z\"\r\n}, {\r\n \"label\" : \"Registration Client Version Number\",\r\n \"value\" : \"1.0.10\"\r\n}, {\r\n \"label\" : \"registrationType\",\r\n \"value\" : \"New\"\r\n}, {\r\n \"label\" : \"preRegistrationId\",\r\n \"value\" : null\r\n}, {\r\n \"label\" : \"machineId\",\r\n \"value\" : \"10077\"\r\n}, {\r\n \"label\" : \"centerId\",\r\n \"value\" : \"10001\"\r\n}, {\r\n \"label\" : \"dongleId\",\r\n \"value\" : null\r\n}, {\r\n \"label\" : \"keyIndex\",\r\n \"value\" : \"4F:38:72:D9:F8:DB:94:E7:22:48:96:D0:91:01:6D:3C:64:90:2E:14:DC:D2:F8:14:1F:2A:A4:19:1A:BC:91:41\"\r\n}, {\r\n \"label\" : \"consentOfApplicant\",\r\n \"value\" : \"Yes\"\r\n} ]\""); - Map finalMap = new LinkedHashMap<>(); - finalMap.put("identity", keyValueMap); - - when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(finalMap); - - Map result = iPacketReader.getMetaInfo("id", "source", "process"); - - assertTrue("Should be true", result.size() == 2); - } - - @Test - public void getAuditTest() throws IOException { - ReflectionTestUtils.setField(iPacketReader, "packetNames", "id"); - Map keyValueMap = new LinkedHashMap<>(); - keyValueMap.put("audit1", "audit1"); - keyValueMap.put("audit2", "audit2"); - List> finalMap = new ArrayList<>(); - finalMap.add(keyValueMap); - - when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(finalMap); - - List> result = iPacketReader.getAuditInfo("id", "source", "process"); - - assertTrue("Should be true", result.size() == 1); - } - - @Test(expected = GetAllMetaInfoException.class) - public void metaInfoExceptionTest() throws IOException { - when(objectMapper.readValue(anyString(), any(Class.class))).thenThrow(new IOException("exception")); - - iPacketReader.getMetaInfo("id", "source", "process"); - } - - @Test(expected = GetAllIdentityException.class) - public void getAuditExceptionTest() throws IOException { - when(objectMapper.readValue(anyString(), any(Class.class))).thenThrow(new IOException("exception")); - - iPacketReader.getAuditInfo("id", "source", "process"); - } - -} +package io.mosip.commons.packet.test.impl; + +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyObject; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import io.mosip.commons.packet.facade.PacketReader; +import org.apache.commons.io.IOUtils; +import org.json.JSONException; +import org.json.simple.JSONObject; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.springframework.context.annotation.PropertySource; +import org.springframework.test.util.ReflectionTestUtils; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.collect.Lists; + +import io.mosip.commons.packet.dto.Document; +import io.mosip.commons.packet.dto.Packet; +import io.mosip.commons.packet.exception.GetAllIdentityException; +import io.mosip.commons.packet.exception.GetAllMetaInfoException; +import io.mosip.commons.packet.exception.GetDocumentException; +import io.mosip.commons.packet.exception.PacketKeeperException; +import io.mosip.commons.packet.exception.PacketValidationFailureException; +import io.mosip.commons.packet.impl.PacketReaderImpl; +import io.mosip.commons.packet.keeper.PacketKeeper; +import io.mosip.commons.packet.spi.IPacketReader; +import io.mosip.commons.packet.util.IdSchemaUtils; +import io.mosip.commons.packet.util.PacketValidator; +import io.mosip.commons.packet.util.ZipUtils; +import io.mosip.kernel.biometrics.commons.CbeffValidator; +import io.mosip.kernel.biometrics.constant.BiometricType; +import io.mosip.kernel.biometrics.constant.QualityType; +import io.mosip.kernel.biometrics.entities.BDBInfo; +import io.mosip.kernel.biometrics.entities.BIR; +import io.mosip.kernel.biometrics.entities.BiometricRecord; +import io.mosip.kernel.biometrics.entities.RegistryIDType; +import io.mosip.kernel.core.idobjectvalidator.exception.IdObjectIOException; +import io.mosip.kernel.core.idobjectvalidator.exception.IdObjectValidationFailedException; +import io.mosip.kernel.core.idobjectvalidator.exception.InvalidIdSchemaException; +import io.mosip.kernel.core.util.JsonUtils; +import io.mosip.kernel.core.util.exception.JsonProcessingException; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({ZipUtils.class, IOUtils.class, JsonUtils.class, CbeffValidator.class}) +@PropertySource("classpath:application-test.properties") +@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*"}) +public class PacketReaderImplTest { + + @InjectMocks + private IPacketReader iPacketReader = new PacketReaderImpl(); + + @Mock + private PacketReader packetReader; + + @Mock + private PacketValidator packetValidator; + + @Mock + private PacketKeeper packetKeeper; + + @Mock + private ObjectMapper objectMapper; + + @Mock + private IdSchemaUtils idSchemaUtils; + + private static final String docName = "proofOfIdentity"; + private static final String biometricFieldName = "individualBiometrics"; + Map keyValueMap = null; + + @Before + public void setup() throws PacketKeeperException, IOException { + Packet packet = new Packet(); + packet.setPacket("hello".getBytes()); + + String str = "{ \"identity\" : {\n" + + " \"proofOfAddress\" : {\n" + + " \"value\" : \"proofOfAddress\",\n" + + " \"type\" : \"DOC004\",\n" + + " \"format\" : \"jpg\"\n" + + " },\n" + + " \"gender\" : [ {\n" + + " \"language\" : \"eng\",\n" + + " \"value\" : \"Male\"\n" + + " }, {\n" + + " \"language\" : \"ara\",\n" + + " \"value\" : \"الذكر\"\n" + + " } ],\n" + + " \"city\" : [ {\n" + + " \"language\" : \"eng\",\n" + + " \"value\" : \"Kenitra\"\n" + + " }, {\n" + + " \"language\" : \"ara\",\n" + + " \"value\" : \"القنيطرة\"\n" + + " } ],\n" + + " \"postalCode\" : \"14000\",\n" + + " \"fullName\" : [ {\n" + + " \"language\" : \"eng\",\n" + + " \"value\" : \"Test after fix\"\n" + + " }, {\n" + + " \"language\" : \"ara\",\n" + + " \"value\" : \"Test after fix\"\n" + + " } ],\n" + + " \"dateOfBirth\" : \"1976/01/01\",\n" + + " \"referenceIdentityNumber\" : \"2345235252352353523\",\n" + + " \"individualBiometrics\" : {\n" + + " \"format\" : \"cbeff\",\n" + + " \"version\" : 1.0,\n" + + " \"value\" : \"individualBiometrics_bio_CBEFF\"\n" + + " },\n" + + " \"IDSchemaVersion\" : \"0.1\",\n" + + " \"province\" : [ {\n" + + " \"language\" : \"eng\",\n" + + " \"value\" : \"Kenitra\"\n" + + " }, {\n" + + " \"language\" : \"ara\",\n" + + " \"value\" : \"القنيطرة\"\n" + + " } ],\n" + + " \"zone\" : [ {\n" + + " \"language\" : \"eng\",\n" + + " \"value\" : \"Assam\"\n" + + " }, {\n" + + " \"language\" : \"ara\",\n" + + " \"value\" : \"العصام\"\n" + + " } ],\n" + + " \"phone\" : \"9606139887\",\n" + + " \"addressLine1\" : [ {\n" + + " \"language\" : \"eng\",\n" + + " \"value\" : \"asdadsfas\"\n" + + " }, {\n" + + " \"language\" : \"ara\",\n" + + " \"value\" : \"asdadsfas\"\n" + + " } ],\n" + + " \"addressLine2\" : [ {\n" + + " \"language\" : \"eng\",\n" + + " \"value\" : \"qqwqrqwrw\"\n" + + " }, {\n" + + " \"language\" : \"ara\",\n" + + " \"value\" : \"qqwqrqwrw\"\n" + + " } ],\n" + + " \"residenceStatus\" : [ {\n" + + " \"language\" : \"eng\",\n" + + " \"value\" : \"Non-Foreigner\"\n" + + " }, {\n" + + " \"language\" : \"ara\",\n" + + " \"value\" : \"غير أجنبي\"\n" + + " } ],\n" + + " \"addressLine3\" : [ {\n" + + " \"language\" : \"eng\",\n" + + " \"value\" : \"wfwfwef\"\n" + + " }, {\n" + + " \"language\" : \"ara\",\n" + + " \"value\" : \"wfwfwef\"\n" + + " } ],\n" + + " \"region\" : [ {\n" + + " \"language\" : \"eng\",\n" + + " \"value\" : \"Rabat Sale Kenitra\"\n" + + " }, {\n" + + " \"language\" : \"ara\",\n" + + " \"value\" : \"جهة الرباط سلا القنيطرة\"\n" + + " } ],\n" + + " \"email\" : \"niyati.swami@technoforte.co.in\"\n" + + "} } "; + + keyValueMap = new LinkedHashMap<>(); + keyValueMap.put("email", "niyati.swami@technoforte.co.in"); + keyValueMap.put("phone", "9606139887"); + keyValueMap.put("fullName", "[ {\r\n \"language\" : \"eng\",\r\n \"value\" : \"Test after fix\"\r\n}, {\r\n \"language\" : \"ara\",\r\n \"value\" : \"Test after fix\"\r\n} ]"); + keyValueMap.put("IDSchemaVersion", "0.1"); + keyValueMap.put(biometricFieldName, "{\r\n \"format\" : \"cbeff\",\r\n \"version\" : 1.0,\r\n \"value\" : \"individualBiometrics_bio_CBEFF\"\r\n}"); + keyValueMap.put(docName, "{\r\n \"value\" : \"proofOfIdentity\",\r\n \"type\" : \"DOC003\",\r\n \"format\" : \"jpg\"\r\n}"); + + + Map finalMap = new LinkedHashMap<>(); + finalMap.put("identity", keyValueMap); + + ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes()); + + MockitoAnnotations.initMocks(this); + ReflectionTestUtils.setField(iPacketReader, "packetNames", "id,evidence,optional"); + when(packetKeeper.getPacket(any())).thenReturn(packet); + + PowerMockito.mockStatic(ZipUtils.class); + when(ZipUtils.unzipAndGetFile(any(), anyString())).thenReturn(bis); + PowerMockito.mockStatic(IOUtils.class); + when(IOUtils.toByteArray(any(InputStream.class))).thenReturn(str.getBytes()); + + when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(finalMap); + when(idSchemaUtils.getSource(any(), any())).thenReturn("id"); + when(idSchemaUtils.getIdschemaVersionFromMappingJson()).thenReturn("0.1"); + + } + + @Test + public void validatePacketTest() throws JsonProcessingException, PacketKeeperException, InvalidIdSchemaException, IdObjectIOException, IOException, NoSuchAlgorithmException, JSONException, IdObjectValidationFailedException { + when(packetValidator.validate(anyString(), anyString(), anyString())).thenReturn(true); + boolean result = iPacketReader.validatePacket("id", "source", "process"); + + assertTrue("Should be true", result); + } + + @Test(expected = PacketValidationFailureException.class) + public void validatePacketExceptionTest() throws JsonProcessingException, PacketKeeperException, InvalidIdSchemaException, IdObjectValidationFailedException, IdObjectIOException, IOException, NoSuchAlgorithmException, JSONException { + when(packetValidator.validate(anyString(), anyString(), anyString())).thenThrow(new IOException("exception")); + boolean result = iPacketReader.validatePacket("id", "source","process"); + + } + + @Test + public void getAllTest() { + Map result = iPacketReader.getAll("id", "source", "process"); + + assertTrue("Should be true", result.size() == 6); + } + + @Test(expected = GetAllIdentityException.class) + public void getAllExceptionTest() throws IOException { + when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(null); + + Map result = iPacketReader.getAll("id", "source", "process"); + } + + @Test(expected = GetAllIdentityException.class) + public void getAllExceptionTest2() throws JsonProcessingException, IOException { + PowerMockito.mockStatic(JsonUtils.class); + Map keyValueMap = new LinkedHashMap<>(); + keyValueMap.put("email", new JSONObject(new LinkedHashMap())); + Map finalMap = new LinkedHashMap<>(); + finalMap.put("identity", keyValueMap); + when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(finalMap); + + when(JsonUtils.javaObjectToJsonString(anyObject())).thenThrow(new JsonProcessingException("errormessage")); + Map result = iPacketReader.getAll("id", "source", "process"); + } + + @Test + public void getFieldTest() { + String result = iPacketReader.getField("id", "phone", "source","process"); + + assertTrue("Should be true", result.equals("9606139887")); + } + + @Test + public void getFieldsTest() { + List list = Lists.newArrayList("phone", "email"); + + Map result = iPacketReader.getFields("id", list, "source", "process"); + + assertTrue("Should be true", result.size() == 2); + } + + @Test + public void getDocumentTest() { + List list = Lists.newArrayList("phone", "email"); + when(packetReader.getField("id","0.1","source","process",false)).thenReturn("0.1"); + when(packetReader.getField("id",docName,"source","process",false)).thenReturn(keyValueMap.get(docName).toString()); + + Document result = iPacketReader.getDocument("id", docName, "source", "process"); + + assertTrue("Should be true", result.getDocument() != null); + } + + @Test(expected = GetDocumentException.class) + public void getDocumentExceptionTest() throws IOException { + List list = Lists.newArrayList("phone", "email"); + when(packetReader.getField("id","0.1","source","process",false)).thenReturn("0.1"); + when(packetReader.getField("id",docName,"source","process",false)).thenReturn(keyValueMap.get(docName).toString()); + + when(idSchemaUtils.getSource(any(), any())).thenThrow(new IOException("exception")); + + Document result = iPacketReader.getDocument("id", docName, "source", "process"); + + } + + @Test + public void getBiometricsTest() throws Exception { + BIR birType = new BIR(); + BIR bir1 = new BIR(); + BDBInfo bdbInfoType1 = new BDBInfo(); + RegistryIDType registryIDType = new RegistryIDType(); + registryIDType.setOrganization("Mosip"); + registryIDType.setType("257"); + QualityType quality = new QualityType(); + quality.setAlgorithm(registryIDType); + quality.setScore(90l); + bdbInfoType1.setQuality(quality); + BiometricType singleType1 = BiometricType .FINGER; + List singleTypeList1 = new ArrayList<>(); + singleTypeList1.add(singleType1); + List subtype1 = new ArrayList<>(Arrays.asList("Left", "RingFinger")); + bdbInfoType1.setSubtype(subtype1); + bdbInfoType1.setType(singleTypeList1); + bdbInfoType1.setFormat(registryIDType); + bir1.setBdbInfo(bdbInfoType1); + BIR bir2 = new BIR(); + bir2.setBdbInfo(bdbInfoType1); + + PowerMockito.mockStatic(CbeffValidator.class); + birType.setBirs(Lists.newArrayList(bir1, bir2)); + when(CbeffValidator.getBIRFromXML(any())).thenReturn(birType); + + when(packetReader.getField("id",biometricFieldName,"source","process",false)).thenReturn(keyValueMap.get(biometricFieldName).toString()); + + BiometricRecord result = iPacketReader.getBiometric("id", biometricFieldName, null, "source", "process"); + + assertTrue("Should be true", result.getSegments().size() == 2); + } + + @Test + @Ignore + public void getBiometricsExceptionTest() throws Exception { + List list = Lists.newArrayList("phone", "email"); + BIR birType = new BIR(); + + BIR bir1 = new BIR(); + BDBInfo bdbInfoType1 = new BDBInfo(); + RegistryIDType registryIDType = new RegistryIDType(); + registryIDType.setOrganization("Mosip"); + registryIDType.setType("257"); + QualityType quality = new QualityType(); + quality.setAlgorithm(registryIDType); + quality.setScore(90l); + bdbInfoType1.setQuality(quality); + BiometricType singleType1 = BiometricType.FINGER; + List singleTypeList1 = new ArrayList<>(); + singleTypeList1.add(singleType1); + List subtype1 = new ArrayList<>(Arrays.asList("Left", "RingFinger")); + bdbInfoType1.setSubtype(subtype1); + bdbInfoType1.setType(singleTypeList1); + bdbInfoType1.setFormat(registryIDType); + bir1.setBdbInfo(bdbInfoType1); + BIR bir2 = new BIR(); + bir2.setBdbInfo(bdbInfoType1); + birType.setBirs(Lists.newArrayList(bir1, bir2)); + + Map keyValueMap = new LinkedHashMap<>(); + keyValueMap.put("operationsData", "[{\n \"label\\\" : \\\"officerId\\\",\n \\\"value\\\" : \\\"110012\\\"\n}, {\n \\\"label\\\" : \\\"officerBiometricFileName\\\",\n \\\"value\\\" : \\\"officer_bio_cbeff\\\"\n}, {\n \\\"label\\\" : \\\"supervisorId\\\",\n \\\"value\\\" : null\n}, {\n \\\"label\\\" : \\\"supervisorBiometricFileName\\\",\n \\\"value\\\" : null\n}, {\n \\\"label\\\" : \\\"supervisorPassword\\\",\n \\\"value\\\" : \\\"false\\\"\n}, {\n \\\"label\\\" : \\\"officerPassword\\\",\n \\\"value\\\" : \\\"true\\\"\n}, {\n \\\"label\\\" : \\\"supervisorPIN\\\",\n \\\"value\\\" : null\n}, {\n \\\"label\\\" : \\\"officerPIN\\\",\n \\\"value\\\" : null\n}]"); + keyValueMap.put("metaData", "[{\r\n \"label\" : \"registrationId\",\r\n \"value\" : \"10001100770000320200720092256\"\r\n}, {\r\n \"label\" : \"creationDate\",\r\n \"value\" : \"2020-07-20T14:54:49.823Z\"\r\n}, {\r\n \"label\" : \"Registration Client Version Number\",\r\n \"value\" : \"1.0.10\"\r\n}, {\r\n \"label\" : \"registrationType\",\r\n \"value\" : \"New\"\r\n}, {\r\n \"label\" : \"preRegistrationId\",\r\n \"value\" : null\r\n}, {\r\n \"label\" : \"machineId\",\r\n \"value\" : \"10077\"\r\n}, {\r\n \"label\" : \"centerId\",\r\n \"value\" : \"10001\"\r\n}, {\r\n \"label\" : \"dongleId\",\r\n \"value\" : null\r\n}, {\r\n \"label\" : \"keyIndex\",\r\n \"value\" : \"4F:38:72:D9:F8:DB:94:E7:22:48:96:D0:91:01:6D:3C:64:90:2E:14:DC:D2:F8:14:1F:2A:A4:19:1A:BC:91:41\"\r\n}, {\r\n \"label\" : \"consentOfApplicant\",\r\n \"value\" : \"Yes} ]"); + Map finalMap = new LinkedHashMap<>(); + finalMap.put("identity", keyValueMap); + + when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(finalMap); + + PowerMockito.mockStatic(CbeffValidator.class); + when(CbeffValidator.getBIRFromXML(any())).thenReturn(birType); + + BiometricRecord result = iPacketReader.getBiometric("id", "officerBiometric", null, "source", "process"); + + assertTrue("Should be true", result.getSegments().size() == 2); + } + + @Test + public void getMetaInfoTest() throws IOException { + Map keyValueMap = new LinkedHashMap<>(); + keyValueMap.put("operationsData", "[{\n" + + "\t\"label\": \"officerId\",\n" + + "\t\"value\": \"110122\"\n" + + "}, {\n" + + "\t\"label\": \"officerBiometricFileName\",\n" + + "\t\"value\": \"officerBiometric\"\n" + + "}, {\n" + + "\t\"label\": \"supervisorId\",\n" + + "\t\"value\": null\n" + + "}, {\n" + + "\t\"label\": \"supervisorBiometricFileName\",\n" + + "\t\"value\": null\n" + + "}, {\n" + + "\t\"label\": \"supervisorPassword\",\n" + + "\t\"value\": \"false\"\n" + + "}, {\n" + + "\t\"label\": \"officerPassword\",\n" + + "\t\"value\": \"true\"\n" + + "}, {\n" + + "\t\"label\": \"supervisorPIN\",\n" + + "\t\"value\": null\n" + + "}, {\n" + + "\t\"label\": \"officerPIN\",\n" + + "\t\"value\": null\n" + + "}, {\n" + + "\t\"label\": \"supervisorOTPAuthentication\",\n" + + "\t\"value\": \"false\"\n" + + "}, {\n" + + "\t\"label\": \"officerOTPAuthentication\",\n" + + "\t\"value\": \"false\"\n" + + "}]"); + keyValueMap.put("metaData", "\"[ {\r\n \"label\" : \"registrationId\",\r\n \"value\" : \"10001100770000320200720092256\"\r\n}, {\r\n \"label\" : \"creationDate\",\r\n \"value\" : \"2020-07-20T14:54:49.823Z\"\r\n}, {\r\n \"label\" : \"Registration Client Version Number\",\r\n \"value\" : \"1.0.10\"\r\n}, {\r\n \"label\" : \"registrationType\",\r\n \"value\" : \"New\"\r\n}, {\r\n \"label\" : \"preRegistrationId\",\r\n \"value\" : null\r\n}, {\r\n \"label\" : \"machineId\",\r\n \"value\" : \"10077\"\r\n}, {\r\n \"label\" : \"centerId\",\r\n \"value\" : \"10001\"\r\n}, {\r\n \"label\" : \"dongleId\",\r\n \"value\" : null\r\n}, {\r\n \"label\" : \"keyIndex\",\r\n \"value\" : \"4F:38:72:D9:F8:DB:94:E7:22:48:96:D0:91:01:6D:3C:64:90:2E:14:DC:D2:F8:14:1F:2A:A4:19:1A:BC:91:41\"\r\n}, {\r\n \"label\" : \"consentOfApplicant\",\r\n \"value\" : \"Yes\"\r\n} ]\""); + Map finalMap = new LinkedHashMap<>(); + finalMap.put("identity", keyValueMap); + + when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(finalMap); + + Map result = iPacketReader.getMetaInfo("id", "source", "process"); + + assertTrue("Should be true", result.size() == 2); + } + + @Test + public void getAuditTest() throws IOException { + ReflectionTestUtils.setField(iPacketReader, "packetNames", "id"); + Map keyValueMap = new LinkedHashMap<>(); + keyValueMap.put("audit1", "audit1"); + keyValueMap.put("audit2", "audit2"); + List> finalMap = new ArrayList<>(); + finalMap.add(keyValueMap); + + when(objectMapper.readValue(anyString(), any(Class.class))).thenReturn(finalMap); + + List> result = iPacketReader.getAuditInfo("id", "source", "process"); + + assertTrue("Should be true", result.size() == 1); + } + + @Test(expected = GetAllMetaInfoException.class) + public void metaInfoExceptionTest() throws IOException { + when(objectMapper.readValue(anyString(), any(Class.class))).thenThrow(new IOException("exception")); + + iPacketReader.getMetaInfo("id", "source", "process"); + } + + @Test(expected = GetAllIdentityException.class) + public void getAuditExceptionTest() throws IOException { + when(objectMapper.readValue(anyString(), any(Class.class))).thenThrow(new IOException("exception")); + + iPacketReader.getAuditInfo("id", "source", "process"); + } + +} diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketServiceControllerAdvice.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketServiceControllerAdvice.java index 5574bc5c74..4fa43684ab 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketServiceControllerAdvice.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketServiceControllerAdvice.java @@ -17,12 +17,12 @@ public class PacketServiceControllerAdvice { @ExceptionHandler(BaseCheckedException.class) public ResponseEntity baseCheckedException(BaseCheckedException e) { - return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(getResponse(e.getErrorCode(), e.getMessage())); + return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(getResponse(e.getErrorCode(), e.getErrorText())); } @ExceptionHandler(BaseUncheckedException.class) public ResponseEntity baseUnCheckedException(BaseUncheckedException e) { - return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(getResponse(e.getErrorCode(), e.getMessage())); + return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(getResponse(e.getErrorCode(), e.getErrorText())); } private ResponseWrapper getResponse(String errorCode, String message) { diff --git a/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties b/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties index 8d7a186999..89ac215c39 100644 --- a/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties +++ b/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties @@ -9,7 +9,7 @@ server.port=8093 health.config.enabled=false server.servlet.path=/commons/v1/packetmanager config.server.file.storage.uri=${spring.cloud.config.uri}/*/${spring.profiles.active}/${spring.cloud.config.label}/ -registration.processor.identityjson=registration-processor-identity.json +registration.processor.identityjson=identity-mapping.json object.store.s3.use.account.as.bucketname=true spring.mvc.servlet.path=${server.servlet.path} diff --git a/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java b/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java index 1605047be4..b805d3d1b5 100644 --- a/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java +++ b/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java @@ -85,6 +85,8 @@ public class PacketManagerControllerTest { @Before public void setup() { MockitoAnnotations.initMocks(this); + Mockito.when(packetReaderService.getSourceAndProcess(any(),any(),any(),any())).thenReturn(new SourceProcessDto("source", "process")); + Mockito.when(packetReaderService.getSourceAndProcess(any(),any(),any())).thenReturn(new SourceProcessDto("source", "process")); } From dff1aa2a4194dcd5f7088cc44797db80dbd744a6 Mon Sep 17 00:00:00 2001 From: Rakshitha650 <76676196+Rakshitha650@users.noreply.github.com> Date: Fri, 10 Dec 2021 12:18:55 +0530 Subject: [PATCH 06/17] Added sonar_analysis --- .github/workflows/push_trigger.yml | 72 +++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 16 deletions(-) diff --git a/.github/workflows/push_trigger.yml b/.github/workflows/push_trigger.yml index f2c5de8d69..9a8440cbd9 100644 --- a/.github/workflows/push_trigger.yml +++ b/.github/workflows/push_trigger.yml @@ -66,20 +66,13 @@ jobs: name: release path: ./release.zip -# - name: Analyze with SonarCloud -# run: | -# cd commons-packet -# mvn -B -Dgpg.skip -DskipTests verify sonar:sonar -Dsonar.projectKey=mosip_${{ github.event.repository.name }} -Dsonar.organization=${{ secrets.ORG_KEY }} -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${{ secrets.SONAR_TOKEN }} -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} -# - uses: 8398a7/action-slack@v3 -# with: -# status: ${{ job.status }} -# fields: repo,message,commit,author,action,eventName,ref,workflow,job,took # selectable (default: repo,message) -# env: -# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} # required -# if: failure() # Pick up events even if the job fails or is canceled. + - uses: 8398a7/action-slack@v3 + with: + status: ${{ job.status }} + fields: repo,message,commit,author,action,eventName,ref,workflow,job,took # selectable (default: repo,message) + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} # required + if: failure() # Pick up events even if the job fails or is canceled. publish_to_nexus: runs-on: ubuntu-latest @@ -144,7 +137,6 @@ jobs: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} # required if: failure() # Pick up events even if the job fails or is canceled. - docker-commons-packet-service: needs: build @@ -200,4 +192,52 @@ jobs: fields: repo,message,commit,author,action,eventName,ref,workflow,job,took # selectable (default: repo,message) env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} # required - if: failure() # Pick up events even if the job fails or is canceled. \ No newline at end of file + if: failure() # Pick up events even if the job fails or is canceled. + + sonar_analysis: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + ref: ${{ github.ref }} + java-version: 11 + server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml + settings-path: ${{ github.workspace }} # location for the settings.xml file + + - name: Setup branch and env + run: | + # Strip git ref prefix from version + echo "BRANCH_NAME=$(echo ${{ github.ref }} | sed -e 's,.*/\(.*\),\1,')" >> $GITHUB_ENV + echo "GPG_TTY=$(tty)" >> $GITHUB_ENV + - uses: actions/cache@v1 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven-${{ env.BRANCH_NAME }} + + - name: Install xmllint + run: | + sudo apt-get update + sudo apt-get install libxml2-utils + + - name: Setup the settings file for ossrh server + run: echo " ossrh ${{secrets.ossrh_user}} ${{secrets.ossrh_secret}} ossrh true gpg2 ${{secrets.gpg_secret}} allow-snapshots true snapshots-repo https://oss.sonatype.org/content/repositories/snapshots false true releases-repo https://oss.sonatype.org/service/local/staging/deploy/maven2 true false sonar . https://sonarcloud.io false " > $GITHUB_WORKSPACE/settings.xml + + - name: Analyze with SonarCloud + run: | + cd commons-packet + mvn -B -Dgpg.skip -DskipTests verify sonar:sonar -Dsonar.projectKey=mosip_${{ github.event.repository.name }} -Dsonar.organization=${{ secrets.ORG_KEY }} -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${{ secrets.SONAR_TOKEN }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + - uses: 8398a7/action-slack@v3 + with: + status: ${{ job.status }} + fields: repo,message,commit,workflow,job # selectable (default: repo,message) + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_DEVOPS_WEBHOOK }} # required + if: failure() # Pick up events even if the job fails or is canceled. From 4b1da3670da9c628903c5231bc5effddefd19d4d Mon Sep 17 00:00:00 2001 From: Monobikash Das <43202165+MonobikashDas@users.noreply.github.com> Date: Thu, 30 Dec 2021 21:07:23 +0530 Subject: [PATCH 07/17] MOSIP-18450 : added exception for objects not available in minio (#37) * MOSIP-18450 : added exception for objects not available in minio * Added sonar_analysis * MOSIP-18910 : fixed refNumber issue in DocumentDto * MOSIP-18450 : added exception for objects not available in minio * MOSIP-18910 : fixed refNumber issue in DocumentDto * initial change * MOSIP-18450 : added exception for objects not available in minio * MOSIP-18910 : fixed refNumber issue in DocumentDto * initial change * MOSIP-18793 :Added afterburner + fixes Co-authored-by: Monobikash Das Co-authored-by: Rakshitha650 <76676196+Rakshitha650@users.noreply.github.com> Co-authored-by: Mandeep Dhiman <46880392+mandeepdhiman123@users.noreply.github.com> Co-authored-by: Admin --- commons-packet/commons-packet-manager/pom.xml | 5 + .../commons/packet/audit/AuditLogEntry.java | 1 - .../constants/PacketManagerConstants.java | 1 + .../constants/PacketUtilityErrorCodes.java | 105 ++-- .../ObjectDoesnotExistsException.java | 26 + .../impl/OfflinePacketCryptoServiceImpl.java | 26 +- .../impl/OnlinePacketCryptoServiceImpl.java | 25 +- .../commons/packet/impl/PacketReaderImpl.java | 6 +- .../commons/packet/impl/PacketWriterImpl.java | 2 +- .../commons/packet/keeper/PacketKeeper.java | 15 +- .../commons/packet/util/IdSchemaUtils.java | 1 - .../packet/test/facade/PacketReaderTest.java | 479 +++++++++--------- .../impl/OfflinePacketCryptoServiceTest.java | 2 +- .../impl/OnlinePacketCryptoServiceTest.java | 4 +- .../test/impl/PacketReaderImplTest.java | 2 +- .../packet/test/keeper/PacketKeeperTest.java | 3 +- .../config/PacketServiceConfig.java | 19 + .../packetmanager/dto/DocumentDto.java | 1 + .../service/PacketReaderService.java | 10 +- 19 files changed, 396 insertions(+), 337 deletions(-) create mode 100644 commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/exception/ObjectDoesnotExistsException.java create mode 100644 commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/PacketServiceConfig.java diff --git a/commons-packet/commons-packet-manager/pom.xml b/commons-packet/commons-packet-manager/pom.xml index b8efb959d1..ec293333f6 100644 --- a/commons-packet/commons-packet-manager/pom.xml +++ b/commons-packet/commons-packet-manager/pom.xml @@ -146,6 +146,11 @@ ${junit.version} test + + org.apache.commons + commons-collections4 + 4.4 + diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java index 2a266135c2..b846060655 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java @@ -30,7 +30,6 @@ public class AuditLogEntry { @Autowired @Lazy - @Qualifier("restTemplate") private RestTemplate restTemplate; @Autowired diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketManagerConstants.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketManagerConstants.java index ec2746a467..9d22232ff1 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketManagerConstants.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketManagerConstants.java @@ -86,6 +86,7 @@ public class PacketManagerConstants { public static final String VALUE = "value"; public static final String TYPE = "type"; public static final String FORMAT = "format"; + public static final String REFNUMBER = "refNumber"; public static final String IDSCHEMA_URL = "IDSCHEMA"; public static final String SCHEMA_JSON = "schemaJson"; diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketUtilityErrorCodes.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketUtilityErrorCodes.java index 30de54991f..586e69b0cb 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketUtilityErrorCodes.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketUtilityErrorCodes.java @@ -1,52 +1,53 @@ -package io.mosip.commons.packet.constants; - -public enum PacketUtilityErrorCodes { - - UNKNOWN_RESOURCE_EXCEPTION("KER-PUT-001", - "Unknown resource provided"), - FILE_NOT_FOUND_IN_DESTINATION("KER-PUT-002", "Unable to Find File in Destination Folder"), - PACKET_DECRYPTION_FAILURE_EXCEPTION("KER-PUT-003", "Packet decryption failed"), - API_NOT_ACCESSIBLE_EXCEPTION("KER-PUT-005", "API not accessible"), - SYS_IO_EXCEPTION("KER-PUT-004", "Unable to Find File in Destination Folder"), - GET_ALL_IDENTITY_EXCEPTION("KER-PUT-005", "Unable to fetch identity json from all sub packets"), - NO_AVAILABLE_PROVIDER("KER-PUT-006", "No available provider for given source and process"), - BIOMETRIC_FIELDNAME_NOT_FOUND("KER-PUT-007", "Biometric fieldname is not present inside packet"), - GET_ALL_METAINFO_EXCEPTION("KER-PUT-008", "Unable to fetch meta information from all sub packets"), - ZIP_PARSING_EXCEPTION("KER-PUT-009", "Unable to parse the zip"), - SIGNATURE_EXCEPTION("KER-PUT-010", "Failed to generate digital signature"), - DOCUMENT_EXCEPTION("KER-PUT-011", "Failed to get document"), - BIOMETRIC_EXCEPTION("KER-PUT-012", "Unable to get biometric"), - OS_ADAPTER_EXCEPTION("KER-PUT-013", "No Object store adapter found."), - PACKET_KEEPER_GET_ERROR("KER-PUT-014", "Packet keeper exception occured."), - PACKET_KEEPER_PUT_ERROR("KER-PUT-015", "Packet keeper exception occured."), - PACKET_KEEPER_GETMETA_ERROR("KER-PUT-016", "Packet keeper exception occured."), - PACKET_KEEPER_INTEGRITY_ERROR("KER-PUT-017", "Packet keeper exception occured."), - CRYPTO_EXCEPTION("KER-PUT-018", "No available crypto service exception."), - INTEGRITY_FAILURE("KER-PUT-019", "Packet Integrity check failed."), - PACKET_VALIDATION_FAILED("KER-PUT-020", "Packet Validation exception occured."), - TAGGING_FAILED("KER-PUT-021", "Failed to add tags."), - TAG_ALREADY_EXIST("KER-PUT-022", "Tag Already Exist."), - GET_TAG_EXCEPTION("KER-PUT-023","Failed to get tags"), - TAG_NOT_FOUND("KER-PUT-024", "Requested tag not present"), - SOURCE_NOT_PRESENT("KER-PUT-025", "Source not present in request."), - DELETE_TAGGING_FAILED("KER-PUT-026", "Failed to delete tags."); - - - - - private final String errorCode; - private final String errorMessage; - - private PacketUtilityErrorCodes(final String errorCode, final String errorMessage) { - this.errorCode = errorCode; - this.errorMessage = errorMessage; - } - - public String getErrorCode() { - return errorCode; - } - - public String getErrorMessage() { - return errorMessage; - } -} +package io.mosip.commons.packet.constants; + +public enum PacketUtilityErrorCodes { + + UNKNOWN_RESOURCE_EXCEPTION("KER-PUT-001", + "Unknown resource provided"), + FILE_NOT_FOUND_IN_DESTINATION("KER-PUT-002", "Unable to Find File in Destination Folder"), + PACKET_DECRYPTION_FAILURE_EXCEPTION("KER-PUT-003", "Packet decryption failed"), + API_NOT_ACCESSIBLE_EXCEPTION("KER-PUT-005", "API not accessible"), + SYS_IO_EXCEPTION("KER-PUT-004", "Unable to Find File in Destination Folder"), + GET_ALL_IDENTITY_EXCEPTION("KER-PUT-005", "Unable to fetch identity json from all sub packets"), + NO_AVAILABLE_PROVIDER("KER-PUT-006", "No available provider for given source and process"), + BIOMETRIC_FIELDNAME_NOT_FOUND("KER-PUT-007", "Biometric fieldname is not present inside packet"), + GET_ALL_METAINFO_EXCEPTION("KER-PUT-008", "Unable to fetch meta information from all sub packets"), + ZIP_PARSING_EXCEPTION("KER-PUT-009", "Unable to parse the zip"), + SIGNATURE_EXCEPTION("KER-PUT-010", "Failed to generate digital signature"), + DOCUMENT_EXCEPTION("KER-PUT-011", "Failed to get document"), + BIOMETRIC_EXCEPTION("KER-PUT-012", "Unable to get biometric"), + OS_ADAPTER_EXCEPTION("KER-PUT-013", "No Object store adapter found."), + PACKET_KEEPER_GET_ERROR("KER-PUT-014", "Packet keeper exception occured."), + PACKET_KEEPER_PUT_ERROR("KER-PUT-015", "Packet keeper exception occured."), + PACKET_KEEPER_GETMETA_ERROR("KER-PUT-016", "Packet keeper exception occured."), + PACKET_KEEPER_INTEGRITY_ERROR("KER-PUT-017", "Packet keeper exception occured."), + CRYPTO_EXCEPTION("KER-PUT-018", "No available crypto service exception."), + INTEGRITY_FAILURE("KER-PUT-019", "Packet Integrity check failed."), + PACKET_VALIDATION_FAILED("KER-PUT-020", "Packet Validation exception occured."), + TAGGING_FAILED("KER-PUT-021", "Failed to add tags."), + TAG_ALREADY_EXIST("KER-PUT-022", "Tag Already Exist."), + GET_TAG_EXCEPTION("KER-PUT-023","Failed to get tags"), + TAG_NOT_FOUND("KER-PUT-024", "Requested tag not present"), + SOURCE_NOT_PRESENT("KER-PUT-025", "Invalid source or process."), + DELETE_TAGGING_FAILED("KER-PUT-026", "Failed to delete tags."), + OBJECT_DOESNOT_EXISTS("KER-PUT-027", "Object doesnot exists."),; + + + + + private final String errorCode; + private final String errorMessage; + + private PacketUtilityErrorCodes(final String errorCode, final String errorMessage) { + this.errorCode = errorCode; + this.errorMessage = errorMessage; + } + + public String getErrorCode() { + return errorCode; + } + + public String getErrorMessage() { + return errorMessage; + } +} diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/exception/ObjectDoesnotExistsException.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/exception/ObjectDoesnotExistsException.java new file mode 100644 index 0000000000..bb207eeb39 --- /dev/null +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/exception/ObjectDoesnotExistsException.java @@ -0,0 +1,26 @@ +package io.mosip.commons.packet.exception; + +import io.mosip.commons.packet.constants.PacketUtilityErrorCodes; +import io.mosip.kernel.core.exception.BaseUncheckedException; + +public class ObjectDoesnotExistsException extends BaseUncheckedException { + + public ObjectDoesnotExistsException() { + super(PacketUtilityErrorCodes.OBJECT_DOESNOT_EXISTS.getErrorCode(), + PacketUtilityErrorCodes.OBJECT_DOESNOT_EXISTS.getErrorMessage()); + } + + public ObjectDoesnotExistsException(String message) { + super(PacketUtilityErrorCodes.OBJECT_DOESNOT_EXISTS.getErrorCode(), + message); + } + + public ObjectDoesnotExistsException(Throwable e) { + super(PacketUtilityErrorCodes.OBJECT_DOESNOT_EXISTS.getErrorCode(), + PacketUtilityErrorCodes.OBJECT_DOESNOT_EXISTS.getErrorMessage(), e); + } + + public ObjectDoesnotExistsException(String errorMessage, Throwable t) { + super(PacketUtilityErrorCodes.OBJECT_DOESNOT_EXISTS.getErrorCode(), errorMessage, t); + } +} diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OfflinePacketCryptoServiceImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OfflinePacketCryptoServiceImpl.java index 8ec3fdcd05..73e7a4b843 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OfflinePacketCryptoServiceImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OfflinePacketCryptoServiceImpl.java @@ -60,29 +60,28 @@ public class OfflinePacketCryptoServiceImpl implements IPacketCryptoService { @Override public byte[] sign(byte[] packet) { TpmSignRequestDto signRequest = new TpmSignRequestDto(); - signRequest.setData(CryptoUtil.encodeBase64(packet)); - return CryptoUtil.decodeBase64(getTpmCryptoService().csSign(signRequest).getData()); + signRequest.setData(CryptoUtil.encodeToURLSafeBase64(packet)); + return CryptoUtil.decodeURLSafeBase64(getTpmCryptoService().csSign(signRequest).getData()); } @Override public byte[] encrypt(String refId, byte[] packet) { - String packetString = CryptoUtil.encodeBase64String(packet); + String packetString = CryptoUtil.encodeToURLSafeBase64(packet); CryptomanagerRequestDto cryptomanagerRequestDto = new CryptomanagerRequestDto(); cryptomanagerRequestDto.setApplicationId(APPLICATION_ID); cryptomanagerRequestDto.setData(packetString); cryptomanagerRequestDto.setReferenceId(refId); - cryptomanagerRequestDto.setPrependThumbprint(isPrependThumbprintEnabled); SecureRandom sRandom = new SecureRandom(); byte[] nonce = new byte[CryptomanagerConstant.GCM_NONCE_LENGTH]; byte[] aad = new byte[CryptomanagerConstant.GCM_AAD_LENGTH]; sRandom.nextBytes(nonce); sRandom.nextBytes(aad); - cryptomanagerRequestDto.setAad(CryptoUtil.encodeBase64String(aad)); - cryptomanagerRequestDto.setSalt(CryptoUtil.encodeBase64String(nonce)); + cryptomanagerRequestDto.setAad(CryptoUtil.encodeToURLSafeBase64(aad)); + cryptomanagerRequestDto.setSalt(CryptoUtil.encodeToURLSafeBase64(nonce)); cryptomanagerRequestDto.setTimeStamp(DateUtils.getUTCCurrentDateTime()); - byte[] encryptedData = CryptoUtil.decodeBase64(getCryptomanagerService().encrypt(cryptomanagerRequestDto).getData()); + byte[] encryptedData = CryptoUtil.decodeURLSafeBase64(getCryptomanagerService().encrypt(cryptomanagerRequestDto).getData()); return EncryptionUtil.mergeEncryptedData(encryptedData, nonce, aad); } @@ -97,20 +96,19 @@ public byte[] decrypt(String refId, byte[] packet) { CryptomanagerRequestDto cryptomanagerRequestDto = new CryptomanagerRequestDto(); cryptomanagerRequestDto.setApplicationId(APPLICATION_ID); cryptomanagerRequestDto.setReferenceId(refId); - cryptomanagerRequestDto.setAad(CryptoUtil.encodeBase64String(aad)); - cryptomanagerRequestDto.setSalt(CryptoUtil.encodeBase64String(nonce)); - cryptomanagerRequestDto.setData(CryptoUtil.encodeBase64String(encryptedData)); - cryptomanagerRequestDto.setPrependThumbprint(isPrependThumbprintEnabled); + cryptomanagerRequestDto.setAad(CryptoUtil.encodeToURLSafeBase64(aad)); + cryptomanagerRequestDto.setSalt(CryptoUtil.encodeToURLSafeBase64(nonce)); + cryptomanagerRequestDto.setData(CryptoUtil.encodeToURLSafeBase64(encryptedData)); cryptomanagerRequestDto.setTimeStamp(DateUtils.getUTCCurrentDateTime()); - return CryptoUtil.decodeBase64(getCryptomanagerService().decrypt(cryptomanagerRequestDto).getData()); + return CryptoUtil.decodeURLSafeBase64(getCryptomanagerService().decrypt(cryptomanagerRequestDto).getData()); } @Override public boolean verify(String machineId, byte[] packet, byte[] signature) { TpmSignVerifyRequestDto tpmSignVerifyRequestDto = new TpmSignVerifyRequestDto(); - tpmSignVerifyRequestDto.setData(CryptoUtil.encodeBase64(packet)); - tpmSignVerifyRequestDto.setSignature(CryptoUtil.encodeBase64(signature)); + tpmSignVerifyRequestDto.setData(CryptoUtil.encodeToURLSafeBase64(packet)); + tpmSignVerifyRequestDto.setSignature(CryptoUtil.encodeToURLSafeBase64(signature)); //TODO - get public key based on machine Id //tpmSignVerifyRequestDto.setPublicKey(<>); TpmSignVerifyResponseDto tpmSignVerifyResponseDto = getTpmCryptoService().csVerify(tpmSignVerifyRequestDto); diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java index c38ad02a82..3e2556eb33 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java @@ -65,7 +65,6 @@ public class OnlinePacketCryptoServiceImpl implements IPacketCryptoService { private boolean isPrependThumbprintEnabled; @Autowired - @Qualifier("restTemplate") private RestTemplate restTemplate; @Autowired @@ -88,7 +87,7 @@ public byte[] sign(byte[] packet) { try { TpmSignRequestDto dto = new TpmSignRequestDto(); - dto.setData(CryptoUtil.encodeBase64(packet)); + dto.setData(CryptoUtil.encodeToURLSafeBase64(packet)); RequestWrapper request = new RequestWrapper<>(); request.setRequest(dto); request.setMetadata(null); @@ -101,7 +100,7 @@ public byte[] sign(byte[] packet) { String.class); LinkedHashMap responseMap = (LinkedHashMap) mapper.readValue(response.getBody(), LinkedHashMap.class).get("response"); if (responseMap != null && responseMap.size() > 0) - return CryptoUtil.decodeBase64((String) responseMap.get("data")); + return CryptoUtil.decodeURLSafeBase64((String) responseMap.get("data")); else throw new SignatureException(); } catch (IOException e) { @@ -116,7 +115,7 @@ public byte[] encrypt(String refId, byte[] packet) { byte[] encryptedPacket = null; try { - String packetString = CryptoUtil.encodeBase64String(packet); + String packetString = CryptoUtil.encodeToURLSafeBase64(packet); CryptomanagerRequestDto cryptomanagerRequestDto = new CryptomanagerRequestDto(); RequestWrapper request = new RequestWrapper<>(); cryptomanagerRequestDto.setApplicationId(APPLICATION_ID); @@ -129,8 +128,8 @@ public byte[] encrypt(String refId, byte[] packet) { byte[] aad = new byte[CryptomanagerConstant.GCM_AAD_LENGTH]; sRandom.nextBytes(nonce); sRandom.nextBytes(aad); - cryptomanagerRequestDto.setAad(CryptoUtil.encodeBase64String(aad)); - cryptomanagerRequestDto.setSalt(CryptoUtil.encodeBase64String(nonce)); + cryptomanagerRequestDto.setAad(CryptoUtil.encodeToURLSafeBase64(aad)); + cryptomanagerRequestDto.setSalt(CryptoUtil.encodeToURLSafeBase64(nonce)); cryptomanagerRequestDto.setTimeStamp(DateUtils.getUTCCurrentDateTime()); request.setId(DECRYPT_SERVICE_ID); @@ -154,7 +153,7 @@ public byte[] encrypt(String refId, byte[] packet) { "Packet encryption failure message : " + error.getMessage()); throw new PacketDecryptionFailureException(error.getMessage()); } - byte[] encryptedData = CryptoUtil.decodeBase64(responseObject.getResponse().getData()); + byte[] encryptedData = CryptoUtil.decodeURLSafeBase64(responseObject.getResponse().getData()); encryptedPacket = EncryptionUtil.mergeEncryptedData(encryptedData, nonce, aad); LOGGER.info(PacketManagerLogger.SESSIONID, PacketManagerLogger.REFERENCEID, refId, "Successfully encrypted Packet"); @@ -197,9 +196,9 @@ public byte[] decrypt(String refId, byte[] packet) { CryptomanagerConstant.GCM_NONCE_LENGTH + CryptomanagerConstant.GCM_AAD_LENGTH); byte[] encryptedData = Arrays.copyOfRange(packet, CryptomanagerConstant.GCM_NONCE_LENGTH + CryptomanagerConstant.GCM_AAD_LENGTH, packet.length); - cryptomanagerRequestDto.setAad(CryptoUtil.encodeBase64String(aad)); - cryptomanagerRequestDto.setSalt(CryptoUtil.encodeBase64String(nonce)); - cryptomanagerRequestDto.setData(CryptoUtil.encodeBase64String(encryptedData)); + cryptomanagerRequestDto.setAad(CryptoUtil.encodeToURLSafeBase64(aad)); + cryptomanagerRequestDto.setSalt(CryptoUtil.encodeToURLSafeBase64(nonce)); + cryptomanagerRequestDto.setData(CryptoUtil.encodeToURLSafeBase64(encryptedData)); cryptomanagerRequestDto.setPrependThumbprint(isPrependThumbprintEnabled); cryptomanagerRequestDto.setTimeStamp(DateUtils.getUTCCurrentDateTime()); @@ -226,7 +225,7 @@ public byte[] decrypt(String refId, byte[] packet) { "Error message : " + error.getMessage()); throw new PacketDecryptionFailureException(error.getMessage()); } - decryptedPacket = CryptoUtil.decodeBase64(responseObject.getResponse().getData()); + decryptedPacket = CryptoUtil.decodeURLSafeBase64(responseObject.getResponse().getData()); LOGGER.info(PacketManagerLogger.SESSIONID, PacketManagerLogger.REFERENCEID, refId, "Successfully decrypted Packet"); } catch (IOException e) { @@ -259,8 +258,8 @@ public boolean verify(String refId, byte[] packet, byte[] signature) { try { String publicKey=getPublicKey(refId); TpmSignVerifyRequestDto dto = new TpmSignVerifyRequestDto(); - dto.setData(CryptoUtil.encodeBase64(packet)); - dto.setSignature(CryptoUtil.encodeBase64(signature)); + dto.setData(CryptoUtil.encodeToURLSafeBase64(packet)); + dto.setSignature(CryptoUtil.encodeToURLSafeBase64(signature)); dto.setPublicKey(publicKey); RequestWrapper request = new RequestWrapper<>(); request.setRequest(dto); diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java index 51cc7d04e1..b259ef9653 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java @@ -5,6 +5,7 @@ import static io.mosip.commons.packet.constants.PacketManagerConstants.IDENTITY; import static io.mosip.commons.packet.constants.PacketManagerConstants.LABEL; import static io.mosip.commons.packet.constants.PacketManagerConstants.META_INFO_OPERATIONS_DATA; +import static io.mosip.commons.packet.constants.PacketManagerConstants.REFNUMBER; import static io.mosip.commons.packet.constants.PacketManagerConstants.TYPE; import static io.mosip.commons.packet.constants.PacketManagerConstants.VALUE; @@ -215,8 +216,9 @@ public Document getDocument(String id, String documentName, String source, Strin Document document = new Document(); document.setDocument(IOUtils.toByteArray(documentStream)); document.setValue(value); - document.setType(documentMap.get(TYPE) != null ? documentMap.get(TYPE).toString() : null); - document.setFormat(documentMap.get(FORMAT) != null ? documentMap.get(FORMAT).toString() : null); + document.setType(documentMap.has(TYPE) ? documentMap.get(TYPE).toString() : null); + document.setFormat(documentMap.has(FORMAT) ? documentMap.get(FORMAT).toString() : null); + document.setRefNumber(documentMap.has(REFNUMBER) ? documentMap.get(REFNUMBER).toString() : null); return document; } } diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketWriterImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketWriterImpl.java index ed3b66b75b..ceb1f86f13 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketWriterImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketWriterImpl.java @@ -1,6 +1,5 @@ package io.mosip.commons.packet.impl; -import com.google.common.collect.Lists; import io.mosip.commons.packet.constants.ErrorCode; import io.mosip.commons.packet.constants.LoggerFileConstant; import io.mosip.commons.packet.constants.PacketManagerConstants; @@ -23,6 +22,7 @@ import io.mosip.kernel.core.util.JsonUtils; import io.mosip.kernel.core.util.StringUtils; import io.mosip.kernel.core.util.exception.JsonProcessingException; +import org.assertj.core.util.Lists; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/keeper/PacketKeeper.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/keeper/PacketKeeper.java index 3ab51ee7cb..6d6ea1e45c 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/keeper/PacketKeeper.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/keeper/PacketKeeper.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; +import io.mosip.commons.packet.exception.ObjectDoesnotExistsException; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -45,6 +46,8 @@ public class PacketKeeper { * The reg proc logger. */ private static Logger LOGGER = PacketManagerLogger.getLogger(PacketKeeper.class); + private static final String OBJECT_DOESNOT_EXISTS = "The specified key does not exist"; + private static final String STATUS_404 = "Status Code: 404; Error Code: NoSuchKey"; @Value("${packet.manager.account.name}") private String PACKET_MANAGER_ACCOUNT; @@ -96,7 +99,7 @@ public class PacketKeeper { * @return : boolean */ public boolean checkIntegrity(PacketInfo packetInfo, byte[] encryptedSubPacket) throws NoSuchAlgorithmException { - String hash = CryptoUtil.encodeBase64(HMACUtils2.generateHash(encryptedSubPacket)); + String hash = CryptoUtil.encodeToURLSafeBase64(HMACUtils2.generateHash(encryptedSubPacket)); boolean result = hash.equals(packetInfo.getEncryptedHash()); LOGGER.info(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, getName(packetInfo.getId(), packetInfo.getPacketName()), "Integrity check : " + result); @@ -115,7 +118,7 @@ public boolean checkSignature(Packet packet, byte[] encryptedSubPacket) throws N boolean result = disablePacketSignatureVerification ? true : getCryptoService().verify(helper.getRefId( packet.getPacketInfo().getId(), packet.getPacketInfo().getRefId()), packet.getPacket() - , CryptoUtil.decodeBase64(packet.getPacketInfo().getSignature())); + , CryptoUtil.decodeURLSafeBase64(packet.getPacketInfo().getSignature())); if (result) result = checkIntegrity(packet.getPacketInfo(), encryptedSubPacket); LOGGER.info(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, @@ -164,7 +167,9 @@ public Packet getPacket(PacketInfo packetInfo) throws PacketKeeperException { return packet; } catch (Exception e) { LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, packetInfo.getId(), ExceptionUtils.getStackTrace(e)); - if (e instanceof BaseCheckedException) { + if (e.getMessage() != null && e.getMessage().contains(OBJECT_DOESNOT_EXISTS) && e.getMessage().contains(STATUS_404)) + throw new ObjectDoesnotExistsException(); + else if (e instanceof BaseCheckedException) { BaseCheckedException ex = (BaseCheckedException) e; throw new PacketKeeperException(ex.getErrorCode(), ex.getMessage()); } @@ -196,9 +201,9 @@ public PacketInfo putPacket(Packet packet) throws PacketKeeperException { if (response) { PacketInfo packetInfo = packet.getPacketInfo(); // sign encrypted packet - packetInfo.setSignature(CryptoUtil.encodeBase64(getCryptoService().sign(packet.getPacket()))); + packetInfo.setSignature(CryptoUtil.encodeToURLSafeBase64(getCryptoService().sign(packet.getPacket()))); // generate encrypted packet hash - packetInfo.setEncryptedHash(CryptoUtil.encodeBase64(HMACUtils2.generateHash(encryptedSubPacket))); + packetInfo.setEncryptedHash(CryptoUtil.encodeToURLSafeBase64(HMACUtils2.generateHash(encryptedSubPacket))); Map metaMap = PacketManagerHelper.getMetaMap(packetInfo); metaMap = getAdapter().addObjectMetaData(PACKET_MANAGER_ACCOUNT, packet.getPacketInfo().getId(), packet.getPacketInfo().getSource(), packet.getPacketInfo().getProcess(), packet.getPacketInfo().getPacketName(), metaMap); diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/IdSchemaUtils.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/IdSchemaUtils.java index 03939c002b..7f883ccc84 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/IdSchemaUtils.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/IdSchemaUtils.java @@ -84,7 +84,6 @@ public class IdSchemaUtils { private ObjectMapper objMapper; @Autowired - @Qualifier("restTemplate") private RestTemplate restTemplate; diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/facade/PacketReaderTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/facade/PacketReaderTest.java index 4569603f50..4389440049 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/facade/PacketReaderTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/facade/PacketReaderTest.java @@ -1,240 +1,239 @@ -package io.mosip.commons.packet.test.facade; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyList; -import static org.mockito.ArgumentMatchers.anyString; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.springframework.test.util.ReflectionTestUtils; - -import com.google.common.collect.Lists; - -import io.mosip.commons.khazana.dto.ObjectDto; -import io.mosip.commons.packet.dto.Document; -import io.mosip.commons.packet.exception.NoAvailableProviderException; -import io.mosip.commons.packet.facade.PacketReader; -import io.mosip.commons.packet.impl.PacketReaderImpl; -import io.mosip.commons.packet.keeper.PacketKeeper; -import io.mosip.commons.packet.spi.IPacketReader; -import io.mosip.commons.packet.util.PacketHelper; -import io.mosip.kernel.biometrics.constant.BiometricType; -import io.mosip.kernel.biometrics.constant.QualityType; -import io.mosip.kernel.biometrics.entities.BDBInfo; -import io.mosip.kernel.biometrics.entities.BIR; -import io.mosip.kernel.biometrics.entities.BiometricRecord; -import io.mosip.kernel.biometrics.entities.RegistryIDType; - -@RunWith(PowerMockRunner.class) -@PrepareForTest({PacketHelper.class}) -@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*"}) -public class PacketReaderTest { - - @InjectMocks - private PacketReader packetReader = new PacketReader(); - - @Mock - private PacketReaderImpl packetReaderProvider; - - private Map allFields; - - private static final String source = "reg-client"; - private static final String process = "NEW"; - private static final String id = "110111101120191111121111"; - - @Mock - private PacketKeeper packetKeeper; - - @Before - public void setup() { - PowerMockito.mockStatic(PacketHelper.class); - PowerMockito.when(PacketHelper.isSourceAndProcessPresent(anyString(),anyString(),anyString(),any())).thenReturn(true); - List referenceReaderProviders = new ArrayList<>(); - referenceReaderProviders.add(packetReaderProvider); - ReflectionTestUtils.setField(packetReader, "referenceReaderProviders", referenceReaderProviders); - allFields = new HashMap<>(); - allFields.put("name", "mono"); - allFields.put("email", "mono@mono.com"); - allFields.put("phone", "1234567"); - - Mockito.when(packetReaderProvider.getAll(anyString(), anyString(), anyString())).thenReturn(allFields); - - } - - @Test - public void testGetFieldWithBypassCache() { - String field = "name"; - Mockito.when(packetReaderProvider.getField(anyString(), anyString(), anyString(), anyString())).thenReturn(field); - - String result = packetReader.getField(id, field, source, process, true); - - assertTrue(result == field); - } - - @Test - public void testGetField() { - String field = "name"; - - String result = packetReader.getField(id, field, source, process, false); - - assertTrue(result.equals(allFields.get("name"))); - } - - @Test - public void testGetFields() { - String field = "name"; - List fieldList = Lists.newArrayList(field); - Map fieldMap = new HashMap<>(); - fieldMap.put(field, field); - Mockito.when(packetReaderProvider.getFields(anyString(), anyList(), anyString(), anyString())).thenReturn(fieldMap); - - Map result = packetReader.getFields(id, fieldList, source, process, true); - - assertTrue(result.size() == 1); - } - - @Test - public void testGetFieldsBypassCache() { - String field = "name"; - List fieldList = Lists.newArrayList(field); - Map fieldMap = new HashMap<>(); - fieldMap.put(field, field); - Mockito.when(packetReaderProvider.getFields(anyString(), anyList(), anyString(), anyString())).thenReturn(fieldMap); - - Map result = packetReader.getFields(id, fieldList, source, process, false); - - assertTrue(result.size() == 1); - } - - @Test - public void testGetDocument() { - String docName = "poa"; - Document document = new Document(); - document.setValue("document"); - - Mockito.when(packetReaderProvider.getDocument(anyString(), anyString(), anyString(), anyString())).thenReturn(document); - - Document result = packetReader.getDocument(id, docName, source, process); - - assertTrue(result.equals(document)); - } - - @Test - public void testGetBiometrics() { - List birTypeList = new ArrayList<>(); - BIR birType1 = new BIR.BIRBuilder().build(); - BDBInfo bdbInfoType1 = new BDBInfo.BDBInfoBuilder().build(); - RegistryIDType registryIDType = new RegistryIDType("Mosip", "257"); - QualityType quality = new QualityType(); - quality.setAlgorithm(registryIDType); - quality.setScore(90l); - bdbInfoType1.setQuality(quality); - BiometricType singleType1 = BiometricType.FINGER; - List singleTypeList1 = new ArrayList<>(); - singleTypeList1.add(singleType1); - List subtype1 = new ArrayList<>(Arrays.asList("Left", "RingFinger")); - bdbInfoType1.setSubtype(subtype1); - bdbInfoType1.setType(singleTypeList1); - birType1.setBdbInfo(bdbInfoType1); - birTypeList.add(birType1); - BiometricRecord biometricRecord = new BiometricRecord(); - biometricRecord.setSegments(birTypeList); - - Mockito.when(packetReaderProvider.getBiometric(anyString(), anyString(), anyList(), anyString(), anyString())).thenReturn(biometricRecord); - - BiometricRecord result = packetReader.getBiometric(id, "individualBiometrics", Lists.newArrayList(), source, process, true); - - assertTrue(result.equals(biometricRecord)); - } - - @Test - public void testGetMetaInfo() { - Map metaMap = new HashMap<>(); - metaMap.put("operationsData","officerid:1234"); - - Mockito.when(packetReaderProvider.getMetaInfo(anyString(), anyString(), anyString())).thenReturn(metaMap); - - Map result = packetReader.getMetaInfo(id, source, process, true); - - assertTrue(result.equals(metaMap)); - } - - @Test - public void testGetAudits() { - Map auditMap = new HashMap<>(); - auditMap.put("audit","audit1"); - List> auditList = new ArrayList<>(); - auditList.add(auditMap); - - Mockito.when(packetReaderProvider.getAuditInfo(anyString(), anyString(), anyString())).thenReturn(auditList); - - List> result = packetReader.getAudits(id, source, process, true); - - assertTrue(result.equals(auditList)); - } - - @Test - public void testValidatePacket() { - Map auditMap = new HashMap<>(); - auditMap.put("audit","audit1"); - List> auditList = new ArrayList<>(); - auditList.add(auditMap); - - Mockito.when(packetReaderProvider.validatePacket(anyString(), anyString(), anyString())).thenReturn(true); - - boolean result = packetReader.validatePacket(id, source, process); - - assertTrue(result); - } - - @Test(expected = NoAvailableProviderException.class) - public void testProviderException() { - PowerMockito.when(PacketHelper.isSourceAndProcessPresent(anyString(),anyString(),anyString(),any())).thenReturn(false); - - packetReader.validatePacket(id, source, process); - } - - @Test - public void testGetTags() { - Map tags = new HashMap<>(); - tags.put("test", "testValue"); - - Mockito.when(packetKeeper.getTags(any())).thenReturn(tags); - - Map expectedTags= packetReader.getTags("id"); - - assertEquals(expectedTags,tags); - } - - @Test - public void testInfo() { - ObjectDto objectDto = new ObjectDto("source1", "process1", "object1", new Date()); - ObjectDto objectDto2 = new ObjectDto("source2", "process2", "object2", new Date()); - ObjectDto objectDto3 = new ObjectDto("source3", "process3", "object3", new Date()); - List objectDtos = Lists.newArrayList(objectDto, objectDto2, objectDto3); - - - Mockito.when(packetKeeper.getAll(any())).thenReturn(objectDtos); - - List result = packetReader.info("id"); - - assertEquals(objectDtos.size(), result.size()); - } -} +package io.mosip.commons.packet.test.facade; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.ArgumentMatchers.anyString; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.assertj.core.util.Lists; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.springframework.test.util.ReflectionTestUtils; + +import io.mosip.commons.khazana.dto.ObjectDto; +import io.mosip.commons.packet.dto.Document; +import io.mosip.commons.packet.exception.NoAvailableProviderException; +import io.mosip.commons.packet.facade.PacketReader; +import io.mosip.commons.packet.impl.PacketReaderImpl; +import io.mosip.commons.packet.keeper.PacketKeeper; +import io.mosip.commons.packet.spi.IPacketReader; +import io.mosip.commons.packet.util.PacketHelper; +import io.mosip.kernel.biometrics.constant.BiometricType; +import io.mosip.kernel.biometrics.constant.QualityType; +import io.mosip.kernel.biometrics.entities.BDBInfo; +import io.mosip.kernel.biometrics.entities.BIR; +import io.mosip.kernel.biometrics.entities.BiometricRecord; +import io.mosip.kernel.biometrics.entities.RegistryIDType; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({PacketHelper.class}) +@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*"}) +public class PacketReaderTest { + + @InjectMocks + private PacketReader packetReader = new PacketReader(); + + @Mock + private PacketReaderImpl packetReaderProvider; + + private Map allFields; + + private static final String source = "reg-client"; + private static final String process = "NEW"; + private static final String id = "110111101120191111121111"; + + @Mock + private PacketKeeper packetKeeper; + + @Before + public void setup() { + PowerMockito.mockStatic(PacketHelper.class); + PowerMockito.when(PacketHelper.isSourceAndProcessPresent(anyString(),anyString(),anyString(),any())).thenReturn(true); + List referenceReaderProviders = new ArrayList<>(); + referenceReaderProviders.add(packetReaderProvider); + ReflectionTestUtils.setField(packetReader, "referenceReaderProviders", referenceReaderProviders); + allFields = new HashMap<>(); + allFields.put("name", "mono"); + allFields.put("email", "mono@mono.com"); + allFields.put("phone", "1234567"); + + Mockito.when(packetReaderProvider.getAll(anyString(), anyString(), anyString())).thenReturn(allFields); + + } + + @Test + public void testGetFieldWithBypassCache() { + String field = "name"; + Mockito.when(packetReaderProvider.getField(anyString(), anyString(), anyString(), anyString())).thenReturn(field); + + String result = packetReader.getField(id, field, source, process, true); + + assertTrue(result == field); + } + + @Test + public void testGetField() { + String field = "name"; + + String result = packetReader.getField(id, field, source, process, false); + + assertTrue(result.equals(allFields.get("name"))); + } + + @Test + public void testGetFields() { + String field = "name"; + List fieldList = Lists.newArrayList(field); + Map fieldMap = new HashMap<>(); + fieldMap.put(field, field); + Mockito.when(packetReaderProvider.getFields(anyString(), anyList(), anyString(), anyString())).thenReturn(fieldMap); + + Map result = packetReader.getFields(id, fieldList, source, process, true); + + assertTrue(result.size() == 1); + } + + @Test + public void testGetFieldsBypassCache() { + String field = "name"; + List fieldList = Lists.newArrayList(field); + Map fieldMap = new HashMap<>(); + fieldMap.put(field, field); + Mockito.when(packetReaderProvider.getFields(anyString(), anyList(), anyString(), anyString())).thenReturn(fieldMap); + + Map result = packetReader.getFields(id, fieldList, source, process, false); + + assertTrue(result.size() == 1); + } + + @Test + public void testGetDocument() { + String docName = "poa"; + Document document = new Document(); + document.setValue("document"); + + Mockito.when(packetReaderProvider.getDocument(anyString(), anyString(), anyString(), anyString())).thenReturn(document); + + Document result = packetReader.getDocument(id, docName, source, process); + + assertTrue(result.equals(document)); + } + + @Test + public void testGetBiometrics() { + List birTypeList = new ArrayList<>(); + BIR birType1 = new BIR.BIRBuilder().build(); + BDBInfo bdbInfoType1 = new BDBInfo.BDBInfoBuilder().build(); + RegistryIDType registryIDType = new RegistryIDType("Mosip", "257"); + QualityType quality = new QualityType(); + quality.setAlgorithm(registryIDType); + quality.setScore(90l); + bdbInfoType1.setQuality(quality); + BiometricType singleType1 = BiometricType.FINGER; + List singleTypeList1 = new ArrayList<>(); + singleTypeList1.add(singleType1); + List subtype1 = new ArrayList<>(Arrays.asList("Left", "RingFinger")); + bdbInfoType1.setSubtype(subtype1); + bdbInfoType1.setType(singleTypeList1); + birType1.setBdbInfo(bdbInfoType1); + birTypeList.add(birType1); + BiometricRecord biometricRecord = new BiometricRecord(); + biometricRecord.setSegments(birTypeList); + + Mockito.when(packetReaderProvider.getBiometric(anyString(), anyString(), anyList(), anyString(), anyString())).thenReturn(biometricRecord); + + BiometricRecord result = packetReader.getBiometric(id, "individualBiometrics", Lists.newArrayList(), source, process, true); + + assertTrue(result.equals(biometricRecord)); + } + + @Test + public void testGetMetaInfo() { + Map metaMap = new HashMap<>(); + metaMap.put("operationsData","officerid:1234"); + + Mockito.when(packetReaderProvider.getMetaInfo(anyString(), anyString(), anyString())).thenReturn(metaMap); + + Map result = packetReader.getMetaInfo(id, source, process, true); + + assertTrue(result.equals(metaMap)); + } + + @Test + public void testGetAudits() { + Map auditMap = new HashMap<>(); + auditMap.put("audit","audit1"); + List> auditList = new ArrayList<>(); + auditList.add(auditMap); + + Mockito.when(packetReaderProvider.getAuditInfo(anyString(), anyString(), anyString())).thenReturn(auditList); + + List> result = packetReader.getAudits(id, source, process, true); + + assertTrue(result.equals(auditList)); + } + + @Test + public void testValidatePacket() { + Map auditMap = new HashMap<>(); + auditMap.put("audit","audit1"); + List> auditList = new ArrayList<>(); + auditList.add(auditMap); + + Mockito.when(packetReaderProvider.validatePacket(anyString(), anyString(), anyString())).thenReturn(true); + + boolean result = packetReader.validatePacket(id, source, process); + + assertTrue(result); + } + + @Test(expected = NoAvailableProviderException.class) + public void testProviderException() { + PowerMockito.when(PacketHelper.isSourceAndProcessPresent(anyString(),anyString(),anyString(),any())).thenReturn(false); + + packetReader.validatePacket(id, source, process); + } + + @Test + public void testGetTags() { + Map tags = new HashMap<>(); + tags.put("test", "testValue"); + + Mockito.when(packetKeeper.getTags(any())).thenReturn(tags); + + Map expectedTags= packetReader.getTags("id"); + + assertEquals(expectedTags,tags); + } + + @Test + public void testInfo() { + ObjectDto objectDto = new ObjectDto("source1", "process1", "object1", new Date()); + ObjectDto objectDto2 = new ObjectDto("source2", "process2", "object2", new Date()); + ObjectDto objectDto3 = new ObjectDto("source3", "process3", "object3", new Date()); + List objectDtos = Lists.newArrayList(objectDto, objectDto2, objectDto3); + + + Mockito.when(packetKeeper.getAll(any())).thenReturn(objectDtos); + + List result = packetReader.info("id"); + + assertEquals(objectDtos.size(), result.size()); + } +} diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OfflinePacketCryptoServiceTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OfflinePacketCryptoServiceTest.java index 16d603d898..490516b5e1 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OfflinePacketCryptoServiceTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OfflinePacketCryptoServiceTest.java @@ -69,7 +69,7 @@ public void setup() { public void signTest() { String packetSignature = "signature"; TpmSignResponseDto signatureResponse = new TpmSignResponseDto(); - signatureResponse.setData(CryptoUtil.encodeBase64(packetSignature.getBytes(StandardCharsets.UTF_8))); + signatureResponse.setData(CryptoUtil.encodeToURLSafeBase64(packetSignature.getBytes(StandardCharsets.UTF_8))); Mockito.when(clientCryptoManagerService.csSign(any())).thenReturn(signatureResponse); diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java index 3ea6876cfc..09207027ad 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java @@ -73,7 +73,7 @@ public void setup() { public void signTest() throws IOException { String expected = "signature"; LinkedHashMap submap = new LinkedHashMap(); - submap.put("data", CryptoUtil.encodeBase64(expected.getBytes(StandardCharsets.UTF_8))); + submap.put("data", CryptoUtil.encodeToURLSafeBase64(expected.getBytes(StandardCharsets.UTF_8))); LinkedHashMap responseMap = new LinkedHashMap(); responseMap.put("response", submap); ReflectionTestUtils.setField(onlinePacketCryptoService, "keymanagerCsSignUrl", "localhost"); @@ -140,7 +140,7 @@ public void decryptTest() throws IOException { byte[] packet = "10001100770000320200720092256_packetwithsignatureandaad".getBytes(); CryptomanagerResponseDto cryptomanagerResponseDto = new CryptomanagerResponseDto(); cryptomanagerResponseDto.setErrors(null); - DecryptResponseDto decryptResponseDto = new DecryptResponseDto(CryptoUtil.encodeBase64("packet".getBytes())); + DecryptResponseDto decryptResponseDto = new DecryptResponseDto(CryptoUtil.encodeToURLSafeBase64("packet".getBytes())); cryptomanagerResponseDto.setResponse(decryptResponseDto); diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java index 654cba802c..160ccfd62f 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java @@ -18,6 +18,7 @@ import io.mosip.commons.packet.facade.PacketReader; import org.apache.commons.io.IOUtils; +import org.assertj.core.util.Lists; import org.json.JSONException; import org.json.simple.JSONObject; import org.junit.Before; @@ -35,7 +36,6 @@ import org.springframework.test.util.ReflectionTestUtils; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.Lists; import io.mosip.commons.packet.dto.Document; import io.mosip.commons.packet.dto.Packet; diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/keeper/PacketKeeperTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/keeper/PacketKeeperTest.java index 072c00343f..b8d6c4cc15 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/keeper/PacketKeeperTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/keeper/PacketKeeperTest.java @@ -14,6 +14,7 @@ import java.util.Map; import io.mosip.commons.packet.util.PacketManagerHelper; +import org.assertj.core.util.Lists; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -25,8 +26,6 @@ import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.util.ReflectionTestUtils; -import com.google.common.collect.Lists; - import io.mosip.commons.khazana.dto.ObjectDto; import io.mosip.commons.khazana.spi.ObjectStoreAdapter; import io.mosip.commons.packet.constants.PacketManagerConstants; diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/PacketServiceConfig.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/PacketServiceConfig.java new file mode 100644 index 0000000000..40a15dcea6 --- /dev/null +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/config/PacketServiceConfig.java @@ -0,0 +1,19 @@ +package io.mosip.commons.packetmanager.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.fasterxml.jackson.module.afterburner.AfterburnerModule; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + +@Configuration +public class PacketServiceConfig { + + @Bean + @Primary + public ObjectMapper getObjectMapper() { + ObjectMapper objectMapper = new ObjectMapper().registerModule(new AfterburnerModule()).registerModule(new JavaTimeModule()); + return objectMapper; + } +} diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/DocumentDto.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/DocumentDto.java index 9651072866..25cc42dd99 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/DocumentDto.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/DocumentDto.java @@ -11,4 +11,5 @@ public class DocumentDto { private String documentName; private String source; private String process; + private Boolean bypassCache; } diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/service/PacketReaderService.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/service/PacketReaderService.java index 8dd40a6b70..b7f65dd94e 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/service/PacketReaderService.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/service/PacketReaderService.java @@ -80,7 +80,6 @@ public class PacketReaderService { private PacketReader packetReader; @Autowired - @Qualifier("restTemplate") private RestTemplate restTemplate; @Autowired @@ -275,7 +274,7 @@ private ObjectDto searchProcessWithLatestIteration(String id, String source, Str obj.getSource().equals(source) && PacketHelper.getProcessWithoutIteration(obj.getProcess()).equalsIgnoreCase(process)).findAny(); - return objectDto.isPresent() ? objectDto.get() : null; + return objectDto.isPresent() ? objectDto.get() : getObjectDto(source, process); } public String getSourceFromIdField(String process, String idField) throws IOException { @@ -290,6 +289,13 @@ public String getSourceFromIdField(String process, String idField) throws IOExce return null; } + private ObjectDto getObjectDto(String source, String process) { + ObjectDto objectDto1 = new ObjectDto(); + objectDto1.setSource(source); + objectDto1.setProcess(process); + return objectDto1; + } + public String searchInMappingJson(String idField, String process) throws IOException { if (idField != null) { JSONObject jsonObject = getMappingJsonFile(); From ce361ff3b597210c9f731d707f75ebfea94eb509 Mon Sep 17 00:00:00 2001 From: kameshsr <47484458+kameshsr@users.noreply.github.com> Date: Wed, 5 Jan 2022 10:33:39 +0530 Subject: [PATCH 08/17] Mosip:15286 Changed openapi.json name. --- commons-packet/commons-packet-service/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commons-packet/commons-packet-service/pom.xml b/commons-packet/commons-packet-service/pom.xml index f3461b3a59..5630eaa0b3 100644 --- a/commons-packet/commons-packet-service/pom.xml +++ b/commons-packet/commons-packet-service/pom.xml @@ -354,7 +354,7 @@ http://localhost:8090/app/generic/v3/api-docs - openapi.json + ${name}-openapi.json ${project.build.directory} false @@ -363,4 +363,4 @@ - \ No newline at end of file + From 7bd0f339416ebe4af9182e2c5cdae739cab4e307 Mon Sep 17 00:00:00 2001 From: Rakshith650 Date: Fri, 7 Jan 2022 20:55:02 +0530 Subject: [PATCH 09/17] updated the Sonar_analysis code and removed the Dskiptests --- .github/workflows/push_trigger.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/push_trigger.yml b/.github/workflows/push_trigger.yml index 9a8440cbd9..9bde102000 100644 --- a/.github/workflows/push_trigger.yml +++ b/.github/workflows/push_trigger.yml @@ -56,7 +56,7 @@ jobs: - name: Build with Maven run: | cd commons-packet - mvn -U -B package -DskipTests --file pom.xml -s $GITHUB_WORKSPACE/settings.xml + mvn -U -B package --file pom.xml -s $GITHUB_WORKSPACE/settings.xml - name: Ready the springboot artifacts run: find -name '*.jar' -executable -type f -exec zip release.zip {} + @@ -120,12 +120,12 @@ jobs: - name: Build with Maven run: | cd commons-packet - mvn -B package -DskipTests --file pom.xml -s $GITHUB_WORKSPACE/settings.xml + mvn -B package --file pom.xml -s $GITHUB_WORKSPACE/settings.xml - name: Publish the maven package run: | cd commons-packet - mvn -B deploy -DskipTests -DaltDeploymentRepository=ossrh::default::${{ secrets.OSSRH_SNAPSHOT_URL }} -s $GITHUB_WORKSPACE/settings.xml -f pom.xml + mvn -B deploy -DaltDeploymentRepository=ossrh::default::${{ secrets.OSSRH_SNAPSHOT_URL }} -s $GITHUB_WORKSPACE/settings.xml -f pom.xml env: GITHUB_TOKEN: ${{secrets.RELEASE_TOKEN}} GPG_TTY: $(tty) @@ -217,23 +217,21 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven-${{ env.BRANCH_NAME }} - - - name: Install xmllint - run: | - sudo apt-get update - sudo apt-get install libxml2-utils - - name: Setup the settings file for ossrh server run: echo " ossrh ${{secrets.ossrh_user}} ${{secrets.ossrh_secret}} ossrh true gpg2 ${{secrets.gpg_secret}} allow-snapshots true snapshots-repo https://oss.sonatype.org/content/repositories/snapshots false true releases-repo https://oss.sonatype.org/service/local/staging/deploy/maven2 true false sonar . https://sonarcloud.io false " > $GITHUB_WORKSPACE/settings.xml + - name: Build with Maven + run: | + cd cd commons-packet + mvn -B package -s $GITHUB_WORKSPACE/settings.xml --file pom.xml - name: Analyze with SonarCloud run: | - cd commons-packet - mvn -B -Dgpg.skip -DskipTests verify sonar:sonar -Dsonar.projectKey=mosip_${{ github.event.repository.name }} -Dsonar.organization=${{ secrets.ORG_KEY }} -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${{ secrets.SONAR_TOKEN }} + cd cd commons-packet + mvn -B -Dgpg.skip verify sonar:sonar -Dsonar.projectKey=mosip_${{ github.event.repository.name }} -Dsonar.organization=${{ secrets.ORG_KEY }} -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${{ secrets.SONAR_TOKEN }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - + - uses: 8398a7/action-slack@v3 with: status: ${{ job.status }} From 1a380a03e02c071751d728b450a65c0ab3e362f2 Mon Sep 17 00:00:00 2001 From: Rakshith650 Date: Fri, 7 Jan 2022 20:56:36 +0530 Subject: [PATCH 10/17] updated the Sonar_analysis code and removed the Dskiptests --- .github/workflows/push_trigger.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/push_trigger.yml b/.github/workflows/push_trigger.yml index 9bde102000..3b97e086d0 100644 --- a/.github/workflows/push_trigger.yml +++ b/.github/workflows/push_trigger.yml @@ -222,11 +222,11 @@ jobs: - name: Build with Maven run: | - cd cd commons-packet + cd commons-packet mvn -B package -s $GITHUB_WORKSPACE/settings.xml --file pom.xml - name: Analyze with SonarCloud run: | - cd cd commons-packet + cd commons-packet mvn -B -Dgpg.skip verify sonar:sonar -Dsonar.projectKey=mosip_${{ github.event.repository.name }} -Dsonar.organization=${{ secrets.ORG_KEY }} -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${{ secrets.SONAR_TOKEN }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 29ee19e05ae7ef43f2225824d8c4d333e3f51c6f Mon Sep 17 00:00:00 2001 From: Rakshith650 Date: Mon, 10 Jan 2022 10:00:10 +0530 Subject: [PATCH 11/17] added gpg keys --- .github/keys/mosipgpgkey_pub.gpg | Bin 1753 -> 1270 bytes .github/keys/mosipgpgkey_sec.gpg | Bin 3644 -> 2663 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/keys/mosipgpgkey_pub.gpg b/.github/keys/mosipgpgkey_pub.gpg index 86e5dfe34ca3c8dcbbbc0704923f27e9efbadad9..4bdb1a947beaa877a93b56a2074580cdd9bf0578 100644 GIT binary patch literal 1270 zcmbQq$jcHZy2y@^gW*i(B_ZoOO}xok8QrJ7Cf&}qetdqLrPuP}`P;)T-Y(VI_HkO_ z1{{w_f#RHj!qd-^bJoQmWM7;XW@lbzf|A4J(W)_uZi-T`J_?5k8I!A{8+V6Y2-?iCh1xP-B zIq6E*9lP}7Ro)kBJiO-Q-t)Wj;Fy-k3!e44+^24G7$(eOmrP(w-?^yl?-s_Lj~{U? z|Iz2Tvh0=vd*g}qnQnX5u8!QgWqQ&|20=y!#w{MX`Nf$93K}69nZ*h~1mWf;mZjz? zB&X(;6eZ>;6r~pAYbw})rSwvB6Ek!2@=G$)GE<8j(m_1E^d-NQtB%>uiS4{`PS#`d z!2|Vwjd%R@+!xB97yY%eDJ><;wy?==@1nw%l1YihOg~;t$!Xr>^ncmLm-3sEy5o&z z7@iA#{p{Nz<!2>s$RBXB1ov96vXdr)51sAImSU;o{c6)J0UM44_b zpVf0Mm{D=={>!vRIb z`z+?pC(SfW%+zuj?53RMyjoQ7Nu3fcuhg`sy#Fh4&J!iymvj-SznK9SLE*G_rU-{#+($YQM6^zA8 z7bu5adm9((&-Z%Wg4K*(CprHfSNpfyX0CO^G<~zxx?F0xdnCb$wUg0|MFN<_6quxW z@FgT>9}%#9~XsWKj>S1US}t8BZxbD3G^vqQ&Cgnpb7no=`QThyYOHDz_% zPyV~E60;&o^Q5#s6vChzi|I4kogn-FGo+99fA%nmwm^8F=Svc`(`%7ub=NtFLQYCecPEe&%{r>$k zf~08nFIRDYxuIZc@RuRQzXa2P#-HtP1nE7=7G&x%Hk1H?Xr;O4JNya7$eL4aH~q=X z(ra%nHm3bKzXmpsZuyFvX7=p{yu{NBM!^U7@{Gf zD_eBeG=P!Vf1LMPtNqQx-VK2y%Soos+jBd8?_$UE6$~CtOyo5yVmGMlRl44T&mjbw zXUUnKw4*&GU+Zq!ggHzVg5!i!vs>fPSgE}}UsLd&1%IiJkQW0S;(8NPMUXZjzn5sg zE!|O#0Yj2|yl+*5&qyc?1Cy9xy&h=7<&4h@oG;C=N(ZVin$)wIf#uM-d`Rr?T~vKz!F%A#9G7(b*W0HEA_1>avpcWAH* zQ>DAKA0XQQNd>R+{;_F_-DSi5jH9D`^^YSv+tU5tjoCleIO>+H=Wl70OvzIRNJ8LM z8Xa3q@T)tvf_r!Y@HAj}A$(R*?Uq^wj!*}jJ^=7Cp;xNl&;+3hHBhz&0uL_&r6quh z`auBz7o!gZq&zl^d{m;@t?=Pi(@ zN_48JvjiG@)h%7bW%M2W3}1CA*T2#dB@46tDiZ_ z%NUCm`Dx&{r7rK#r2VD0$oRs%`dvsgde3PC;rB0X2j&jl(av+ZlBefXh@4I8W?pez zU!vgdEE>M*F4(?bOiz81q%9iddm4B*3HjS9=||};RA16t4Ge8KJE!4Ey@39j2_YoX zB5mv>0KSs%3=wp4pfBZms*pvIj0xlCo*#mM>KRONd#B0mG3^~Od;o6rQcoNQlq&M@ zNRMj?L-Yu}zX5j&Y?wbzGMu(-Q71lY&xV9{ z80&2{M#Z9vFk_3yigdEauc&uRKk4%--a!ywFPCV2GiMUbwa-cq{CjE`;_**LL=fu8 z-ys18ybBJEhqKBHMIy+efbmCi-n1nbvFuDY+Ha=iVY}k!vv6ab=ABcGEEb5yUIojE zTKS9??UP0K4d=oxm;7WOsVb{+(>%r8NEt)JH)m^@lAn8l77Uu~33LCM852 zlPwzX-X?BWdk|L4xVCGhy2|FUHZjI6uRn~vXPm}eqTI@8s@8qti#$C}4i<78?>>WN z_14}$5a!b&-`}rA>|>XChRoKXOCr47i%DqEc5_q84HM3=sTiyHYODL3TL5is59vl$0S z0P5K9i{z~+wleRGRKMl<*)5aQTBct*FFWudgJRnFET(72mrDmV9;Hd3jpVQFX^}_ z<1>tMeUoTe{<>j4Sl*F^S}yKjYuAJfUm#cR`9!vKOZ5~`EGDHTsLhjaIlqMT|ibes6-JO^oZ;_(fXz-}1m7;Fc0vih~S-l*y`s z+e5k`-!Lb8zU9?SFbX9+4ouyB(rl4dsSn9eZ>+47Ni+amQnP?qW_3)}M$~za7R04; z53Ze2D2hU@KbHu0VW)vjGwRC!h?o0NTvYJPnowNier5fN^RGavD@W6SlFN7T%Uk_? z)Kug6b;6#x>aVobJ+w9VJY5~dXH%QeShiu**;XY0ng6KwdZm5jz^Pnc%D>lM)53>1 z!3?ZAEf&{6G)k@P;r^{@3V=C8x85RXso6eNyC!J1CSl#`EU~oJ`r^Wk+YyME=`N(3 ziCwp&2o#9jpR$@LI5gNJ9beNRf^VuMq*v}9d_sP#cUvB~He+Rn;3Dk~4*CkC8&G~V z%~tY`L|5ag!SpFlU8?(%_VV<$YTX4Uy^Dul7axlELQ*oXu3eiyQeK!-oj{J40+xBF z0|G2&9orf8%9oX_mn(e5^m$)qWGjC1DYjO{$3E;5_NPQ_%87T*NZd1v0^1)L z{+VRC3G!nw5nVIcAg$?!W_)uPO21X^({O*ih~gvNHOYDo4^eYyT008jOUrh$;ZTx( zhuL7fM&N_Ou)#7)D1U62%-{F#i1&>2A;@_95W+(}17$*ef`gQ04E|NA``|sXfrOxN ztS{Cl)Wq+fN!>dLZ=1t0_cIn!4Pgvj=vWHWIx3L;^g9H69IvNASob7G(kj` zEy-wVWn`-ZOPdw6iZmT_^90Cq$|(!L#VPQg&uTK{*ilT^ot#xzcQ<#gZpPNx z*858Olsa4_9@r}Xw(4f$=+Vje8}RFjdAnAjrG9eIjx$jql1m@)r-Ov+G5IREVCCc0 zdTfsCs15mLk72P}+T@5N;#Eg`{E=4kk>y)7Kf!e`Cein%qhUy*QQNbSyW!cMVW9o> zoWP_vX2;L#*Q6V~NbazF%@Op*@~`*uyA-ZjW+9x!D(7*mEjW8|C@Y_OPn>(V;(jh& z929Tr0;FB`P1@pt3M7kmYYb=gHd4zLErQPU&ahIKyV$sFSi!CYqxX`)C3S zsFCL(dlRiaUqr^4bM)ZqF(5H0tPxE~H5^(o_l%?cIc1TOYQcIO>9?bSf zD^v%b0!>vGrcXEkWlP>wKgvP%H*kkasI!79#4x{u*`(6~6&tl#Q8bsJJnRPe+H)a% zUAwF-lkMWAer+YVwjv&2lrzjZ9vZwqJdyQ1u}X~3r1rb?^>7WdW=G@XJsqVrnMYsp z2NZa@y`U`va_m8*C|iUx*NJe7Bx z*utP~`8H~vQh>;Q&ZAyMR;xjYenPH>Hbsp~5&!1&f0b3$uLqw=?|68O5{qzlmCGvS zgv#+dZ2q)&*pYh=6U-6S!KZkYUUD6Y?fn@tFQxO?izh>1pzVEwbw8y87n+3`PF}4R zIxWRXV@q$jE=G%zsVfd3R!DxEO(&Ao-?hmv#ZNuSXh1M9y+}lK(1lCeA}%(IB-{A6 zgt)}E>^;uadQ#c9W8g|zMh*3bK#`K#(s)v|$Zi0qYoEh$$vgd(`ZQsW8>qe*C+)iVx)hWwg)zdwrEa{_G%_ z68Tp`giRFXQ_-f#h=?wT!d?kWbu-nR(edIm3M}h0=65#1d;N)74v&nWsbc$;;htvro%w;%G@v${ z*xxkDfW&$JAAsQh1+d5t!cvf!{3_=ofw(Xpom#0t9iu(hPFsH83m4iS5Xy;ra{iP~ z?1`I{(IE{)wYI0 zp?Lro`tclyiF&K_MBTH9kbUsg=yu-maA!*_U*}`HPj-_Wbh&ke5YP9M2PwKR~+0n z`yU!zDyk)lFb4N<72OjB)L)J#F`fE*5><~{u0AZpb_3h}4U&GS>wU*FJ#yt)=4Y@a SkkiE(Bh1Lh;14qU=Klc8TJt&p literal 3644 zcmaKvw+_TO4u*R_#rDR+IZUyIbI#e_IFEDo*iV16cMIHACxDG45RxeVANl8>zrhNU zV*X)E_8+#Zgp4ozp$W+!tZs4I-^+gjK=0TRE8^kQ;w;DT#=B5F>veN{WGrvx)V*2H z-p|=SR6=-5@r+av!Nrc~diL!{=>lwK!F{<@2#B2fY1fd=GD5MTJ~u&iR}$2ZHb!Ga zG$wEFZ=Z|!VYRCLBM-0xRV@mn+l{?rI6iLAd8p~m{m~)N8G9Cq??;(>YTF541;;Up zV~ClWc9S`$U&A#_R3GOCKoHdWP)BPKP_5+aS7)8Ld_8g)ym%ks5VcM4(to$X>#V`y z*!ruPd=kUX5re&wha^U69_3r9ENEvx2ZNi9&Z(eGKU3@(*AH-g}0qF7yHbxxU8&bFP$2?Mp*>+sP>x_ScZ{7_A)qU=dXwJ z^S!hoE~{U_i$7|O8~x1N#^7QO2Arax=t8brb#gvM#g4mr<`#;nPyti*IvF*MWWp`u zJK6S701V31t*dcLQk9j7*DPo4Y1hSj9j) zq9osZU6~xnqn}9(c4YtLx##C{?ax}lQ|UcjEGK2`!DnC{=$QOw_km9NsdHsueiP!Z zAl-blpE^BKm^p`1jIAr(n9bfeWY~srA?)4?^yxg37ewzuZL@8Nv}H*hz$>-Jtr#qr z^c-}eL|v!0FpcQ121liv8uI6awgJ2og;+pARO5u5Wh1aK2mD@UM*<`sw1_<>dg~i- z=&n10N)DBT(2c_b$#5SpwGuX42Ky}B-NQBGs?|?5)EIn4(TPhUxK5^Gkp5G zYG)#{qlqJ(!73Lyzshz*W3@=$g)tO+uC z9gTc%IG9G>g;kI-RC!k7-n9b?*oYEE>GWjvyU^?zX3jasOrg}w`OW@q|ID#_5~qFk zVcRq!;Cv7_MOJ$tm*`pHzyE9^`YaOXOd`%g>W6m}-i}o4Nz`xpV4j&zs*Fzy!Xl)r_8agy+-gDO{Vf>s>XYp=bYjy;aIN;3N@p?&HyYD-3p6Q+XOj%*dY{kG} z67Z%^;jm}NKx-#lHY<@*Ea-)*`r&PjWv{Jdm#&Q7Cr3)rMlMJ`iuEtc%UijD+MH$c z7h4YzZesMQvmzGdfTX}-GPpnXgAbE#%NJvDc(qhq9Mop-^vA)h{1Go+9sFJ2< z>m-_-{2lx;&{Y_J(aOpk_t@3$G#T}*TkA~c{C2|*7X_szJyxA=1p?4G=AXULl}T_u zV6dvKi5d{Bj96n;U0ix+MwfnYQ&&s!aqK4UJ0#;8;)~nElFA0u$*u)|<;=|UFMZ3a zJL>iq=v%*h9UWWzFE_chXE9d(!uLm|XMg&=cU*VC8eJi?592UBQE&;(n1OpoxWSz% zdfr?IG=RM%QdrJ7)hD`!-Os>+>fb+2n90lZfVolk&0rd(pam1QRr6EB<|o}5o(vvm z4D*r4pW^M%ind7%!K@HdMX_@_YZKXch5#1V&WdWcgE4iyvwsY3Ep%^TTTAXG5bLwl z4eYGyOld)T8XI94H8B1)3m>c;JpKXl$qV2v>B25TZn}fBM_^R7RM{%iihC#5tS$rF zZ5AJVytFB~t8ff&LK*B;%-;Y4VsgakTkB6{$C=pbC(ewJ11ZCRwn&n!mrK-cXMBC{ z3_PB@uy8KYpZBUe(~xCX3j8lP&151BIg%uOgcvF<%Y&QJs{T4*hRKX#-jH^D=jJi zh^~=O_S3}MHZETK(){glU(2pfAIg%@XaNPF92feGT4zGPV`%bsn)jRK1U(!=OYxoFt{ zs2W{NCZh4TPZtcH=s$`AB%dk_{v1<@W0N-Mk?^0345; zt+aRwu&FA=bM4p??qf*h%icr3E@caTZiD0?D3gy@ke9iugPvQaZSL?@k^>(s)YP(U z`Q)5~_t}VgTGB<7mITGsU#QCJfVky=U&(Eq8+|!A|6DBjr`?Cid<7A}H^&Tq*^Itf zX;B*Sr9pZko+=m1d&g|3)&|h=L(s5$EBcU4iwowdYzo}y^CLh8(C_m-$G^hQfsD`% zmX|g-vM5rTes*#<>uAmj;cF5VUspQ0iQ2`-;^fAX&+oHXVFX;XDt(B7`sUY7&t*to z{0~W`tS!i)>bQ%MEm{B4yA}&qcgU7np^hUIRz*Pl*aRI&kwNESV@3CyIa51XIn3w2 zUhi)EMHjtWCogj5N6BVp7hJ7TG;^rw){gvczITHzU{7cBbL#Z1x#n_7OjWag+=fVN ztaXYu-%#t&PW~-bj5AE8V{($KZ zm(-69I8yYsf<>WPKV*T+PPA^GZ}f{@SOTCKo^v}MZ8MRkW~-HHq@(@*)phLCe@)7V zXrq+Thu6K&0ORU~W?;N?t{4bp7tb$XJmT_n_|N^T0VKE<;`o4OhjE+AI>3ygY+gpx zeNY)M5G3Y@G=}~+(*8rVO9cKw8pG9{;~zz+HINezj_X_%luP-}>9PZ%^sxRAMP{P! zU!-tc>+wt&Rw`cyz&;j@9T0OXBC>KCigejtiE@PCZpeF)-*7vTcl=7f{bFP%c&k|? z-kWIwaT~0b8Q_17$Z2S9Z?_*1n=YAJD*a2;qEaq;sweLAT|4V37D=_e&|8V4ogPXY zeF-d;Pp|`92-|ExnWQEJ$BE+WEWB||QhRV;nA-uFk(mlae?(mkDd)JMZwMVq+R_y* z4(HSY?YcVlcH{i0zj@mkS#}4z?U%+2vB9g$r`#! Date: Thu, 13 Jan 2022 12:15:01 +0530 Subject: [PATCH 12/17] changes for real bio --- .../java/io/mosip/commons/packet/impl/PacketReaderImpl.java | 4 ++-- .../io/mosip/commons/packet/util/PacketManagerHelper.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java index b259ef9653..c987c7e664 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketReaderImpl.java @@ -277,8 +277,8 @@ public BiometricRecord getBiometric(String id, String biometricFieldName, List others = new HashMap<>(); - bir.getOthers().forEach(e -> { + HashMap others = new HashMap<>(); + bir.getOthers().entrySet().forEach(e -> { others.put(e.getKey(), e.getValue()); }); biometricRecord.setOthers(others); diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketManagerHelper.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketManagerHelper.java index 135ad28bdf..08dd5374ce 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketManagerHelper.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketManagerHelper.java @@ -70,9 +70,9 @@ public byte[] getXMLData(BiometricRecord biometricRecord, boolean offlineMode) t new URL(configServerFileStorageURL + schemaName).openStream()) { CbeffContainerImpl cbeffContainer = new CbeffContainerImpl(); BIR bir = cbeffContainer.createBIRType(biometricRecord.getSegments()); - List entries = new ArrayList<>(); + HashMap entries = new HashMap(); biometricRecord.getOthers().forEach((k, v) -> { - entries.add(new Entry(k, v)); + entries.put(k, v); }); bir.setOthers(entries); return CbeffValidator.createXMLBytes(bir, IOUtils.toByteArray(xsd)); From e84194bf5594e5f12c9ec78f3d5b9aeaeea504f9 Mon Sep 17 00:00:00 2001 From: Admin Date: Thu, 13 Jan 2022 13:58:14 +0530 Subject: [PATCH 13/17] Merged with 1.2.0-rc2 --- .../packet/test/impl/OnlinePacketCryptoServiceTest.java | 3 ++- .../mosip/commons/packet/test/impl/PacketReaderImplTest.java | 5 +++-- .../test/controller/PacketManagerControllerTest.java | 1 + .../src/test/resources/application.properties | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java index 09207027ad..75952c1adb 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OnlinePacketCryptoServiceTest.java @@ -1,5 +1,6 @@ package io.mosip.commons.packet.test.impl; +import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.mosip.commons.packet.dto.ClientPublicKeyResponseDto; @@ -98,7 +99,7 @@ public void signExceptionTest() throws IOException { ResponseEntity response = new ResponseEntity<>("hello", HttpStatus.OK); Mockito.when(restTemplate.exchange(anyString(), any(HttpMethod.class), any(HttpEntity.class), any(Class.class))).thenReturn(response); - Mockito.when(mapper.readValue(anyString(), any(Class.class))).thenThrow(new IOException("exception")); + Mockito.when(mapper.readValue(anyString(), any(Class.class))).thenThrow(new JsonMappingException("exception")); byte[] result = onlinePacketCryptoService.sign(packet); } diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java index 160ccfd62f..6676838bef 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketReaderImplTest.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import com.fasterxml.jackson.databind.JsonMappingException; import io.mosip.commons.packet.facade.PacketReader; import org.apache.commons.io.IOUtils; import org.assertj.core.util.Lists; @@ -435,14 +436,14 @@ public void getAuditTest() throws IOException { @Test(expected = GetAllMetaInfoException.class) public void metaInfoExceptionTest() throws IOException { - when(objectMapper.readValue(anyString(), any(Class.class))).thenThrow(new IOException("exception")); + when(objectMapper.readValue(anyString(), any(Class.class))).thenThrow(new JsonMappingException("exception")); iPacketReader.getMetaInfo("id", "source", "process"); } @Test(expected = GetAllIdentityException.class) public void getAuditExceptionTest() throws IOException { - when(objectMapper.readValue(anyString(), any(Class.class))).thenThrow(new IOException("exception")); + when(objectMapper.readValue(anyString(), any(Class.class))).thenThrow(new JsonMappingException("exception")); iPacketReader.getAuditInfo("id", "source", "process"); } diff --git a/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java b/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java index 9fbd4fdf36..2106acfccf 100644 --- a/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java +++ b/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java @@ -256,6 +256,7 @@ public void testCreatePacket() throws Exception { @Test @WithUserDetails("reg-processor") + @Ignore public void testBaseUncheckedException() throws Exception { PacketDto packetDto = new PacketDto(); packetDto.setId("id"); diff --git a/commons-packet/commons-packet-service/src/test/resources/application.properties b/commons-packet/commons-packet-service/src/test/resources/application.properties index 69496bd38e..8316cb4365 100644 --- a/commons-packet/commons-packet-service/src/test/resources/application.properties +++ b/commons-packet/commons-packet-service/src/test/resources/application.properties @@ -41,6 +41,7 @@ mosip.kernel.auth.appids.realm.map={prereg:'preregistration',ida:'mosip',registr #adding commons-packet-manager properties mosip.role.packetmanager.postcreatepacket=REGISTRATION_PROCESSOR +mosip.role.packetmanager.getPutcreatepacket=REGISTRATION_PROCESSOR mosip.role.packetmanager.postaddtag=REGISTRATION_PROCESSOR mosip.role.packetmanager.postaddorupdatetag=REGISTRATION_PROCESSOR mosip.role.packetmanager.postdeletetag=REGISTRATION_PROCESSOR From dabf23b1836e66675607d74e94415e2c5589b8bc Mon Sep 17 00:00:00 2001 From: Admin Date: Sun, 16 Jan 2022 19:02:25 +0530 Subject: [PATCH 14/17] changes for real bio --- .../test/impl/PacketWriterImplTest.java | 1 - .../controller/PacketWriterController.java | 2 +- .../packetmanager/dto/AuthorizedRolesDTO.java | 2 ++ .../PacketManagerControllerTest.java | 2 -- .../test/service/PacketReaderServiceTest.java | 4 +++- .../src/test/resources/application.properties | 3 +-- commons-packet/pom.xml | 21 ------------------- 7 files changed, 7 insertions(+), 28 deletions(-) diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketWriterImplTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketWriterImplTest.java index 34903b9eff..46e2054021 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketWriterImplTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/PacketWriterImplTest.java @@ -20,7 +20,6 @@ import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.test.util.ReflectionTestUtils; diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java index 773e31d3bc..428f680533 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java @@ -40,7 +40,7 @@ public class PacketWriterController { @Autowired private PacketWriterService packetWriterService; - @PreAuthorize("hasAnyRole(@authorizedRoles.getPutcreatepacket())") + @PreAuthorize("hasAnyRole(@authorizedRoles.getPutCreatePacket())") //@PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PutMapping(path = "/createPacket", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/AuthorizedRolesDTO.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/AuthorizedRolesDTO.java index 89f7abeab6..31c662d061 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/AuthorizedRolesDTO.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/AuthorizedRolesDTO.java @@ -40,6 +40,8 @@ public class AuthorizedRolesDTO { private List postaddorupdatetag; private List postdeletetag; + + private List putCreatePacket; } diff --git a/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java b/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java index 2106acfccf..5b8fedac61 100644 --- a/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java +++ b/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/controller/PacketManagerControllerTest.java @@ -15,7 +15,6 @@ import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.springframework.beans.factory.annotation.Autowired; @@ -256,7 +255,6 @@ public void testCreatePacket() throws Exception { @Test @WithUserDetails("reg-processor") - @Ignore public void testBaseUncheckedException() throws Exception { PacketDto packetDto = new PacketDto(); packetDto.setId("id"); diff --git a/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/service/PacketReaderServiceTest.java b/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/service/PacketReaderServiceTest.java index 1aad126754..382334d1a4 100644 --- a/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/service/PacketReaderServiceTest.java +++ b/commons-packet/commons-packet-service/src/test/java/io/mosip/commons/packetmanager/test/service/PacketReaderServiceTest.java @@ -16,6 +16,8 @@ import java.util.Map; import java.util.Set; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; import org.assertj.core.util.Lists; import org.json.simple.JSONObject; import org.junit.Before; @@ -123,7 +125,7 @@ public void testInfoSuccess() { @Test(expected = BaseUncheckedException.class) public void testException() throws IOException { - Mockito.when(objectMapper.readValue(anyString(), any(Class.class))).thenThrow(new IOException("IO Exception")); + Mockito.when(objectMapper.readValue(anyString(), any(Class.class))).thenThrow(new JsonMappingException("Mapping Exception")); packetReaderService.info(id); } diff --git a/commons-packet/commons-packet-service/src/test/resources/application.properties b/commons-packet/commons-packet-service/src/test/resources/application.properties index 8316cb4365..ed7a7f817f 100644 --- a/commons-packet/commons-packet-service/src/test/resources/application.properties +++ b/commons-packet/commons-packet-service/src/test/resources/application.properties @@ -40,8 +40,7 @@ packetmanager.default.priority= mosip.kernel.auth.appids.realm.map={prereg:'preregistration',ida:'mosip',registrationclient:'mosip',regproc:'mosip',partner:'mosip',resident:'mosip'} #adding commons-packet-manager properties -mosip.role.packetmanager.postcreatepacket=REGISTRATION_PROCESSOR -mosip.role.packetmanager.getPutcreatepacket=REGISTRATION_PROCESSOR +mosip.role.packetmanager.putcreatepacket=REGISTRATION_PROCESSOR mosip.role.packetmanager.postaddtag=REGISTRATION_PROCESSOR mosip.role.packetmanager.postaddorupdatetag=REGISTRATION_PROCESSOR mosip.role.packetmanager.postdeletetag=REGISTRATION_PROCESSOR diff --git a/commons-packet/pom.xml b/commons-packet/pom.xml index 3505c63b96..e44d9267d7 100644 --- a/commons-packet/pom.xml +++ b/commons-packet/pom.xml @@ -55,27 +55,6 @@ commons-packet-service - - - ossrh - CentralRepository - https://oss.sonatype.org/content/repositories/snapshots - default - - true - - - - central - MavenCentral - default - https://repo1.maven.org/maven2 - - false - - - - ossrh From f1316085c5dd6ab417798df2858cd0e4c96ec2d6 Mon Sep 17 00:00:00 2001 From: Monobikash Das <43202165+MonobikashDas@users.noreply.github.com> Date: Wed, 19 Jan 2022 14:21:52 +0530 Subject: [PATCH 15/17] Auth role issue fixed (#46) --- .../controller/PacketWriterController.java | 2 +- .../packetmanager/dto/AuthorizedRolesDTO.java | 4 +-- .../src/test/resources/application.properties | 26 +++++++++---------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java index 428f680533..773e31d3bc 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java @@ -40,7 +40,7 @@ public class PacketWriterController { @Autowired private PacketWriterService packetWriterService; - @PreAuthorize("hasAnyRole(@authorizedRoles.getPutCreatePacket())") + @PreAuthorize("hasAnyRole(@authorizedRoles.getPutcreatepacket())") //@PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PutMapping(path = "/createPacket", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/AuthorizedRolesDTO.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/AuthorizedRolesDTO.java index 31c662d061..9d8fdaa7b0 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/AuthorizedRolesDTO.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/dto/AuthorizedRolesDTO.java @@ -10,7 +10,7 @@ @Component("authorizedRoles") -@ConfigurationProperties(prefix = "mosip.role.packetmanager") +@ConfigurationProperties(prefix = "mosip.role.commons-packet") @Getter @Setter public class AuthorizedRolesDTO { @@ -41,7 +41,7 @@ public class AuthorizedRolesDTO { private List postdeletetag; - private List putCreatePacket; + private List putcreatepacket; } diff --git a/commons-packet/commons-packet-service/src/test/resources/application.properties b/commons-packet/commons-packet-service/src/test/resources/application.properties index ed7a7f817f..898df88f0c 100644 --- a/commons-packet/commons-packet-service/src/test/resources/application.properties +++ b/commons-packet/commons-packet-service/src/test/resources/application.properties @@ -40,16 +40,16 @@ packetmanager.default.priority= mosip.kernel.auth.appids.realm.map={prereg:'preregistration',ida:'mosip',registrationclient:'mosip',regproc:'mosip',partner:'mosip',resident:'mosip'} #adding commons-packet-manager properties -mosip.role.packetmanager.putcreatepacket=REGISTRATION_PROCESSOR -mosip.role.packetmanager.postaddtag=REGISTRATION_PROCESSOR -mosip.role.packetmanager.postaddorupdatetag=REGISTRATION_PROCESSOR -mosip.role.packetmanager.postdeletetag=REGISTRATION_PROCESSOR -mosip.role.packetmanager.postinfo=REGISTRATION_PROCESSOR -mosip.role.packetmanager.postgettags=REGISTRATION_PROCESSOR -mosip.role.packetmanager.postvalidatepacket=REGISTRATION_PROCESSOR -mosip.role.packetmanager.postaudits=REGISTRATION_PROCESSOR -mosip.role.packetmanager.postmetainfo=METADATA_READ -mosip.role.packetmanager.postbiometrics=BIOMETRIC_READ -mosip.role.packetmanager.postdocument=DOCUMENT_READ -mosip.role.packetmanager.postsearchfields=DATA_READ -mosip.role.packetmanager.postsearchfield=DATA_READ \ No newline at end of file +mosip.role.commons-packet.putcreatepacket=REGISTRATION_PROCESSOR +mosip.role.commons-packet.postaddtag=REGISTRATION_PROCESSOR +mosip.role.commons-packet.postaddorupdatetag=REGISTRATION_PROCESSOR +mosip.role.commons-packet.postdeletetag=REGISTRATION_PROCESSOR +mosip.role.commons-packet.postinfo=REGISTRATION_PROCESSOR +mosip.role.commons-packet.postgettags=REGISTRATION_PROCESSOR +mosip.role.commons-packet.postvalidatepacket=REGISTRATION_PROCESSOR +mosip.role.commons-packet.postaudits=REGISTRATION_PROCESSOR +mosip.role.commons-packet.postmetainfo=METADATA_READ +mosip.role.commons-packet.postbiometrics=BIOMETRIC_READ +mosip.role.commons-packet.postdocument=DOCUMENT_READ +mosip.role.commons-packet.postsearchfields=DATA_READ +mosip.role.commons-packet.postsearchfield=DATA_READ \ No newline at end of file From 0334a73c0d92adcc7102703bb1536879d4df3e0b Mon Sep 17 00:00:00 2001 From: Monobikash Das <43202165+MonobikashDas@users.noreply.github.com> Date: Wed, 19 Jan 2022 12:47:36 +0530 Subject: [PATCH 16/17] MOR-147 : multithreading issue for create packet api (#52) Co-authored-by: Admin --- .../commons/packet/audit/AuditLogEntry.java | 1 + .../constants/PacketUtilityErrorCodes.java | 3 +- .../commons/packet/facade/PacketWriter.java | 3 + .../impl/OnlinePacketCryptoServiceImpl.java | 1 + .../commons/packet/impl/PacketWriterImpl.java | 96 ++++++++++--------- .../commons/packet/spi/IPacketWriter.java | 2 + .../commons/packet/util/IdSchemaUtils.java | 1 + .../mosip/commons/packet/util/ZipUtils.java | 73 -------------- .../impl/OfflinePacketCryptoServiceTest.java | 3 +- .../controller/PacketReaderController.java | 9 -- .../controller/PacketWriterController.java | 1 - .../service/PacketReaderService.java | 17 +++- .../src/main/resources/bootstrap.properties | 4 +- 13 files changed, 79 insertions(+), 135 deletions(-) diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java index b846060655..68973740e4 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java @@ -30,6 +30,7 @@ public class AuditLogEntry { @Autowired @Lazy + @Qualifier("selfTokenRestTemplate") private RestTemplate restTemplate; @Autowired diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketUtilityErrorCodes.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketUtilityErrorCodes.java index 586e69b0cb..5b46d90c10 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketUtilityErrorCodes.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/constants/PacketUtilityErrorCodes.java @@ -30,7 +30,8 @@ public enum PacketUtilityErrorCodes { TAG_NOT_FOUND("KER-PUT-024", "Requested tag not present"), SOURCE_NOT_PRESENT("KER-PUT-025", "Invalid source or process."), DELETE_TAGGING_FAILED("KER-PUT-026", "Failed to delete tags."), - OBJECT_DOESNOT_EXISTS("KER-PUT-027", "Object doesnot exists."),; + OBJECT_DOESNOT_EXISTS("KER-PUT-027", "Object doesnot exists."), + UNKNOWN_EXCEPTION("KER-PUT-028", "Unknown Exception."); diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/facade/PacketWriter.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/facade/PacketWriter.java index ce3c529ba1..b5004a14f8 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/facade/PacketWriter.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/facade/PacketWriter.java @@ -184,6 +184,9 @@ public List createPacket(PacketDto packetDto) { LOGGER.info(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, packetDto.getId(), ExceptionUtils.getStackTrace(e)); LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, packetDto.getId(), ExceptionUtils.getStackTrace(e)); + } finally { + // remove object from registration packet hashmap + provider.removePacket(packetDto.getId()); } return packetInfos; } diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java index 3e2556eb33..71430b2048 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java @@ -65,6 +65,7 @@ public class OnlinePacketCryptoServiceImpl implements IPacketCryptoService { private boolean isPrependThumbprintEnabled; @Autowired + @Qualifier("selfTokenRestTemplate") private RestTemplate restTemplate; @Autowired diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketWriterImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketWriterImpl.java index 833ca47c34..fdad2118f9 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketWriterImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/PacketWriterImpl.java @@ -80,14 +80,15 @@ public class PacketWriterImpl implements IPacketWriter { @Value("${packetmanager.zip.datetime.pattern:yyyyMMddHHmmss}") private String zipDatetimePattern; - private RegistrationPacket registrationPacket = null; + private Map registrationPacketMap = new HashMap<>(); public RegistrationPacket initialize(String id) { - if (this.registrationPacket == null || !registrationPacket.getRegistrationId().equalsIgnoreCase(id)) { - this.registrationPacket = new RegistrationPacket(dateTimePattern); - this.registrationPacket.setRegistrationId(id); + if (registrationPacketMap.get(id) == null) { + RegistrationPacket registrationPacket = new RegistrationPacket(dateTimePattern); + registrationPacket.setRegistrationId(id); + registrationPacketMap.put(id, registrationPacket); } - return registrationPacket; + return registrationPacketMap.get(id); } @Override @@ -134,7 +135,7 @@ public void addMetaInfo(String id, String key, String value) { private List createPacket(String id, String version, String schemaJson, String source, String process, String additionalInfoReqId, String refId, boolean offlineMode) throws PacketCreatorException { LOGGER.info(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.ID.toString(), id, "Started packet creation"); - if (this.registrationPacket == null || !registrationPacket.getRegistrationId().equalsIgnoreCase(id)) + if (registrationPacketMap.get(id) == null) throw new PacketCreatorException(ErrorCode.INITIALIZATION_ERROR.getErrorCode(), ErrorCode.INITIALIZATION_ERROR.getErrorMessage()); @@ -195,7 +196,8 @@ private List createPacket(String id, String version, String schemaJs throw new PacketCreatorException(ErrorCode.PKT_ZIP_ERROR.getErrorCode(), ErrorCode.PKT_ZIP_ERROR.getErrorMessage().concat(ExceptionUtils.getStackTrace(e))); } finally { - this.registrationPacket = null; + this.registrationPacketMap.remove(id); + LOGGER.debug("registrationPacketMap size ====================================> " + registrationPacketMap.size()); } LOGGER.info(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.ID.toString(), id, "Exiting packet creation"); @@ -205,7 +207,7 @@ private List createPacket(String id, String version, String schemaJs @SuppressWarnings("unchecked") private byte[] createSubpacket(double version, List schemaFields, boolean isDefault, String id, boolean offlineMode) throws PacketCreatorException { - + RegistrationPacket registrationPacket = registrationPacketMap.get(id); ByteArrayOutputStream out = new ByteArrayOutputStream(); try (ZipOutputStream subpacketZip = new ZipOutputStream(new BufferedOutputStream(out))) { LOGGER.info(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.ID.toString(), @@ -214,8 +216,8 @@ private byte[] createSubpacket(double version, List schemaFields, boolea Map hashSequences = new HashMap<>(); identity.put(PacketManagerConstants.IDSCHEMA_VERSION, version); - this.registrationPacket.getMetaData().put(PacketManagerConstants.REGISTRATIONID, id); - this.registrationPacket.getMetaData().put(PacketManagerConstants.META_CREATION_DATE, this.registrationPacket.getCreationDate()); + registrationPacket.getMetaData().put(PacketManagerConstants.REGISTRATIONID, id); + registrationPacket.getMetaData().put(PacketManagerConstants.META_CREATION_DATE, registrationPacket.getCreationDate()); for (Object obj : schemaFields) { Map field = (Map) obj; @@ -224,25 +226,25 @@ private byte[] createSubpacket(double version, List schemaFields, boolea id, "Adding field : " + fieldName); switch ((String) field.get(PacketManagerConstants.SCHEMA_TYPE)) { case PacketManagerConstants.BIOMETRICS_TYPE: - if (this.registrationPacket.getBiometrics().get(fieldName) != null) - addBiometricDetailsToZip(fieldName, identity, subpacketZip, hashSequences, offlineMode); + if (registrationPacket.getBiometrics().get(fieldName) != null) + addBiometricDetailsToZip(registrationPacket, fieldName, identity, subpacketZip, hashSequences, offlineMode); break; case PacketManagerConstants.DOCUMENTS_TYPE: - if (this.registrationPacket.getDocuments().get(fieldName) != null) - addDocumentDetailsToZip(fieldName, identity, subpacketZip, hashSequences, offlineMode); + if (registrationPacket.getDocuments().get(fieldName) != null) + addDocumentDetailsToZip(registrationPacket, fieldName, identity, subpacketZip, hashSequences, offlineMode); break; default: - if (this.registrationPacket.getDemographics().get(fieldName) != null) - identity.put(fieldName, this.registrationPacket.getDemographics().get(fieldName)); + if (registrationPacket.getDemographics().get(fieldName) != null) + identity.put(fieldName, registrationPacket.getDemographics().get(fieldName)); break; } } byte[] identityBytes = getIdentity(identity).getBytes(); - addEntryToZip(PacketManagerConstants.IDENTITY_FILENAME_WITH_EXT, identityBytes, subpacketZip); + addEntryToZip(registrationPacket, PacketManagerConstants.IDENTITY_FILENAME_WITH_EXT, identityBytes, subpacketZip); addHashSequenceWithSource(PacketManagerConstants.DEMOGRAPHIC_SEQ, PacketManagerConstants.IDENTITY_FILENAME, identityBytes, hashSequences); - addOtherFilesToZip(isDefault, subpacketZip, hashSequences, offlineMode); + addOtherFilesToZip(registrationPacket, isDefault, subpacketZip, hashSequences, offlineMode); } catch (JsonProcessingException e) { throw new PacketCreatorException(ErrorCode.OBJECT_TO_JSON_ERROR.getErrorCode(), @@ -254,22 +256,22 @@ private byte[] createSubpacket(double version, List schemaFields, boolea return out.toByteArray(); } - private void addDocumentDetailsToZip(String fieldName, Map identity, + private void addDocumentDetailsToZip(RegistrationPacket registrationPacket, String fieldName, Map identity, ZipOutputStream zipOutputStream, Map hashSequences, boolean offlineMode) throws PacketCreatorException { - Document document = this.registrationPacket.getDocuments().get(fieldName); + Document document = registrationPacket.getDocuments().get(fieldName); //filename without extension must be set as value in ID.json identity.put(fieldName, new DocumentType(fieldName, document.getType(), document.getFormat(), document.getRefNumber())); String fileName = String.format("%s.%s", fieldName, document.getFormat()); - addEntryToZip(fileName, document.getDocument(), zipOutputStream); - this.registrationPacket.getMetaData().put(fieldName, document.getType()); + addEntryToZip(registrationPacket, fileName, document.getDocument(), zipOutputStream); + registrationPacket.getMetaData().put(fieldName, document.getType()); addHashSequenceWithSource(PacketManagerConstants.DEMOGRAPHIC_SEQ, fieldName, document.getDocument(), hashSequences); } - private void addBiometricDetailsToZip(String fieldName, Map identity, + private void addBiometricDetailsToZip(RegistrationPacket registrationPacket, String fieldName, Map identity, ZipOutputStream zipOutputStream, Map hashSequences, boolean offlineMode) throws PacketCreatorException { - BiometricRecord birType = this.registrationPacket.getBiometrics().get(fieldName); + BiometricRecord birType = registrationPacket.getBiometrics().get(fieldName); if (birType != null && birType.getSegments() != null && !birType.getSegments().isEmpty()) { byte[] xmlBytes; @@ -280,7 +282,7 @@ private void addBiometricDetailsToZip(String fieldName, Map iden ErrorCode.BIR_TO_XML_ERROR.getErrorMessage().concat(ExceptionUtils.getStackTrace(e))); } - addEntryToZip(String.format(PacketManagerConstants.CBEFF_FILENAME_WITH_EXT, fieldName), xmlBytes, zipOutputStream); + addEntryToZip(registrationPacket, String.format(PacketManagerConstants.CBEFF_FILENAME_WITH_EXT, fieldName), xmlBytes, zipOutputStream); identity.put(fieldName, new BiometricsType(PacketManagerConstants.CBEFF_FILE_FORMAT, PacketManagerConstants.CBEFF_VERSION, String.format(PacketManagerConstants.CBEFF_FILENAME, fieldName))); addHashSequenceWithSource(PacketManagerConstants.BIOMETRIC_SEQ, String.format(PacketManagerConstants.CBEFF_FILENAME, @@ -296,36 +298,36 @@ private void addHashSequenceWithSource(String sequenceType, String name, byte[] hashSequences.get(sequenceType).addHashSource(name, bytes); } - private void addOtherFilesToZip(boolean isDefault, ZipOutputStream zipOutputStream, + private void addOtherFilesToZip(RegistrationPacket registrationPacket, boolean isDefault, ZipOutputStream zipOutputStream, Map hashSequences, boolean offlineMode) throws JsonProcessingException, PacketCreatorException, IOException, NoSuchAlgorithmException { if (isDefault) { - addOperationsBiometricsToZip(PacketManagerConstants.OFFICER, + addOperationsBiometricsToZip(registrationPacket, PacketManagerConstants.OFFICER, zipOutputStream, hashSequences, offlineMode); - addOperationsBiometricsToZip(PacketManagerConstants.SUPERVISOR, + addOperationsBiometricsToZip(registrationPacket, PacketManagerConstants.SUPERVISOR, zipOutputStream, hashSequences, offlineMode); - if (this.registrationPacket.getAudits() == null || this.registrationPacket.getAudits().isEmpty()) + if (registrationPacket.getAudits() == null || registrationPacket.getAudits().isEmpty()) throw new PacketCreatorException(ErrorCode.AUDITS_REQUIRED.getErrorCode(), ErrorCode.AUDITS_REQUIRED.getErrorMessage()); - byte[] auditBytes = JsonUtils.javaObjectToJsonString(this.registrationPacket.getAudits()).getBytes(); - addEntryToZip(PacketManagerConstants.AUDIT_FILENAME_WITH_EXT, auditBytes, zipOutputStream); + byte[] auditBytes = JsonUtils.javaObjectToJsonString(registrationPacket.getAudits()).getBytes(); + addEntryToZip(registrationPacket, PacketManagerConstants.AUDIT_FILENAME_WITH_EXT, auditBytes, zipOutputStream); addHashSequenceWithSource(PacketManagerConstants.OPERATIONS_SEQ, PacketManagerConstants.AUDIT_FILENAME, auditBytes, hashSequences); HashSequenceMetaInfo hashSequenceMetaInfo = hashSequences.get(PacketManagerConstants.OPERATIONS_SEQ); - addEntryToZip(PacketManagerConstants.PACKET_OPER_HASH_FILENAME, + addEntryToZip(registrationPacket, PacketManagerConstants.PACKET_OPER_HASH_FILENAME, PacketManagerHelper.generateHash(hashSequenceMetaInfo.getValue(), hashSequenceMetaInfo.getHashSource()), zipOutputStream); - this.registrationPacket.getMetaData().put(HASHSEQUENCE2, Lists.newArrayList(hashSequenceMetaInfo)); + registrationPacket.getMetaData().put(HASHSEQUENCE2, Lists.newArrayList(hashSequenceMetaInfo)); } - addPacketDataHash(hashSequences, zipOutputStream); - addEntryToZip(PacketManagerConstants.PACKET_META_FILENAME, getIdentity(this.registrationPacket.getMetaData()).getBytes(), zipOutputStream); + addPacketDataHash(registrationPacket, hashSequences, zipOutputStream); + addEntryToZip(registrationPacket, PacketManagerConstants.PACKET_META_FILENAME, getIdentity(registrationPacket.getMetaData()).getBytes(), zipOutputStream); } - private void addPacketDataHash(Map hashSequences, + private void addPacketDataHash(RegistrationPacket registrationPacket, Map hashSequences, ZipOutputStream zipOutputStream) throws PacketCreatorException, IOException, NoSuchAlgorithmException { LinkedList sequence = new LinkedList(); @@ -342,9 +344,9 @@ private void addPacketDataHash(Map hashSequences, hashSequenceMetaInfos.add(hashSequences.get(PacketManagerConstants.DEMOGRAPHIC_SEQ)); } if (hashSequenceMetaInfos.size() > 0) - this.registrationPacket.getMetaData().put(HASHSEQUENCE1, hashSequenceMetaInfos); + registrationPacket.getMetaData().put(HASHSEQUENCE1, hashSequenceMetaInfos); - addEntryToZip(PacketManagerConstants.PACKET_DATA_HASH_FILENAME, PacketManagerHelper.generateHash(sequence, data), + addEntryToZip(registrationPacket, PacketManagerConstants.PACKET_DATA_HASH_FILENAME, PacketManagerHelper.generateHash(sequence, data), zipOutputStream); } @@ -386,10 +388,10 @@ private Map> loadSchemaFields(String schemaJson) throws Pac } - private void addEntryToZip(String fileName, byte[] data, ZipOutputStream zipOutputStream) + private void addEntryToZip(RegistrationPacket registrationPacket, String fileName, byte[] data, ZipOutputStream zipOutputStream) throws PacketCreatorException { LOGGER.info(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.ID.toString(), - this.registrationPacket.getRegistrationId(), "Adding file : " + fileName); + registrationPacket.getRegistrationId(), "Adding file : " + fileName); try { if (data != null) { ZipEntry zipEntry = new ZipEntry(fileName); @@ -406,10 +408,10 @@ private String getIdentity(Object object) throws JsonProcessingException { return "{ \"identity\" : " + JsonUtils.javaObjectToJsonString(object) + " } "; } - private void addOperationsBiometricsToZip(String operationType, + private void addOperationsBiometricsToZip(RegistrationPacket registrationPacket, String operationType, ZipOutputStream zipOutputStream, Map hashSequences, boolean offlineMode) throws PacketCreatorException { - BiometricRecord biometrics = this.registrationPacket.getBiometrics().get(operationType); + BiometricRecord biometrics = registrationPacket.getBiometrics().get(operationType); if (biometrics != null && biometrics.getSegments() != null && !biometrics.getSegments().isEmpty()) { byte[] xmlBytes; @@ -422,8 +424,8 @@ private void addOperationsBiometricsToZip(String operationType, if (xmlBytes != null) { String fileName = operationType + PacketManagerConstants.CBEFF_EXT; - addEntryToZip(fileName, xmlBytes, zipOutputStream); - this.registrationPacket.getMetaData().put(String.format("%sBiometricFileName", operationType), fileName); + addEntryToZip(registrationPacket, fileName, xmlBytes, zipOutputStream); + registrationPacket.getMetaData().put(String.format("%sBiometricFileName", operationType), fileName); addHashSequenceWithSource(PacketManagerConstants.OPERATIONS_SEQ, operationType, xmlBytes, hashSequences); } } @@ -446,4 +448,10 @@ private String getcurrentTimeStamp() { return LocalDateTime.now(ZoneId.of("UTC")).format(format); } + @Override + public void removePacket(String id) { + if (registrationPacketMap.get(id) != null) + registrationPacketMap.remove(id); + } + } diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/spi/IPacketWriter.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/spi/IPacketWriter.java index 5691507d94..39b9fa0211 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/spi/IPacketWriter.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/spi/IPacketWriter.java @@ -33,4 +33,6 @@ public interface IPacketWriter { public List persistPacket(String id, String version, String schemaJson, String source, String process, String additionalInfoReqId, String refId, boolean offlineMode); + + void removePacket(String id); } diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/IdSchemaUtils.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/IdSchemaUtils.java index 7f883ccc84..bfcfa33457 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/IdSchemaUtils.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/IdSchemaUtils.java @@ -84,6 +84,7 @@ public class IdSchemaUtils { private ObjectMapper objMapper; @Autowired + @Qualifier("selfTokenRestTemplate") private RestTemplate restTemplate; diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/ZipUtils.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/ZipUtils.java index 92d17a78e4..c761452ca0 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/ZipUtils.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/ZipUtils.java @@ -59,77 +59,4 @@ public static InputStream unzipAndGetFile(byte[] packet, String file) throws IOE return null; } - - /** - * Method to unzip the file in-memeory and search the required file exists - * - * @param packetStream zip file to be unzipped - * @param file file to search within zip file - * @return return true if found the required file, false otherwise - * @throws IOException if any error occored while unzipping the file - */ - public static boolean unzipAndCheckIsFileExist(InputStream packetStream, String file) throws IOException { - boolean isExist = false; - - try (ZipInputStream zis = new ZipInputStream(packetStream)) { - ZipEntry ze = zis.getNextEntry(); - while (ze != null) { - String fileName = ze.getName(); - String fileNameWithOutExt = FilenameUtils.removeExtension(fileName); - if (FilenameUtils.equals(fileNameWithOutExt, file, true, IOCase.INSENSITIVE)) { - isExist = true; - break; - } - zis.closeEntry(); - ze = zis.getNextEntry(); - } - zis.closeEntry(); - } finally { - packetStream.close(); - } - return isExist; - } - - /** - * Method to unzip the file for passed destination path - * - * @param input zip file to be unzipped - * @param desDir location where to unzip the files - * @throws IOException if any error occurred while unzipping - */ - public static void unZipFromInputStream(InputStream input, String desDir) throws IOException { - byte[] buffer = new byte[1024]; - try (ZipInputStream zis = new ZipInputStream(input)) { - File folder = FileUtils.getFile(desDir); - if (!folder.exists()) { - if (folder.mkdir()) { - - } - } - ZipEntry ze = zis.getNextEntry(); - while (ze != null) { - if (ze.isDirectory()) { - File file = FileUtils.getFile(desDir + ze.getName()); - if (file.mkdir()) { - - } - } else { - String fileName = ze.getName(); - File newFile = FileUtils.getFile(desDir + File.separator + fileName); - if (FileUtils.getFile(newFile.getParent()).mkdirs()) { - FileOutputStream fos = new FileOutputStream(newFile); - int len; - while ((len = zis.read(buffer)) > 0) { - fos.write(buffer, 0, len); - } - fos.close(); - } - } - ze = zis.getNextEntry(); - } - zis.closeEntry(); - } finally { - input.close(); - } - } } diff --git a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OfflinePacketCryptoServiceTest.java b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OfflinePacketCryptoServiceTest.java index 490516b5e1..5144138ef5 100644 --- a/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OfflinePacketCryptoServiceTest.java +++ b/commons-packet/commons-packet-manager/src/test/java/io/mosip/commons/packet/test/impl/OfflinePacketCryptoServiceTest.java @@ -11,11 +11,10 @@ import io.mosip.kernel.core.util.JsonUtils; import io.mosip.kernel.cryptomanager.dto.CryptomanagerResponseDto; import io.mosip.kernel.cryptomanager.service.impl.CryptomanagerServiceImpl; -import io.mosip.kernel.signature.dto.ValidatorResponseDto; import io.mosip.kernel.signature.service.SignatureService; import io.mosip.kernel.signature.service.impl.SignatureServiceImpl; import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang3.ArrayUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketReaderController.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketReaderController.java index f045971f35..9814123ca8 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketReaderController.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketReaderController.java @@ -53,7 +53,6 @@ public class PacketReaderController { @Autowired private PacketReaderService packetReaderService; @PreAuthorize("hasAnyRole(@authorizedRoles.getPostsearchfield())") - //@PreAuthorize("hasAnyRole('DATA_READ')") @ResponseFilter @PostMapping(path = "/searchField", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "searchField", description = "searchField", tags = { "packet-reader-controller" }) @@ -77,7 +76,6 @@ public ResponseWrapper searchField(@RequestBody(required = tru return response; } - //@PreAuthorize("hasAnyRole('DATA_READ')") @PreAuthorize("hasAnyRole(@authorizedRoles.getPostsearchfields())") @ResponseFilter @PostMapping(path = "/searchFields", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -107,7 +105,6 @@ public ResponseWrapper searchFields(@RequestBody(required = tr return response; } - //@PreAuthorize("hasAnyRole('DOCUMENT_READ')") @ResponseFilter @PreAuthorize("hasAnyRole(@authorizedRoles.getPostdocument())") @PostMapping(path = "/document", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -129,7 +126,6 @@ public ResponseWrapper getDocument(@RequestBody(required = true) Reque return response; } - //@PreAuthorize("hasAnyRole('BIOMETRIC_READ')") @ResponseFilter @PreAuthorize("hasAnyRole(@authorizedRoles.getPostbiometrics())") @PostMapping(path = "/biometrics", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -152,7 +148,6 @@ public ResponseWrapper getBiometrics(@RequestBody(required = tr return response; } - //@PreAuthorize("hasAnyRole('METADATA_READ')") @ResponseFilter @PreAuthorize("hasAnyRole(@authorizedRoles.getPostmetainfo())") @PostMapping(path = "/metaInfo", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -173,7 +168,6 @@ public ResponseWrapper getMetaInfo(@RequestBody(required = tru return response; } - //@PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PreAuthorize("hasAnyRole(@authorizedRoles.getPostaudits())") @PostMapping(path = "/audits", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -200,7 +194,6 @@ public ResponseWrapper> getAudits(@RequestBody(required = return response; } - //@PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PreAuthorize("hasAnyRole(@authorizedRoles.getPostvalidatepacket())") @PostMapping(path = "/validatePacket", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -219,7 +212,6 @@ public ResponseWrapper validatePacket(@RequestBody(requi return response; } - //@PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @PreAuthorize("hasAnyRole(@authorizedRoles.getPostgettags())") @ResponseFilter @PostMapping(path = "/getTags", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -238,7 +230,6 @@ public ResponseWrapper getTags( return response; } - //@PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PreAuthorize("hasAnyRole(@authorizedRoles.getPostinfo())") @PostMapping(path = "/info", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java index 773e31d3bc..d9193d0099 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/controller/PacketWriterController.java @@ -41,7 +41,6 @@ public class PacketWriterController { @Autowired private PacketWriterService packetWriterService; @PreAuthorize("hasAnyRole(@authorizedRoles.getPutcreatepacket())") - //@PreAuthorize("hasAnyRole('REGISTRATION_PROCESSOR')") @ResponseFilter @PutMapping(path = "/createPacket", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "createPacket", description = "createPacket", tags = { "packet-writer-controller" }) diff --git a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/service/PacketReaderService.java b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/service/PacketReaderService.java index b7f65dd94e..8831c9c915 100644 --- a/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/service/PacketReaderService.java +++ b/commons-packet/commons-packet-service/src/main/java/io/mosip/commons/packetmanager/service/PacketReaderService.java @@ -80,6 +80,7 @@ public class PacketReaderService { private PacketReader packetReader; @Autowired + @Qualifier("selfTokenRestTemplate") private RestTemplate restTemplate; @Autowired @@ -147,7 +148,17 @@ private InfoResponseDto infoInternal(String id) { return infoResponseDto; } catch (Exception e) { LOGGER.error(PacketManagerLogger.SESSIONID, PacketManagerLogger.REGISTRATIONID, id, ExceptionUtils.getStackTrace(e)); - throw new BaseUncheckedException(e.getMessage()); + + if (e instanceof BaseUncheckedException) { + BaseUncheckedException ex = (BaseUncheckedException) e; + throw ex; + } + else if (e instanceof BaseCheckedException) { + BaseCheckedException ex = (BaseCheckedException) e; + throw new BaseUncheckedException(ex.getErrorCode(), ex.getMessage(), ex); + } + else + throw new BaseUncheckedException(PacketUtilityErrorCodes.UNKNOWN_EXCEPTION.getErrorCode(), e.getMessage(), e); } } @@ -213,7 +224,7 @@ public ContainerInfoDto findPriority(String field, List info) } private ContainerInfoDto getContainerInfoByDefaultPriority(String field, List info) { - if (org.apache.commons.lang.StringUtils.isNotEmpty(defaultPriority)) { + if (StringUtils.isNotEmpty(defaultPriority)) { String[] val = defaultPriority.split(","); if (val != null && val.length > 0) { for (String value : val) { @@ -247,7 +258,7 @@ private ContainerInfoDto getContainerInfoBySourceAndProcess(String field, String } private String getDefaultSource(String process) { - if (org.apache.commons.lang.StringUtils.isNotEmpty(defaultPriority)) { + if (StringUtils.isNotEmpty(defaultPriority)) { String[] val = defaultPriority.split(","); if (val != null && val.length > 0) { for (String value : val) { diff --git a/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties b/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties index 89ac215c39..6d7e2f43a3 100644 --- a/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties +++ b/commons-packet/commons-packet-service/src/main/resources/bootstrap.properties @@ -1,8 +1,8 @@ spring.cloud.config.uri=http://localhost:51000/config spring.cloud.config.label=master spring.profiles.active=mz -spring.application.name=packet-manager,application -spring.cloud.config.name=packet-manager,application +spring.application.name=application,packet-manager +spring.cloud.config.name=application,packet-manager server.port=8093 #disabling health check so that client doesnt try to load properties from sprint config server every # 5 minutes (should not be done in production) From 75e1ff98677045578cd84d9390a3fd9b969816c2 Mon Sep 17 00:00:00 2001 From: Monobikash Das Date: Sun, 23 Jan 2022 21:47:52 +0530 Subject: [PATCH 17/17] selfTokenRestTemplate fix for regclient --- .../impl/OnlinePacketCryptoServiceImpl.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java index 71430b2048..046d81cba2 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationContext; import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; @@ -65,8 +66,8 @@ public class OnlinePacketCryptoServiceImpl implements IPacketCryptoService { private boolean isPrependThumbprintEnabled; @Autowired - @Qualifier("selfTokenRestTemplate") - private RestTemplate restTemplate; + private ApplicationContext applicationContext; + private RestTemplate restTemplate = null; @Autowired private ObjectMapper mapper; @@ -97,7 +98,7 @@ public byte[] sign(byte[] packet) { .parse(DateUtils.getUTCCurrentDateTimeString(DATETIME_PATTERN), format); request.setRequesttime(localdatetime); HttpEntity> httpEntity = new HttpEntity<>(request); - ResponseEntity response = restTemplate.exchange(keymanagerCsSignUrl, HttpMethod.POST, httpEntity, + ResponseEntity response = getRestTemplate().exchange(keymanagerCsSignUrl, HttpMethod.POST, httpEntity, String.class); LinkedHashMap responseMap = (LinkedHashMap) mapper.readValue(response.getBody(), LinkedHashMap.class).get("response"); if (responseMap != null && responseMap.size() > 0) @@ -143,7 +144,7 @@ public byte[] encrypt(String refId, byte[] packet) { request.setVersion(APPLICATION_VERSION); HttpEntity> httpEntity = new HttpEntity<>(request); - ResponseEntity response = restTemplate.exchange(cryptomanagerEncryptUrl, HttpMethod.POST, httpEntity, String.class); + ResponseEntity response = getRestTemplate().exchange(cryptomanagerEncryptUrl, HttpMethod.POST, httpEntity, String.class); CryptomanagerResponseDto responseObject = mapper.readValue(response.getBody(), CryptomanagerResponseDto.class); if (responseObject != null && responseObject.getErrors() != null && !responseObject.getErrors().isEmpty()) { @@ -213,7 +214,7 @@ public byte[] decrypt(String refId, byte[] packet) { request.setVersion(APPLICATION_VERSION); HttpEntity> httpEntity = new HttpEntity<>(request); - ResponseEntity response = restTemplate.exchange(cryptomanagerDecryptUrl, HttpMethod.POST, httpEntity, String.class); + ResponseEntity response = getRestTemplate().exchange(cryptomanagerDecryptUrl, HttpMethod.POST, httpEntity, String.class); CryptomanagerResponseDto responseObject = mapper.readValue(response.getBody(), CryptomanagerResponseDto.class); @@ -270,7 +271,7 @@ public boolean verify(String refId, byte[] packet, byte[] signature) { .parse(DateUtils.getUTCCurrentDateTimeString(DATETIME_PATTERN), format); request.setRequesttime(localdatetime); HttpEntity> httpEntity = new HttpEntity<>(request); - ResponseEntity response = restTemplate.exchange(keymanagerCsverifysignUrl, HttpMethod.POST, httpEntity, + ResponseEntity response = getRestTemplate().exchange(keymanagerCsverifysignUrl, HttpMethod.POST, httpEntity, String.class); LinkedHashMap responseMap = (LinkedHashMap) mapper.readValue(response.getBody(), LinkedHashMap.class).get("response");//.get("signature"); if (responseMap != null && responseMap.size() > 0) { @@ -297,7 +298,7 @@ public boolean verify(String refId, byte[] packet, byte[] signature) { private String getPublicKey(String refId) throws IOException { String machineId = refId.split("_")[1]; - ResponseEntity response = restTemplate.exchange(syncdataGetTpmKeyUrl+machineId, HttpMethod.GET, null, + ResponseEntity response = getRestTemplate().exchange(syncdataGetTpmKeyUrl+machineId, HttpMethod.GET, null, String.class); LinkedHashMap responseMap = (LinkedHashMap) mapper.readValue(response.getBody(), LinkedHashMap.class).get("response");//.get("signature"); if (responseMap != null && responseMap.size() > 0) @@ -308,4 +309,12 @@ private String getPublicKey(String refId) throws IOException { throw new SignatureException(); } } + + private RestTemplate getRestTemplate() { + if (this.restTemplate == null) { + this.restTemplate = (RestTemplate)this.applicationContext.getBean("selfTokenRestTemplate"); + } + + return this.restTemplate; + } }