Skip to content

Commit

Permalink
modified addVerified claim to accepct list now (mosip#235)
Browse files Browse the repository at this point in the history
Signed-off-by: Mohd Kaif Siddique <[email protected]>
Co-authored-by: Mohd Kaif Siddique <[email protected]>
  • Loading branch information
kaifk468 and Mohd Kaif Siddique authored Sep 5, 2024
1 parent de79c90 commit 8ea89a7
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import io.mosip.esignet.mock.identitysystem.service.IdentityService;
import io.mosip.esignet.mock.identitysystem.util.HelperUtil;

import java.util.List;


@RestController
@RequestMapping("/")
Expand Down Expand Up @@ -62,7 +64,7 @@ public ResponseWrapper<IdentityData> getIdentity(@PathVariable(value = "individu
}

@PostMapping(value = "identity/add-verified-claim")
public ResponseWrapper<VerifiedClaimStatus> createVerifiedClaim(@Valid @RequestBody RequestWrapper<VerifiedClaimRequestDto> requestWrapper) throws MockIdentityException {
public ResponseWrapper<VerifiedClaimStatus> createVerifiedClaim(@Valid @RequestBody RequestWrapper<List<VerifiedClaimRequestDto>> requestWrapper) throws MockIdentityException {
ResponseWrapper<VerifiedClaimStatus> response = new ResponseWrapper<>();
VerifiedClaimStatus verifiedClaimStatus = new VerifiedClaimStatus();
verifiedClaimStatus.setStatus("Verified Claim added successfully");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import io.mosip.esignet.mock.identitysystem.dto.VerifiedClaimRequestDto;
import io.mosip.esignet.mock.identitysystem.exception.MockIdentityException;

import java.util.List;

public interface IdentityService {

public void addIdentity(IdentityData mockAuthDataRequest) throws MockIdentityException;
Expand All @@ -18,7 +20,7 @@ public interface IdentityService {

public IdentityData getIdentity(String individualId) throws MockIdentityException;

public void addVerifiedClaim(VerifiedClaimRequestDto request) throws MockIdentityException;
public void addVerifiedClaim(List<VerifiedClaimRequestDto> request) throws MockIdentityException;

public JsonNode getIdentityV2(String individualId) throws MockIdentityException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
package io.mosip.esignet.mock.identitysystem.service.impl;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import com.fasterxml.jackson.databind.JsonNode;
Expand Down Expand Up @@ -36,7 +38,7 @@ public class IdentityServiceImpl implements IdentityService {
private String fieldLang;

@Autowired
ObjectMapper objectmapper;
ObjectMapper objectMapper;

@Autowired
IdentityRepository identityRepository;
Expand All @@ -51,7 +53,7 @@ public void addIdentity(IdentityData identityData) throws MockIdentityException
}
MockIdentity mockIdentity = new MockIdentity();
try {
mockIdentity.setIdentityJson(objectmapper.writeValueAsString(identityData));
mockIdentity.setIdentityJson(objectMapper.writeValueAsString(identityData));
} catch (JsonProcessingException e) {
throw new MockIdentityException(ErrorConstants.JSON_PROCESSING_ERROR);
}
Expand All @@ -66,7 +68,7 @@ public void updateIdentity(IdentityData identityData) throws MockIdentityExcepti
}
MockIdentity mockIdentity = new MockIdentity();
try {
mockIdentity.setIdentityJson(objectmapper.writeValueAsString(identityData));
mockIdentity.setIdentityJson(objectMapper.writeValueAsString(identityData));
} catch (JsonProcessingException e) {
throw new MockIdentityException(ErrorConstants.JSON_PROCESSING_ERROR);
}
Expand All @@ -82,7 +84,7 @@ public IdentityData getIdentity(String individualId) throws MockIdentityExceptio
}
IdentityData identityData = new IdentityData();
try {
identityData = objectmapper.readValue(mockIdentity.get().getIdentityJson(), IdentityData.class);
identityData = objectMapper.readValue(mockIdentity.get().getIdentityJson(), IdentityData.class);
} catch (JsonProcessingException e) {
throw new MockIdentityException(ErrorConstants.JSON_PROCESSING_ERROR);
}
Expand All @@ -96,7 +98,7 @@ public JsonNode getIdentityV2(String individualId) throws MockIdentityException
throw new MockIdentityException(ErrorConstants.INVALID_INDIVIDUAL_ID);
}
try {
return objectmapper.readTree(mockIdentity.get().getIdentityJson());
return objectMapper.readTree(mockIdentity.get().getIdentityJson());
} catch (JsonProcessingException e) {
throw new MockIdentityException(ErrorConstants.JSON_PROCESSING_ERROR);
}
Expand All @@ -105,27 +107,33 @@ public JsonNode getIdentityV2(String individualId) throws MockIdentityException


@Override
public void addVerifiedClaim(VerifiedClaimRequestDto verifiedClaimRequestDto) throws MockIdentityException {
public void addVerifiedClaim(List<VerifiedClaimRequestDto> verifiedClaimRequestDtoList) throws MockIdentityException {
VerifiedClaim verifiedClaim =null;
JsonNode identity = getIdentityV2(verifiedClaimRequestDto.getIndividualId());
Object fieldValue= HelperUtil.getIdentityDataValue(identity, verifiedClaimRequestDto.getClaim(),fieldLang);
if(fieldValue==null){
throw new MockIdentityException(ErrorConstants.INVALID_CLAIM);
JsonNode identity = getIdentityV2(verifiedClaimRequestDtoList.get(0).getIndividualId());
List<VerifiedClaim> verifiedClaimList= new ArrayList<>();

for(VerifiedClaimRequestDto verifiedClaimRequestDto: verifiedClaimRequestDtoList){
Object fieldValue= HelperUtil.getIdentityDataValue(identity, verifiedClaimRequestDto.getClaim(),fieldLang);
if(fieldValue==null){
throw new MockIdentityException(ErrorConstants.INVALID_CLAIM);
}
String idHash= HelperUtil.generateB64EncodedHash(ALGO_SHA3_256, verifiedClaimRequestDto.getIndividualId()+
verifiedClaimRequestDto.getTrustFramework().toLowerCase()+ verifiedClaimRequestDto.getClaim());
Optional<VerifiedClaim> verifiedClaimOptional=verifiedClaimRepository.findById(idHash);
if(verifiedClaimOptional.isPresent()){
throw new MockIdentityException(ErrorConstants.CLAIM_ALREADY_EXISTS);
}
verifiedClaim = new VerifiedClaim();
verifiedClaim.setId(idHash);
verifiedClaim.setClaim(verifiedClaimRequestDto.getClaim());
verifiedClaim.setIndividualId(verifiedClaimRequestDto.getIndividualId());
verifiedClaim.setVerifiedDateTime(verifiedClaimRequestDto.getVerifiedDateTime());
verifiedClaim.setTrustFramework(verifiedClaimRequestDto.getTrustFramework());
verifiedClaim.setCrDateTime(LocalDateTime.now());
verifiedClaim.setActive(true);
verifiedClaimList.add(verifiedClaim);
}
String idHash= HelperUtil.generateB64EncodedHash(ALGO_SHA3_256, verifiedClaimRequestDto.getIndividualId()+ verifiedClaimRequestDto.getTrustFramework().toLowerCase()+ verifiedClaimRequestDto.getClaim());
Optional<VerifiedClaim> verifiedClaimOptional=verifiedClaimRepository.findById(idHash);
if(verifiedClaimOptional.isPresent()){
throw new MockIdentityException(ErrorConstants.CLAIM_ALREADY_EXISTS);
}
verifiedClaim = new VerifiedClaim();
verifiedClaim.setId(idHash);
verifiedClaim.setClaim(verifiedClaimRequestDto.getClaim());
verifiedClaim.setIndividualId(verifiedClaimRequestDto.getIndividualId());
verifiedClaim.setVerifiedDateTime(verifiedClaimRequestDto.getVerifiedDateTime());
verifiedClaim.setTrustFramework(verifiedClaimRequestDto.getTrustFramework());
verifiedClaim.setCrDateTime(LocalDateTime.now());
verifiedClaim.setActive(true);
verifiedClaimRepository.save(verifiedClaim);
verifiedClaimRepository.saveAll(verifiedClaimList);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import io.mosip.esignet.mock.identitysystem.dto.*;
import org.junit.Before;
Expand Down Expand Up @@ -67,7 +69,7 @@ public void init() {
}

@Test
public void createIdentity_withValidIdentity_returnSuccessResponse() throws JsonProcessingException, Exception {
public void createIdentity_withValidIdentity_returnSuccessResponse() throws Exception {
RequestWrapper<IdentityData> requestWrapper = new RequestWrapper<IdentityData>();
ZonedDateTime requestTime = ZonedDateTime.now(ZoneOffset.UTC);
requestWrapper.setRequestTime(requestTime.format(DateTimeFormatter.ofPattern(UTC_DATETIME_PATTERN)));
Expand All @@ -81,7 +83,7 @@ public void createIdentity_withValidIdentity_returnSuccessResponse() throws Json
}

@Test
public void createIdentity_withInvalidIdentity_returnErrorResponse() throws JsonProcessingException, Exception {
public void createIdentity_withInvalidIdentity_returnErrorResponse() throws Exception {
RequestWrapper<IdentityData> requestWrapper = new RequestWrapper<IdentityData>();
ZonedDateTime requestTime = ZonedDateTime.now(ZoneOffset.UTC);
requestWrapper.setRequestTime(requestTime.format(DateTimeFormatter.ofPattern(UTC_DATETIME_PATTERN)));
Expand All @@ -106,39 +108,43 @@ public void getIdentity_withValidId_returnSuccessResponse() throws Exception {
}

@Test
public void addVerifiedCliams_withValidDetails_returnSuccessResponse() throws Exception {
public void addVerifiedClaims_withValidDetails_returnSuccessResponse() throws Exception {

RequestWrapper<VerifiedClaimRequestDto> requestWrapper = new RequestWrapper<VerifiedClaimRequestDto>();
RequestWrapper<List<VerifiedClaimRequestDto>> requestWrapper = new RequestWrapper<List<VerifiedClaimRequestDto>>();
ZonedDateTime requestTime = ZonedDateTime.now(ZoneOffset.UTC);
requestWrapper.setRequestTime(requestTime.format(DateTimeFormatter.ofPattern(UTC_DATETIME_PATTERN)));

List<VerifiedClaimRequestDto> verifiedClaimRequestDtoList=new ArrayList<>();
VerifiedClaimRequestDto verifiedClaimRequestDto = new VerifiedClaimRequestDto();
verifiedClaimRequestDto.setClaim("testClaim");
verifiedClaimRequestDto.setIndividualId("123456789");
verifiedClaimRequestDto.setTrustFramework("testTrustFramework");
requestWrapper.setRequest(verifiedClaimRequestDto);
verifiedClaimRequestDtoList.add(verifiedClaimRequestDto);
requestWrapper.setRequest(verifiedClaimRequestDtoList);

Mockito.doNothing().when(identityService).addVerifiedClaim(verifiedClaimRequestDto);
Mockito.doNothing().when(identityService).addVerifiedClaim(verifiedClaimRequestDtoList);
Mockito.when(identityService.getIdentity(Mockito.anyString())).thenReturn(identityRequest);

mockMvc.perform(post("/identity/add-verified-claim").content(objectMapper.writeValueAsString(requestWrapper))
.contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
.andExpect(jsonPath("$.response.status").value("Verified Claim added successfully"));;
.andExpect(jsonPath("$.response.status").value("Verified Claim added successfully"));
}

@Test
public void addVerifiedClaim_withInvalidClaim_returnErrorResponse() throws Exception {
RequestWrapper<VerifiedClaimRequestDto> requestWrapper = new RequestWrapper<VerifiedClaimRequestDto>();
RequestWrapper<List<VerifiedClaimRequestDto>> requestWrapper = new RequestWrapper<List<VerifiedClaimRequestDto>>();
ZonedDateTime requestTime = ZonedDateTime.now(ZoneOffset.UTC);
requestWrapper.setRequestTime(requestTime.format(DateTimeFormatter.ofPattern(UTC_DATETIME_PATTERN)));

List<VerifiedClaimRequestDto> verifiedClaimRequestDtoList=new ArrayList<>();
VerifiedClaimRequestDto verifiedClaimRequestDto = new VerifiedClaimRequestDto();
verifiedClaimRequestDto.setTrustFramework("testTrustFramework");
verifiedClaimRequestDto.setIndividualId("123456789");
verifiedClaimRequestDto.setClaim(null);
requestWrapper.setRequest(verifiedClaimRequestDto);
verifiedClaimRequestDtoList.add(verifiedClaimRequestDto);
requestWrapper.setRequest(verifiedClaimRequestDtoList);

Mockito.doNothing().when(identityService).addVerifiedClaim(verifiedClaimRequestDto);
Mockito.doNothing().when(identityService).addVerifiedClaim(verifiedClaimRequestDtoList);
mockMvc.perform(post("/identity/add-verified-claim").content(objectMapper.writeValueAsString(requestWrapper))
.contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
.andExpect(jsonPath("$.errors").isNotEmpty())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import org.springframework.test.util.ReflectionTestUtils;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import static org.junit.Assert.assertEquals;
Expand All @@ -43,16 +45,19 @@ public class IdentityServiceTest {
IdentityServiceImpl identityService;



@Test
public void addVerifiedClaim_withValidDetails_thenPass() throws Exception {
ReflectionTestUtils.setField(identityService, "fieldLang", "eng");
ReflectionTestUtils.setField(identityService, "objectmapper", new ObjectMapper());
ReflectionTestUtils.setField(identityService, "objectMapper", new ObjectMapper());

List<VerifiedClaimRequestDto> verifiedClaimRequestDtoList=new ArrayList<>();
VerifiedClaimRequestDto requestDto = new VerifiedClaimRequestDto();
requestDto.setTrustFramework("trust_framework");
requestDto.setClaim("email");
requestDto.setIndividualId("123456");
requestDto.setVerifiedDateTime(LocalDateTime.now());
verifiedClaimRequestDtoList.add(requestDto);

IdentityData identityData = new IdentityData();
identityData.setEmail("[email protected]");
Expand All @@ -63,21 +68,22 @@ public void addVerifiedClaim_withValidDetails_thenPass() throws Exception {
mockIdentity.setIdentityJson("{\"individualId\":\"8267411571\",\"pin\":\"111111\",\"fullName\":[{\"language\":\"fra\",\"value\":\"Siddharth K Mansour\"},{\"language\":\"ara\",\"value\":\"تتگلدكنسَزقهِقِفل دسييسيكدكنوڤو\"},{\"language\":\"eng\",\"value\":\"Siddharth K Mansour\"}],\"email\":\"[email protected]\",\"phone\":\"+919427357934\"}");
Mockito.when(verifiedClaimRepository.findById(Mockito.anyString())).thenReturn(Optional.empty());
Mockito.when(identityRepository.findById(Mockito.anyString())).thenReturn(Optional.of(mockIdentity));
identityService.addVerifiedClaim(requestDto);
identityService.addVerifiedClaim(verifiedClaimRequestDtoList);
}

@Test
public void addVerifiedClaim_withInValidIndividualId_thenFail() {
List<VerifiedClaimRequestDto> verifiedClaimRequestDtoList=new ArrayList<>();
VerifiedClaimRequestDto requestDto = new VerifiedClaimRequestDto();
requestDto.setTrustFramework("trust_framework");
requestDto.setClaim("claim");
requestDto.setIndividualId("123456");
requestDto.setVerifiedDateTime(LocalDateTime.now());

verifiedClaimRequestDtoList.add(requestDto);
Mockito.when(identityRepository.findById(Mockito.anyString())).thenReturn(Optional.empty());

try{
identityService.addVerifiedClaim(requestDto);
identityService.addVerifiedClaim(verifiedClaimRequestDtoList);
}catch (MockIdentityException e){
Assert.assertEquals(ErrorConstants.INVALID_INDIVIDUAL_ID,e.getErrorCode());
}
Expand Down

0 comments on commit 8ea89a7

Please sign in to comment.