Skip to content

Commit

Permalink
ES-35 test case failures and removed code duplication (mosip#284)
Browse files Browse the repository at this point in the history
Co-authored-by: ase-101 <>
Signed-off-by: ase-101 <sunkadaeanusha@gmail.com>
  • Loading branch information
ase-101 committed Jan 23, 2024
1 parent 91d785b commit 24ea69b
Show file tree
Hide file tree
Showing 29 changed files with 327 additions and 401 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,8 @@
import io.mosip.esignet.api.util.ActionStatus;
import io.mosip.esignet.core.constants.Constants;
import io.mosip.esignet.core.constants.ErrorConstants;
import io.mosip.esignet.core.dto.ClientDetailCreateRequest;
import io.mosip.esignet.core.dto.ClientDetailResponse;
import io.mosip.esignet.core.dto.ClientDetailUpdateRequest;
import io.mosip.esignet.core.dto.ClientDetailCreateV2Request;
import io.mosip.esignet.core.dto.ClientDetailUpdateV2Request;
import io.mosip.esignet.core.dto.*;
import io.mosip.esignet.core.dto.ClientDetailCreateRequestV2;
import io.mosip.esignet.core.exception.EsignetException;
import io.mosip.esignet.core.exception.InvalidClientException;
import io.mosip.esignet.core.spi.ClientManagementService;
Expand All @@ -37,10 +34,7 @@

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;

import static io.mosip.esignet.core.constants.Constants.CLIENT_ACTIVE_STATUS;

Expand Down Expand Up @@ -122,7 +116,7 @@ private ClientDetailResponse getClientDetailResponse(ClientDetail clientDetail)
}

private String getClientNameLanguageMapAsJsonString(Map<String, String> clientNameMap, String clientName) {
clientNameMap.put("@none", clientName);
clientNameMap.put(Constants.NONE_LANG_KEY, clientName);
JSONObject clientNameObject = new JSONObject(clientNameMap);
return clientNameObject.toString();
}
Expand Down Expand Up @@ -179,7 +173,13 @@ public io.mosip.esignet.core.dto.ClientDetail getClientDetails(String clientId)

io.mosip.esignet.core.dto.ClientDetail dto = new io.mosip.esignet.core.dto.ClientDetail();
dto.setId(clientId);
dto.setName(result.get().getName());
try {
dto.setName(objectMapper.readValue(result.get().getName(), new TypeReference<Map<String, String>>() {}));
} catch (Exception e) {
log.error("Failed to parse client name as json falling back to @none");
dto.setName(new HashMap<>());
dto.getName().put(Constants.NONE_LANG_KEY, result.get().getName());
}
dto.setRpId(result.get().getRpId());
dto.setLogoUri(result.get().getLogoUri());
dto.setStatus(result.get().getStatus());
Expand All @@ -199,20 +199,20 @@ public io.mosip.esignet.core.dto.ClientDetail getClientDetails(String clientId)
return dto;
}

@CacheEvict(value = Constants.CLIENT_DETAIL_CACHE, key = "#clientDetailCreateV2Request.getClientId()")
@CacheEvict(value = Constants.CLIENT_DETAIL_CACHE, key = "#clientDetailCreateRequestV2.getClientId()")
@Override
public ClientDetailResponse createOIDCClientV2(ClientDetailCreateV2Request clientDetailCreateV2Request) throws EsignetException {
Optional<ClientDetail> result = clientDetailRepository.findById(clientDetailCreateV2Request.getClientId());
public ClientDetailResponse createOIDCClientV2(ClientDetailCreateRequestV2 clientDetailCreateRequestV2) throws EsignetException {
Optional<ClientDetail> result = clientDetailRepository.findById(clientDetailCreateRequestV2.getClientId());
if (result.isPresent()) {
log.error("Duplicate Client Id : {}", ErrorConstants.DUPLICATE_CLIENT_ID);
throw new EsignetException(ErrorConstants.DUPLICATE_CLIENT_ID);
}

ClientDetail clientDetail = buildClientDetailEntity(clientDetailCreateV2Request);
ClientDetail clientDetail = buildClientDetailEntity(clientDetailCreateRequestV2);

String clientName = getClientNameLanguageMapAsJsonString(
clientDetailCreateV2Request.getClientNameLangMap(),
clientDetailCreateV2Request.getClientName()
clientDetailCreateRequestV2.getClientNameLangMap(),
clientDetailCreateRequestV2.getClientName()
);
clientDetail.setName(clientName);

Expand All @@ -224,25 +224,25 @@ public ClientDetailResponse createOIDCClientV2(ClientDetailCreateV2Request clien
}

auditWrapper.logAudit(AuditHelper.getClaimValue(SecurityContextHolder.getContext(), claimName),
Action.OIDC_CLIENT_CREATE, ActionStatus.SUCCESS, AuditHelper.buildAuditDto(clientDetailCreateV2Request.getClientId()), null);
Action.OIDC_CLIENT_CREATE, ActionStatus.SUCCESS, AuditHelper.buildAuditDto(clientDetailCreateRequestV2.getClientId()), null);

return getClientDetailResponse(clientDetail);
}

@CacheEvict(value = Constants.CLIENT_DETAIL_CACHE, key = "#clientId")
@Override
public ClientDetailResponse updateOIDCClientV2(String clientId, ClientDetailUpdateV2Request clientDetailUpdateV2Request) throws EsignetException {
public ClientDetailResponse updateOIDCClientV2(String clientId, ClientDetailUpdateRequestV2 clientDetailUpdateRequestV2) throws EsignetException {
Optional<ClientDetail> result = clientDetailRepository.findById(clientId);
if (!result.isPresent()) {
log.error("Invalid Client Id : {}", ErrorConstants.INVALID_CLIENT_ID);
throw new EsignetException(ErrorConstants.INVALID_CLIENT_ID);
}

ClientDetail clientDetail = buildClientDetailEntity(result.get(), clientDetailUpdateV2Request);
ClientDetail clientDetail = buildClientDetailEntity(result.get(), clientDetailUpdateRequestV2);

String clientName = getClientNameLanguageMapAsJsonString(
clientDetailUpdateV2Request.getClientNameLangMap(),
clientDetailUpdateV2Request.getClientName()
clientDetailUpdateRequestV2.getClientNameLangMap(),
clientDetailUpdateRequestV2.getClientName()
);
clientDetail.setName(clientName);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public void createClient_withExistingClientId_thenFail() {

@Test
public void createClientV2_withValidDetail_thenPass() throws Exception {
ClientDetailCreateV2Request clientCreateV2ReqDto = new ClientDetailCreateV2Request();
ClientDetailCreateRequestV2 clientCreateV2ReqDto = new ClientDetailCreateRequestV2();
Map<String, String> clientnameLangMap = new HashMap<>();
clientnameLangMap.put("eng", "client_name_v1");
clientCreateV2ReqDto.setClientId("mock_id_v1");
Expand Down Expand Up @@ -125,7 +125,7 @@ public void createClientV2_withValidDetail_thenPass() throws Exception {
@Test
public void createClientV2_withExistingClientId_thenFail() {
Mockito.when(clientDetailRepository.findById("client_id_v1")).thenReturn(Optional.of(new ClientDetail()));
ClientDetailCreateV2Request clientCreateV2ReqDto = new ClientDetailCreateV2Request();
ClientDetailCreateRequestV2 clientCreateV2ReqDto = new ClientDetailCreateRequestV2();
clientCreateV2ReqDto.setClientId("client_id_v1");
try {
clientManagementService.createOIDCClientV2(clientCreateV2ReqDto);
Expand Down Expand Up @@ -199,7 +199,7 @@ public void updateClientV2_withValidClientId_thenPass() throws EsignetException
clientDetail.setRedirectUris("[\"https://service.com/home\",\"https://service.com/dashboard\", \"v1/idp\"]");
Mockito.when(clientDetailRepository.findById("client_id_v1")).thenReturn(Optional.of(clientDetail));

ClientDetailUpdateV2Request updateV2Request = new ClientDetailUpdateV2Request();
ClientDetailUpdateRequestV2 updateV2Request = new ClientDetailUpdateRequestV2();
updateV2Request.setClientNameLangMap(new HashMap<>());
updateV2Request.setClientName("client_name_v1");
updateV2Request.setLogoUri("http://service.com/logo.png");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,5 @@ public class Constants {
public static final String ESSENTIAL = "essential";
public static final String VOLUNTARY = "voluntary";
public static final String LINKED_STATUS = "LINKED";
public static final String NONE_LANG_KEY = "@none";
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@

import java.util.List;
import java.io.Serializable;
import java.util.Map;

@Data
public class ClientDetail implements Serializable {

private String id;
private String name;
private Map<String, String> name;
private String rpId;
private String logoUri;
private List<String> redirectUris;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ClientDetailCreateV2Request extends ClientDetailCreateRequest {
public class ClientDetailCreateRequestV2 extends ClientDetailCreateRequest {

@NotEmpty(message = ErrorConstants.INVALID_CLIENT_NAME)
private Map<@Size(message= ErrorConstants.INVALID_CLIENT_NAME_MAP_KEY, min=3, max=3) String,
@NotBlank(message = ErrorConstants.INVALID_CLIENT_NAME_MAP_VALUE) String> clientNameLangMap;

public ClientDetailCreateV2Request(String clientId, String clientName, Map<String, Object> publicKey, String relyingPartyId,
public ClientDetailCreateRequestV2(String clientId, String clientName, Map<String, Object> publicKey, String relyingPartyId,
List<String> userClaims, List<String> authContextRefs, String logoUri,
List<String> redirectUris, List<String> grantTypes, List<String> clientAuthMethods,
Map<String, String> clientNameLangMap) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,6 @@
package io.mosip.esignet.core.dto;

import io.mosip.esignet.core.constants.ErrorConstants;
import io.mosip.esignet.core.validator.AuthContextRef;
import io.mosip.esignet.core.validator.OIDCClaim;
import io.mosip.esignet.core.validator.OIDCClientAuth;
import io.mosip.esignet.core.validator.OIDCGrantType;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

Expand All @@ -20,13 +15,13 @@

@Data
@NoArgsConstructor
public class ClientDetailUpdateV2Request extends ClientDetailUpdateRequest {
public class ClientDetailUpdateRequestV2 extends ClientDetailUpdateRequest {

@NotEmpty(message = ErrorConstants.INVALID_CLIENT_NAME)
private Map<@Size(message = ErrorConstants.INVALID_CLIENT_NAME_MAP_KEY, min = 3, max = 3) String,
@NotBlank(message = ErrorConstants.INVALID_CLIENT_NAME_MAP_VALUE) String> clientNameLangMap;

public ClientDetailUpdateV2Request(String logUri,List<String> redirectUris,List<String> userClaims,List<String> authContextRefs,String status,List<String> grantTypes,String clientName,List<String> clientAuthMethods,Map<String,String> clientNameLangMap){
public ClientDetailUpdateRequestV2(String logUri, List<String> redirectUris, List<String> userClaims, List<String> authContextRefs, String status, List<String> grantTypes, String clientName, List<String> clientAuthMethods, Map<String,String> clientNameLangMap){
super(logUri,redirectUris,userClaims,authContextRefs,status,grantTypes,clientName,clientAuthMethods);
this.clientNameLangMap=clientNameLangMap;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
public class LinkTransactionResponse {

private String linkTransactionId;
private String clientName;
private String logoUrl;
private List<List<AuthenticationFactor>> authFactors;
private List<String> authorizeScopes;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package io.mosip.esignet.core.dto;

import lombok.Data;


@Data
public class LinkTransactionResponseV1 extends LinkTransactionResponse {

private String clientName;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package io.mosip.esignet.core.dto;

import lombok.Data;

import java.util.Map;

@Data
public class LinkTransactionResponseV2 extends LinkTransactionResponse {

private Map<String, String> clientName;
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
public class OAuthDetailResponse {

private String transactionId;
private String clientName;
private String logoUrl;
private List<List<AuthenticationFactor>> authFactors;
private List<String> authorizeScopes;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package io.mosip.esignet.core.dto;

import lombok.Data;


@Data
public class OAuthDetailResponseV1 extends OAuthDetailResponse {

private String clientName;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package io.mosip.esignet.core.dto;

import lombok.Data;

import java.util.Map;

@Data
public class OAuthDetailResponseV2 extends OAuthDetailResponse {

private Map<String, String> clientName;

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public interface AuthorizationService {
* @param oauthDetailRequest
* @return
*/
OAuthDetailResponse getOauthDetails(OAuthDetailRequest oauthDetailRequest) throws EsignetException;
OAuthDetailResponseV1 getOauthDetails(OAuthDetailRequest oauthDetailRequest) throws EsignetException;

/**
* All the query parameters of /authorize request are echoed to this request.
Expand All @@ -28,7 +28,7 @@ public interface AuthorizationService {
* @param oauthDetailRequest
* @return
*/
OAuthDetailV2Response getOauthDetailsV2(OAuthDetailRequest oauthDetailRequest) throws EsignetException;
OAuthDetailResponseV2 getOauthDetailsV2(OAuthDetailRequest oauthDetailRequest) throws EsignetException;

/**
* Request from IDP UI to send OTP to provided individual ID and OTP channel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@
*/
package io.mosip.esignet.core.spi;

import io.mosip.esignet.core.constants.Constants;
import io.mosip.esignet.core.dto.*;
import io.mosip.esignet.core.exception.EsignetException;
import org.springframework.cache.annotation.CacheEvict;

public interface ClientManagementService {

Expand Down Expand Up @@ -43,11 +41,11 @@ public interface ClientManagementService {
* in multiple languages as a map (clientNameLangMap), where key
* is the language code and the default client name is provided
* as value for the key @none, where @none is a fallback value
* @param clientDetailCreateV2Request
* @param clientDetailCreateRequestV2
* @return
* @throws EsignetException
*/
ClientDetailResponse createOIDCClientV2(ClientDetailCreateV2Request clientDetailCreateV2Request) throws EsignetException;
ClientDetailResponse createOIDCClientV2(ClientDetailCreateRequestV2 clientDetailCreateRequestV2) throws EsignetException;

/**
* API to update registered relying party client version 2
Expand All @@ -57,10 +55,10 @@ public interface ClientManagementService {
* is the language code and the default client name is provided
* as value for the key @none, where @none is a fallback value
* @param clientId
* @param clientDetailUpdateV2Request
* @param clientDetailUpdateRequestV2
* @return
* @throws EsignetException
*/
ClientDetailResponse updateOIDCClientV2(String clientId, ClientDetailUpdateV2Request clientDetailUpdateV2Request) throws EsignetException;
ClientDetailResponse updateOIDCClientV2(String clientId, ClientDetailUpdateRequestV2 clientDetailUpdateRequestV2) throws EsignetException;

}
Loading

0 comments on commit 24ea69b

Please sign in to comment.