diff --git a/api-test/pom.xml b/api-test/pom.xml index 4c278622f..eb382ff06 100644 --- a/api-test/pom.xml +++ b/api-test/pom.xml @@ -59,6 +59,7 @@ 3.2.4 3.0.0 2.2.1 + 0.7.0 3.0.1 apitest-esignet-1.8.1-SNAPSHOT-jar-with-dependencies @@ -72,6 +73,17 @@ + + + ossrh + https://central.sonatype.com/repository/maven-snapshots/ + + + ossrh + https://central.sonatype.com/api/v1/publisher + + + @@ -79,6 +91,16 @@ + + org.sonatype.central + central-publishing-maven-plugin + ${central.publishing.maven.plugin.version} + true + + ossrh + false + + org.apache.maven.plugins maven-javadoc-plugin @@ -277,4 +299,4 @@ - + \ No newline at end of file diff --git a/api-test/src/main/java/io/mosip/testrig/apirig/esignet/utils/EsignetUtil.java b/api-test/src/main/java/io/mosip/testrig/apirig/esignet/utils/EsignetUtil.java index a07c60343..5df004e1d 100644 --- a/api-test/src/main/java/io/mosip/testrig/apirig/esignet/utils/EsignetUtil.java +++ b/api-test/src/main/java/io/mosip/testrig/apirig/esignet/utils/EsignetUtil.java @@ -249,7 +249,14 @@ public static String isTestCaseValidForExecution(TestCaseDTO testCaseDTO) { || testCaseName.equals("ESignet_OIDCClient_DifferentScopeLanguageClaimsSce_sid") || testCaseName.equals("ESignet_PartialUpdateOIDCClient_MOCK_all_Valid_forUserInfoJWE_Smoke_sid") || testCaseName.equals("ESignet_PartialUpdateOIDCClient_MOCK_all_Valid_forUserInfoUpdateJWE_Smoke_sid") - || testCaseName.equals("ESignet_CreateOIDCClientFAPI_all_Valid_Smoke_sid")) + || testCaseName.equals("ESignet_PartialUpdateOIDCClient_MOCK_Invlalid_alg_value_Neg") + || testCaseName.equals("ESignet_PartialUpdateOIDCClient_MOCK_Invlalid_ClientID_Neg") + || testCaseName.equals("ESignet_PartialUpdateOIDCClient_MOCK_Missing_kid_value_Neg") + || testCaseName.equals("ESignet_PartialUpdateOIDCClient_MOCK_Duplicate_EncKey_forUserInfoUpdateJWE_Neg") + || testCaseName.equals("ESignet_PartialUpdateOIDCClient_MOCK_Different_Encryption_alg_value_Pos") + || testCaseName.equals("ESignet_CreateOIDCClientFAPI_all_Valid_Smoke_sid") + || testCaseName.equals("ESignet_CreateOIDCClientFAPI_all_Valid_forUserInfoJWE_Smoke_sid") + || testCaseName.equals("ESignet_FAPIPartialUpdateOIDCClient_all_Valid_forUserInfoJWE_Smoke_sid")) && (endpoint.contains("/v1/esignet/client-mgmt/client") || endpoint.contains("/v1/esignet/client-mgmt/client/{clientId}") || endpoint.contains("/v1/esignet/client-mgmt/oauth-client")))) { @@ -406,7 +413,7 @@ public static String inputstringKeyWordHandeler(String jsonString, String testCa String jwkKeyString; if (testCaseName != null && testCaseName.toUpperCase().contains("FAPI")) { - jwkKeyString = JWKKeyUtil.getJWKKey(OIDC_JWK_FOR_FAPI); + jwkKeyString = JWKKeyUtil.getJWKKey(getFapiJwkKeyName(testCaseName)); } else { jwkKeyString = JWKKeyUtil.getJWKKey(OIDC_JWK_FOR_DPoP); } @@ -426,7 +433,7 @@ public static String inputstringKeyWordHandeler(String jsonString, String testCa String jwkKeyString; if (testCaseName != null && testCaseName.toUpperCase().contains("FAPI")) { - jwkKeyString = JWKKeyUtil.getJWKKey(OIDC_JWK_FOR_FAPI); + jwkKeyString = JWKKeyUtil.getJWKKey(getFapiJwkKeyName(testCaseName)); } else { jwkKeyString = JWKKeyUtil.getJWKKey(OIDC_JWK_FOR_DPoP); } @@ -453,7 +460,7 @@ public static String inputstringKeyWordHandeler(String jsonString, String testCa String jwkKeyString; if (testCaseName != null && testCaseName.toUpperCase().contains("FAPI")) { - jwkKeyString = JWKKeyUtil.getJWKKey(OIDC_JWK_FOR_FAPI); + jwkKeyString = JWKKeyUtil.getJWKKey(getFapiJwkKeyName(testCaseName)); } else { jwkKeyString = JWKKeyUtil.getJWKKey(OIDC_JWK_FOR_DPoP); } @@ -806,6 +813,17 @@ public static String inputstringKeyWordHandeler(String jsonString, String testCa jsonString = replaceKeywordValue(jsonString, "$OIDC_JWK_KEY_DPoP$", jwkKey); } + if (jsonString.contains("$OIDC_JWK_KEY_FAPI_JWE$")) { + String jwkKey = ""; + if (getTriggerESignetKeyGenForFAPIJWE()) { + jwkKey = JWKKeyUtil.generateAndCacheJWKKey(OIDC_JWK_FOR_FAPI_JWE); + setTriggerESignetKeyGenForFAPIJWE(false); + } else { + jwkKey = JWKKeyUtil.getJWKKey(OIDC_JWK_FOR_FAPI_JWE); + } + jsonString = replaceKeywordValue(jsonString, "$OIDC_JWK_KEY_FAPI_JWE$", jwkKey); + } + if (jsonString.contains("$OIDC_JWK_KEY_FAPI$")) { String jwkKey = ""; if (getTriggerESignetKeyGenForFAPI()) { @@ -1039,12 +1057,12 @@ public static String inputstringKeyWordHandeler(String jsonString, String testCa } } - if (jsonString.contains("$CLIENT_ASSERTION_FAPI_JWT$")) { - String oidcJWKKeyString = JWKKeyUtil.getJWKKey(OIDC_JWK_FOR_FAPI); + if (jsonString.contains("$CLIENT_ASSERTION_FAPI_JWE_JWT$")) { + String oidcJWKKeyString = JWKKeyUtil.getJWKKey(OIDC_JWK_FOR_FAPI_JWE); logger.info("oidcJWKKeyString =" + oidcJWKKeyString); try { - oidc_JWK_Key_For_FAPI = RSAKey.parse(oidcJWKKeyString); - logger.info("oidc_JWK_Key_For_FAPI =" + oidc_JWK_Key_For_FAPI); + oidc_JWK_Key_For_FAPI_JWE = RSAKey.parse(oidcJWKKeyString); + logger.info("oidc_JWK_Key_For_FAPI_JWE =" + oidc_JWK_Key_For_FAPI_JWE); } catch (java.text.ParseException e) { logger.error(e.getMessage()); } @@ -1062,8 +1080,47 @@ public static String inputstringKeyWordHandeler(String jsonString, String testCa String tempUrl = getValueFromEsignetWellKnownEndPoint(audKey, EsignetConfigManager.getEsignetBaseUrl()); if (clientId != null) { + jsonString = replaceKeywordValue(jsonString, "$CLIENT_ASSERTION_FAPI_JWE_JWT$", + signJWKKey(clientId, oidc_JWK_Key_For_FAPI_JWE, tempUrl)); + } else { + logger.error("Client ID not found in JSON for $CLIENT_ASSERTION_FAPI_JWE_JWT$."); + } + } + + if (jsonString.contains("$CLIENT_ASSERTION_FAPI_JWT$")) { + String fapiJwkKeyName = getFapiJwkKeyName(testCaseName); + String oidcJWKKeyString = JWKKeyUtil.getJWKKey(fapiJwkKeyName); + logger.info("oidcJWKKeyString =" + oidcJWKKeyString); + RSAKey fapiSigningKey; + try { + fapiSigningKey = RSAKey.parse(oidcJWKKeyString); + if (OIDC_JWK_FOR_FAPI_JWE.equals(fapiJwkKeyName)) { + oidc_JWK_Key_For_FAPI_JWE = fapiSigningKey; + logger.info("oidc_JWK_Key_For_FAPI_JWE =" + oidc_JWK_Key_For_FAPI_JWE); + } else { + oidc_JWK_Key_For_FAPI = fapiSigningKey; + logger.info("oidc_JWK_Key_For_FAPI =" + oidc_JWK_Key_For_FAPI); + } + } catch (java.text.ParseException e) { + logger.error(e.getMessage()); + fapiSigningKey = null; + } + + JSONObject root = new JSONObject(jsonString); + String clientId = root.optString("client_id", null); + String audKey = null; + + if (root.has("aud_key")) { + audKey = root.optString("aud_key", null); + root.remove("aud_key"); + jsonString = root.toString(); + } + + String tempUrl = getValueFromEsignetWellKnownEndPoint(audKey, EsignetConfigManager.getEsignetBaseUrl()); + + if (clientId != null && fapiSigningKey != null) { jsonString = replaceKeywordValue(jsonString, "$CLIENT_ASSERTION_FAPI_JWT$", - signJWKKey(clientId, oidc_JWK_Key_For_FAPI, tempUrl)); + signJWKKey(clientId, fapiSigningKey, tempUrl)); } else { logger.error("Client ID not found in JSON for $CLIENT_ASSERTION_FAPI_JWT$."); } @@ -1959,7 +2016,8 @@ public static String getValueFromEsignetWellKnownEndPoint(String key, String bas protected static final String OIDCJWK14= "oidcJWK14"; protected static final String OIDC_JWK_FOR_PAR = "oidcJWKForPAR"; protected static final String OIDC_JWK_FOR_DPoP = "oidcJWKForDPoP"; - protected static final String OIDC_JWK_FOR_FAPI = "oidcJWKForFAPI"; + protected static final String OIDC_JWK_FOR_FAPI = "oidcJWKForFAPI"; + protected static final String OIDC_JWK_FOR_FAPI_JWE = "oidcJWKForFAPIJWE"; protected static RSAKey oidcJWKKey1 = null; protected static RSAKey oidcJWKKey3 = null; @@ -1977,6 +2035,7 @@ public static String getValueFromEsignetWellKnownEndPoint(String key, String bas protected static RSAKey oidc_JWK_Key_For_PAR = null; protected static RSAKey oidc_JWK_Key_For_DPoP = null; protected static RSAKey oidc_JWK_Key_For_FAPI = null; + protected static RSAKey oidc_JWK_Key_For_FAPI_JWE = null; protected static boolean triggerESignetKeyGen1 = true; protected static boolean triggerESignetKeyGen2 = true; @@ -2017,8 +2076,16 @@ public static String getValueFromEsignetWellKnownEndPoint(String key, String bas protected static boolean triggerESignetKeyGen38 = true; protected static boolean triggerESignetKeyGenForPAR = true; protected static boolean triggerESignetKeyGenForDPoP = true; - protected static boolean triggerESignetKeyGenForFAPI = true; + protected static boolean triggerESignetKeyGenForFAPI = true; + protected static boolean triggerESignetKeyGenForFAPIJWE = true; + private static String getFapiJwkKeyName(String testCaseName) { + if (testCaseName != null + && (testCaseName.contains("forUserInfoJWE") || testCaseName.contains("_GetUserInfoJWE_"))) { + return OIDC_JWK_FOR_FAPI_JWE; + } + return OIDC_JWK_FOR_FAPI; + } private static boolean gettriggerESignetKeyGen3() { return triggerESignetKeyGen3; @@ -2122,7 +2189,15 @@ private static void setTriggerESignetKeyGenForDPoP(boolean value) { private static void setTriggerESignetKeyGenForFAPI(boolean value) { triggerESignetKeyGenForFAPI = value; - } + } + + private static boolean getTriggerESignetKeyGenForFAPIJWE() { + return triggerESignetKeyGenForFAPIJWE; + } + + private static void setTriggerESignetKeyGenForFAPIJWE(boolean value) { + triggerESignetKeyGenForFAPIJWE = value; + } private static void settriggerESignetKeyGen2(boolean value) { triggerESignetKeyGen2 = value; diff --git a/api-test/src/main/resources/config/testCaseInterDependency_mock.json b/api-test/src/main/resources/config/testCaseInterDependency_mock.json index 96f089b03..619866081 100644 --- a/api-test/src/main/resources/config/testCaseInterDependency_mock.json +++ b/api-test/src/main/resources/config/testCaseInterDependency_mock.json @@ -90,6 +90,10 @@ "TC_ESignet_AuthorizationCode_01", "TC_ESignet_CreateOIDCClient_V2_01" ], + "TC_ESignet_FAPI_GenerateToken_forUserInfoJWE_01": [ + "TC_ESignet_FAPI_CreateOIDCClient_02", + "TC_ESignet_FAPI_AuthorizationCode_02" + ], "TC_ESignet_WalletBinding_24": [ "Dependent_Idrepo_AddIdentity_04", "Dependent_Idrepo_AddIdentity_01" @@ -252,6 +256,10 @@ "TC_ESignet_OAuthDetailsRequestLinkedConsent_05": ["TC_ESignet_CreateOIDCClient_V2_01"], "TC_ESignet_OAuthDetailsRequestLinkedConsent_06": ["TC_ESignet_CreateOIDCClient_V2_01"], "TC_ESignet_OAuthDetailsRequestLinkedConsent_07": ["TC_ESignet_CreateOIDCClient_V2_01"], + "TC_ESignet_FAPI_OauthDetails_forUserInfoJWE_01": [ + "TC_ESignet_Oauth_FAPI_forUserInfoJWE_01", + "TC_ESignet_FAPI_CreateOIDCClient_02" + ], "TC_ESignet_OAuthDetailsRequestConsent_01": ["TC_ESignet_CreateOIDCClient_V2_01"], "TC_ESignet_OAuthDetailsRequestConsent_02": ["TC_ESignet_CreateOIDCClient_V2_01"], "TC_ESignet_OAuthDetailsRequestConsent_03": ["TC_ESignet_CreateOIDCClient_V2_01"], @@ -267,7 +275,10 @@ "TC_ESignet_OAuthDetailsRequestConsent_09": ["TC_ESignet_CreateOIDCClient_V2_01"], "TC_ESignet_OAuthDetailsRequestLinkedConsent_10": ["TC_ESignet_CreateOIDCClient_V2_01"], "TC_ESignet_GetLinkStatus_23": ["TC_ESignet_OAuthDetailsRequestLinked_07"], - "TC_ESignet_GetOidcUserInfoLinked_05": [], + "TC_ESignet_GetOidcUserInfoLinked_05": [ + "TC_ESignet_GenerateTokenLinked_05", + "TC_ESignet_CreateOIDCClient_V2_02" + ], "TC_ESignet_GetLinkStatus_20": ["TC_ESignet_OAuthDetailsRequestLinked_07"], "TC_ESignet_GenerateTokenDifferentScopeLanguageClaimsSce_01": [ "TC_ESignet_DifferentScopeLanguageClaimsSce_OIDCClientV3_01", @@ -300,6 +311,10 @@ "TC_ESignet_LinkTransaction_01" ], "TC_ESignet_GetLinkStatus_19": ["TC_ESignet_OAuthDetailsRequestLinked_07"], + "TC_ESignet_FAPI_AuthorizationCode_02": [ + "TC_ESignet_FAPI_OauthDetails_forUserInfoJWE_01", + "TC_ESignet_FAPI_AuthenticateUserV3_02" + ], "TC_ESignet_GetLinkStatus_18": ["TC_ESignet_OAuthDetailsRequestLinked_07"], "TC_ESignet_WalletBinding_01": [ "Dependent_Idrepo_AddIdentity_04", @@ -453,6 +468,10 @@ "Dependent_Idrepo_AddIdentity_03", "TC_ESignet_OAuthDetailsRequest_08" ], + "TC_ESignet_FAPI_AuthenticateUserV3_02": [ + "Dependent_Idrepo_AddIdentity_48", + "TC_ESignet_FAPI_OauthDetails_forUserInfoJWE_01" + ], "TC_ESignet_AuthenticateUser_18": [ "Dependent_Idrepo_AddIdentity_03", "TC_ESignet_OAuthDetailsRequest_08" @@ -779,6 +798,7 @@ "TC_ESignet_AuthorizationCode_17": ["TC_ESignet_AuthenticateUser_05"], "TC_ESignet_LinkedAuthenticationWla_08": [ "Dependent_Idrepo_AddIdentity_37", + "TC_ESignet_LinkTransaction_19", "Dependent_Idrepo_AddIdentity_01" ], "TC_ESignet_AuthorizationCode_16": [ @@ -788,7 +808,7 @@ "TC_ESignet_LinkedAuthenticationWla_03": [ "Dependent_Idrepo_AddIdentity_11", "Dependent_Idrepo_AddIdentity_01", - "TC_ESignet_LinkTransaction_03" + "TC_ESignet_LinkTransaction_03" ], "TC_ESignet_SendOtp_05": [ "Dependent_Idrepo_AddIdentity_03", @@ -840,7 +860,10 @@ ], "TC_ESignet_Generate_Token_04": ["TC_ESignet_AuthorizationCode_01"], "TC_ESignet_OAuthDetailsRequestSunBirdCNegTC_02": ["TC_ESignet_CreatePolicySunBirdR_01"], - "TC_ESignet_GenerateToken_E2EMock_01": [], + "TC_ESignet_GenerateToken_E2EMock_01": [ + "TC_ESignet_AuthorizationCode_E2EMock_01", + "TC_ESignet_OIDCClientV3_E2EMock_01" + ], "TC_ESignet_SendOtp_07": [ "Dependent_Idrepo_AddIdentity_03", "TC_ESignet_OAuthDetailsRequest_01" @@ -1005,7 +1028,10 @@ ], "TC_ESignet_OAuthDetailsRequestV3_Prerequisite_E2EMock_01": ["TC_ESignet_OIDCClientV3_E2EMock_01"], "TC_ESignet_OAuthDetailsRequestNonAuth_23": ["TC_ESignet_CreateOIDCClient_V2_03"], - "TC_ESignet_OAuthDetailsRequestV3_Prerequisite_E2EMock_03": ["TC_ESignet_OIDCClientV3_E2EMock_03"], + "TC_ESignet_OAuthDetailsRequestV3_Prerequisite_E2EMock_03": [ + "TC_ESignet_OIDCClientV3_E2EMock_03", + "TC_ESignet_UpdateOIDCClientV3_E2EMock_01" + ], "TC_ESignet_OAuthDetailsRequestV3_Prerequisite_E2EMock_02": ["TC_ESignet_OIDCClientV3_E2EMock_02"], "TC_ESignet_OAuthDetailsRequestNonAuth_25": ["TC_ESignet_CreateOIDCClient_V2_03"], "TC_ESignet_GenerateTokenVerifiedClaims_01": [ @@ -1101,6 +1127,10 @@ "TC_ESignet_AuthorizationCodeVerifiedClaims_01", "TC_ESignet_OIDCClientV3VerifiedClaims_01" ], + "TC_ESignet_Oauth_FAPI_forUserInfoJWE_01": [ + "TC_ESignet_FAPI_CreateOIDCClient_02", + "TC_ESignet_FAPI_PartialUpdateOIDCClient_01" + ], "TC_ESignet_OauthParNegativeScenarios_07": ["TC_ESignet_PARCreateOIDCClientV3_01"], "TC_ESignet_OauthParNegativeScenarios_08": ["TC_ESignet_PARCreateOIDCClientV3_01"], "TC_ESignet_OauthParNegativeScenarios_09": ["TC_ESignet_PARCreateOIDCClientV3_01"], @@ -1267,7 +1297,10 @@ "TC_ESignet_CreateOIDCClient_V2_01", "TC_ESignet_LinkAuthorizationCode_01" ], - "TC_ESignet_GenerateTokenLinked_05": [], + "TC_ESignet_GenerateTokenLinked_05": [ + "TC_ESignet_LinkAuthorizationCode_03", + "TC_ESignet_CreateOIDCClient_V2_02" + ], "TC_ESignet_LinkAuthorizationCode_09": [ "TC_ESignet_GenerateLinkCode_01", "TC_ESignet_OAuthDetailsRequestLinked_01", @@ -1333,6 +1366,11 @@ "Dependent_Idrepo_AddIdentity_04", "Dependent_Idrepo_AddIdentity_01" ], + "TC_ESignet_FAPI_GetUserInfo_02": [ + "TC_ESignet_FAPI_GenerateToken_forUserInfoJWE_01", + "TC_ESignet_FAPI_CreateOIDCClient_02", + "TC_ESignet_FAPI_PartialUpdateOIDCClient_01" + ], "TC_ESignet_SendBindingOtp_16": [ "Dependent_Idrepo_AddIdentity_04", "Dependent_Idrepo_AddIdentity_01" @@ -1443,7 +1481,10 @@ "TC_ESignet_OauthPar_01", "TC_ESignet_PARCreateOIDCClientV3_01" ], - "TC_ESignet_GetOidcUserInfoForV3_E2EMock_01": [], + "TC_ESignet_GetOidcUserInfoForV3_E2EMock_01": [ + "TC_ESignet_GenerateToken_E2EMock_01", + "TC_ESignet_OIDCClientV3_E2EMock_01" + ], "TC_ESignet_DPoPOauthDetails_01": [ "TC_ESignet_DPoPCreateOIDCClientV3_01", "TC_ESignet_OauthDPoP_01" @@ -1459,7 +1500,8 @@ ], "TC_ESignet_GetOidcUserInfoForV3_E2EMock_03": [ "TC_ESignet_PatchOIDCClient_02", - "TC_ESignet_GenerateToken_E2EMock_03" + "TC_ESignet_GenerateToken_E2EMock_03", + "TC_ESignet_OIDCClientV3_E2EMock_03" ], "TC_ESignet_UpdateOIDCClientV3_09": ["TC_ESignet_CreateOIDCClientV3_01"], "TC_ESignet_UpdateOIDCClientV3_19": ["TC_ESignet_CreateOIDCClientV3_01"], @@ -1599,6 +1641,12 @@ "TC_ESignet_OAuthDetailsRequest_26": ["TC_ESignet_CreateOIDCClient_V2_01"], "TC_ESignet_OAuthDetailsRequest_25": ["TC_ESignet_CreateOIDCClient_V2_01"], "TC_ESignet_OauthDPoP_01": ["TC_ESignet_DPoPCreateOIDCClientV3_01"], + "TC_ESignet_PatchOIDCClient_06": [ + "TC_ESignet_PatchOIDCClient_02", + "TC_ESignet_OIDCClientV3_E2EMock_03" + ], + "TC_ESignet_PatchOIDCClient_05": ["TC_ESignet_OIDCClientV3_E2EMock_02"], + "TC_ESignet_PatchOIDCClient_03": ["TC_ESignet_OIDCClientV3_E2EMock_02"], "TC_ESignet_PatchOIDCClient_02": ["TC_ESignet_OIDCClientV3_E2EMock_03"], "TC_ESignet_PatchOIDCClient_01": ["TC_ESignet_OIDCClientV3_E2EMock_02"], "TC_ESignet_DPoPGenerateTokenInvalidScenarios_04": [ @@ -1625,6 +1673,8 @@ "TC_ESignet_DPoPCreateOIDCClientV3_01", "TC_ESignet_DPoPAuthorizationCode_01" ], + "TC_ESignet_FAPI_PartialUpdateOIDCClient_01": ["TC_ESignet_FAPI_CreateOIDCClient_02"], + "TC_ESignet_PatchOIDCClient_07": ["TC_ESignet_OIDCClientV3_E2EMock_02"], "TC_ESignet_UpdateOIDCClientV2_06": ["TC_ESignet_CreateOIDCClientV2_01"], "TC_ESignet_UpdateOIDCClientV2_05": ["TC_ESignet_CreateOIDCClientV2_01"], "TC_ESignet_UpdateOIDCClientV2_04": ["TC_ESignet_CreateOIDCClientV2_01"], diff --git a/api-test/src/main/resources/config/testCaseInterDependency_mosip-id.json b/api-test/src/main/resources/config/testCaseInterDependency_mosip-id.json index 073a71d36..0606180b2 100644 --- a/api-test/src/main/resources/config/testCaseInterDependency_mosip-id.json +++ b/api-test/src/main/resources/config/testCaseInterDependency_mosip-id.json @@ -639,9 +639,18 @@ "TC_ESignet_AuthenticateUserV3_WithoutVerifiedClaims_01", "TC_Signup_ESignet_OAuthDetailsRequestV3WithoutVerifiedClaims_01" ], - "TC_ESignet_GetOidcUserInfoForV3_E2E_01": ["TC_ESignet_GenerateToken_E2E_01"], - "TC_ESignet_GetOidcUserInfoForV3_E2E_03": ["TC_ESignet_GenerateToken_E2E_03"], - "TC_ESignet_GetOidcUserInfoForV3_E2E_02": ["TC_ESignet_GenerateToken_E2E_02"], + "TC_ESignet_GetOidcUserInfoForV3_E2E_01": [ + "TC_ESignet_GenerateToken_E2E_01", + "TC_ESignet_UpdateOIDCClientV3_E2E_01" + ], + "TC_ESignet_GetOidcUserInfoForV3_E2E_03": [ + "TC_ESignet_GenerateToken_E2E_03", + "TC_ESignet_UpdateOIDCClientV3_E2E_03" + ], + "TC_ESignet_GetOidcUserInfoForV3_E2E_02": [ + "TC_ESignet_GenerateToken_E2E_02", + "TC_ESignet_UpdateOIDCClientV3_E2E_02" + ], "TC_ESignet_OAuthDetailsRequestSunBirdC_01": ["TC_ESignet_CreatePolicySunBirdR_01"], "TC_ESignet_LinkedAuthConsent_07": [ "TC_ESignet_LinkTransactionConsent_08", @@ -1887,6 +1896,10 @@ "Dependent_Idrepo_AddIdentity_48", "TC_ESignet_FAPI_OauthDetails_01" ], + "TC_ESignet_FAPI_AuthenticateUserV3_02": [ + "Dependent_Idrepo_AddIdentity_48", + "TC_ESignet_FAPI_OauthDetails_forUserInfoJWE_01" + ], "TC_ESignet_SendOtp_27": [ "Dependent_Idrepo_GenerateVID_09", "TC_ESignet_OAuthDetailsRequest_01" @@ -2256,14 +2269,20 @@ "Dependent_Idrepo_AddIdentity_03", "Dependent_Idrepo_GenerateVID_09" ], - "TC_ESignet_OAuthDetailsRequestV3_Prerequisite_02": ["TC_ESignet_CreateOIDCClient_MOSIPID_22"], + "TC_ESignet_OAuthDetailsRequestV3_Prerequisite_02": [ + "TC_ESignet_CreateOIDCClient_MOSIPID_22", + "TC_ESignet_UpdateOIDCClientV3_E2E_02" + ], "TC_ESignet_DPoPOauthDetailsNegativeScenarios_02": ["TC_ESignet_OauthDPoP_01"], "TC_ESignet_AuthenticateUser_45": [ "TC_ESignet_OAuthDetailsRequest_09", "Dependent_Idrepo_AddIdentity_03", "Dependent_Idrepo_GenerateVID_09" ], - "TC_ESignet_OAuthDetailsRequestV3_Prerequisite_01": ["TC_ESignet_CreateOIDCClient_MOSIPID_21"], + "TC_ESignet_OAuthDetailsRequestV3_Prerequisite_01": [ + "TC_ESignet_CreateOIDCClient_MOSIPID_21", + "TC_ESignet_UpdateOIDCClientV3_E2E_01" + ], "TC_ESignet_DPoPOauthDetailsNegativeScenarios_01": [ "TC_ESignet_OauthDPoP_01", "TC_ESignet_CreateOIDCClient_MOSIPID_25" @@ -2297,7 +2316,10 @@ "TC_ESignet_OAuthDetailsRequest_09", "Dependent_Idrepo_GenerateVID_09" ], - "TC_ESignet_OAuthDetailsRequestV3_Prerequisite_03": ["TC_ESignet_CreateOIDCClient_MOSIPID_23"], + "TC_ESignet_OAuthDetailsRequestV3_Prerequisite_03": [ + "TC_ESignet_CreateOIDCClient_MOSIPID_23", + "TC_ESignet_UpdateOIDCClientV3_E2E_03" + ], "TC_ESignet_AuthorizationCode_09": [ "TC_ESignet_AuthenticateUser_02", "TC_ESignet_OAuthDetailsRequest_02" @@ -2906,6 +2928,28 @@ "TC_ESignet_CreateOIDCClient_MOSIPID_29", "TC_ESignet_FAPI_GenerateToken_01" ], + "TC_ESignet_FAPI_GetUserInfo_02": [ + "TC_ESignet_FAPI_GenerateToken_forUserInfoJWE_01", + "TC_ESignet_FAPI_CreateOIDCClient_02", + "TC_ESignet_FAPI_PartialUpdateOIDCClient_01" + ], + "TC_ESignet_FAPI_GenerateToken_forUserInfoJWE_01": [ + "TC_ESignet_FAPI_CreateOIDCClient_02", + "TC_ESignet_FAPI_AuthorizationCode_02" + ], + "TC_ESignet_FAPI_OauthDetails_forUserInfoJWE_01": [ + "TC_ESignet_Oauth_FAPI_forUserInfoJWE_01", + "TC_ESignet_FAPI_CreateOIDCClient_02" + ], + "TC_ESignet_FAPI_AuthorizationCode_02": [ + "TC_ESignet_FAPI_OauthDetails_forUserInfoJWE_01", + "TC_ESignet_FAPI_AuthenticateUserV3_02" + ], + "TC_ESignet_Oauth_FAPI_forUserInfoJWE_01": [ + "TC_ESignet_FAPI_CreateOIDCClient_02", + "TC_ESignet_FAPI_PartialUpdateOIDCClient_01" + ], + "TC_ESignet_FAPI_PartialUpdateOIDCClient_01": ["TC_ESignet_FAPI_CreateOIDCClient_02"], "TC_ESignet_AuthenticateUserConsent_04": [ "TC_ESignet_OAuthDetailsRequestConsent_05", "Dependent_Idrepo_AddIdentity_17", diff --git a/api-test/src/main/resources/config/testCaseInterDependency_sunbirdrc.json b/api-test/src/main/resources/config/testCaseInterDependency_sunbirdrc.json index c4e900c43..d36ff4f9a 100644 --- a/api-test/src/main/resources/config/testCaseInterDependency_sunbirdrc.json +++ b/api-test/src/main/resources/config/testCaseInterDependency_sunbirdrc.json @@ -227,5 +227,73 @@ "TC_ESignet_OAuthDetailsRequestSunBirdC_01": [ "TC_ESignet_CreateOIDCClientV2SunBirdC_01", "TC_ESignet_CreatePolicySunBirdR_01" + ], + "TC_ESignet_GetCredentialSunBirdC_01": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdC_01" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_01": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_02": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_03": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_04": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_05": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_06": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_07": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_08": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_09": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_10": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_11": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_12": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_13": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_14": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_15": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" + ], + "TC_ESignet_GetCredentialSunBirdCNegTC_16": [ + "TC_ESignet_CreateOIDCClientV2SunBirdC_01", + "TC_ESignet_GenerateTokenSunBirdCNegTC_06" ] } \ No newline at end of file diff --git a/api-test/src/main/resources/esignet/EndToEndFlowWithV3MOCK/userinfo/GetOidcUserInfo.yml b/api-test/src/main/resources/esignet/EndToEndFlowWithV3MOCK/userinfo/GetOidcUserInfo.yml index c4eda64f4..99f913e9c 100644 --- a/api-test/src/main/resources/esignet/EndToEndFlowWithV3MOCK/userinfo/GetOidcUserInfo.yml +++ b/api-test/src/main/resources/esignet/EndToEndFlowWithV3MOCK/userinfo/GetOidcUserInfo.yml @@ -14,7 +14,7 @@ GetOidcUserInfo: output: '{ "aud": "$ID:CreateOIDCClientV3_MOCK_all_Valid_forUserInfo_Smoke_sid_clientId$" }' - ESignet_GetOidcUserInfo_MOCK_uin_IdpAccessToken_GetUserInfoJWE_Valid_Smoke: + ESignet_GetOidcUserInfo_MOCK_uin_IdpAccessToken_StatusCode_Valid_Smoke: endPoint: /v1/esignet/oidc/userinfo uniqueIdentifier: TC_ESignet_GetOidcUserInfoForV3_E2EMock_02 description: Get OIDC user info with all valid details UIN @@ -27,10 +27,8 @@ GetOidcUserInfo: input: '{ "idpAccessToken": "$ID:GenerateToken_MOCK_uin_Valid_forUserInfoJWE_Smoke_sid_access_token$" }' - output: '{ - "aud": "$ID:CreateOIDCClientV3_MOCK_all_Valid_forUserInfoJWE_Smoke_sid_clientId$" -}' - ESignet_GetOidcUserInfo_MOCK_uin_IdpAccessToken_StatusCode_toUpdatedJWEInfo_Valid_Smoke: + output: "200" + ESignet_GetOidcUserInfo_MOCK_uin_IdpAccessToken_GetUserInfoJWE_toUpdatedJWEInfo_Valid_Smoke: endPoint: /v1/esignet/oidc/userinfo uniqueIdentifier: TC_ESignet_GetOidcUserInfoForV3_E2EMock_03 description: Get OIDC user info with all valid details UIN @@ -39,9 +37,23 @@ GetOidcUserInfo: validityCheckRequired: true additionalDependencies: TC_ESignet_PatchOIDCClient_02 inputTemplate: esignet/EndToEndFlowWithV3MOCK/userinfo/GetOidcUserInfo - outputTemplate: esignet/EndToEndFlowWithV3MOCK/userinfo/GetOidcUserInfoResult + outputTemplate: esignet/EndToEndFlowWithV3MOCK/userinfo/GetOidcUserInfoDecryptResult input: '{ "idpAccessToken": "$ID:GenerateToken_MOCK_uin_Valid_forUserInfoUpdatedJWE_Smoke_sid_access_token$" }' - output: "200" - + output: '{ + "aud": "$ID:CreateOIDCClientV3_MOCK_all_Valid_forUserInfoToUpdateClient_Smoke_sid_clientId$" +}' + ESignet_GetOidcUserInfo_MOCK_uin_IdpAccessToken_StatusCode_EmptyAccessToken_Neg: + endPoint: /v1/esignet/oidc/userinfo + uniqueIdentifier: TC_ESignet_GetOidcUserInfoForV3_E2EMock_04 + description: Get OIDC userinfo with empty IdP access token; expect HTTP 401 + role: resident + restMethod: get + validityCheckRequired: true + inputTemplate: esignet/EndToEndFlowWithV3MOCK/userinfo/GetOidcUserInfo + outputTemplate: esignet/GetOidcUserInfo/GetOidcUserInfoResult + input: '{ + "idpAccessToken": "" +}' + output: "401" \ No newline at end of file diff --git a/api-test/src/main/resources/esignet/FAPI/FAPIAuthenticateUser/FAPIAuthenticateUser.yml b/api-test/src/main/resources/esignet/FAPI/FAPIAuthenticateUser/FAPIAuthenticateUser.yml index edab1066c..808f44778 100644 --- a/api-test/src/main/resources/esignet/FAPI/FAPIAuthenticateUser/FAPIAuthenticateUser.yml +++ b/api-test/src/main/resources/esignet/FAPI/FAPIAuthenticateUser/FAPIAuthenticateUser.yml @@ -30,4 +30,37 @@ FAPIAuthenticateUser: "sendOtpResp":{ "sendOtpResTemplate":"esignet/SendOtp/SendOtpResult" } +}' + ESignet_FAPIAuthenticateUser_AuthToken_Xsrf__uin_Otp_Valid_forUserInfoJWE_Smoke: + endPoint: /v1/esignet/authorization/v3/authenticate + uniqueIdentifier: TC_ESignet_FAPI_AuthenticateUserV3_02 + description: Authenticate user with valid OTP flow for FAPI JWE UserInfo and verify successful OTP generation + role: resident + restMethod: post + checkErrorsOnlyInResponse: true + validityCheckRequired: true + additionalDependencies: TC_ESignet_FAPI_OauthDetails_forUserInfoJWE_01 + inputTemplate: esignet/FAPI/FAPIAuthenticateUser/FAPIAuthenticateUser + outputTemplate: esignet/FAPI/FAPIAuthenticateUser/FAPIAuthenticateUserResult + input: '{ + "encodedHash": "$ID:OAuthDetailsRequest_FAPI_AuthToken_Xsrf_all_Valid_forUserInfoJWE_Smoke_sid_encodedResp$", + "requestTime": "$TIMESTAMP$", + "transactionId": "$ID:OAuthDetailsRequest_FAPI_AuthToken_Xsrf_all_Valid_forUserInfoJWE_Smoke_sid_transactionId$", + "individualId": "$ID:AddIdentity_For_FAPI_smoke_Pos_UIN$", + "authFactorType" : "OTP", + "challenge" : "$ID:AddIdentity_For_FAPI_smoke_Pos_EMAIL$", + "sendOtp":{ + "encodedHash": "$ID:OAuthDetailsRequest_FAPI_AuthToken_Xsrf_all_Valid_forUserInfoJWE_Smoke_sid_encodedResp$", + "requestTime": "$TIMESTAMP$", + "transactionId": "$ID:OAuthDetailsRequest_FAPI_AuthToken_Xsrf_all_Valid_forUserInfoJWE_Smoke_sid_transactionId$", + "individualId": "$ID:AddIdentity_For_FAPI_smoke_Pos_UIN$", + "otpChannels": [{"channel": "email"},{"channel": "phone"}], + "sendOtpReqTemplate": "esignet/SendOtp/SendOtp", + "sendOtpEndPoint": "/v1/esignet/authorization/send-otp" + } + }' + output: '{ + "sendOtpResp":{ + "sendOtpResTemplate":"esignet/SendOtp/SendOtpResult" + } }' \ No newline at end of file diff --git a/api-test/src/main/resources/esignet/FAPI/FAPIAuthorizationCode/FAPIAuthorizationCode.yml b/api-test/src/main/resources/esignet/FAPI/FAPIAuthorizationCode/FAPIAuthorizationCode.yml index f99c1e5f6..a458bab57 100644 --- a/api-test/src/main/resources/esignet/FAPI/FAPIAuthorizationCode/FAPIAuthorizationCode.yml +++ b/api-test/src/main/resources/esignet/FAPI/FAPIAuthorizationCode/FAPIAuthorizationCode.yml @@ -2,7 +2,7 @@ FAPIAuthorizationCode: ESignet_AuthorizationCode_FAPI__AuthToken_Xsrf_All_Valid_forUserInfo_Smoke_sid: endPoint: /v1/esignet/authorization/auth-code uniqueIdentifier: TC_ESignet_FAPI_AuthorizationCode_01 - description: Validate successful authorization code generation in PAR flow + description: Generate authorization code in FAPI PAR flow with valid AuthToken and XSRF token role: resident restMethod: post checkErrorsOnlyInResponse: true @@ -17,4 +17,23 @@ FAPIAuthorizationCode: "acceptedClaims": [{"claim": "phone_number"},{"claim": "email"}] }' output: '{ +}' + ESignet_AuthorizationCode_FAPI__AuthToken_Xsrf_All_Valid_forUserInfoJWE_Smoke_sid: + endPoint: /v1/esignet/authorization/auth-code + uniqueIdentifier: TC_ESignet_FAPI_AuthorizationCode_02 + description: Generate authorization code for FAPI JWE UserInfo flow with valid AuthToken and XSRF token + role: resident + restMethod: post + checkErrorsOnlyInResponse: true + validityCheckRequired: true + additionalDependencies: TC_ESignet_FAPI_AuthenticateUserV3_02 + inputTemplate: esignet/FAPI/FAPIAuthorizationCode/FAPIAuthorizationCode + outputTemplate: esignet/FAPI/FAPIAuthorizationCode/FAPIAuthorizationCodeResult + input: '{ + "encodedHash": "$ID:OAuthDetailsRequest_FAPI_AuthToken_Xsrf_all_Valid_forUserInfoJWE_Smoke_sid_encodedResp$", + "requestTime": "$TIMESTAMP$", + "transactionId": "$ID:OAuthDetailsRequest_FAPI_AuthToken_Xsrf_all_Valid_forUserInfoJWE_Smoke_sid_transactionId$", + "acceptedClaims": [{"claim": "phone_number"},{"claim": "email"}] +}' + output: '{ }' \ No newline at end of file diff --git a/api-test/src/main/resources/esignet/FAPI/FAPICreateOIDCClientV3/FAPICreateOIDCClient.hbs b/api-test/src/main/resources/esignet/FAPI/FAPICreateOIDCClientV3/FAPICreateOIDCClient.hbs index 7613c3de3..2befbf27e 100644 --- a/api-test/src/main/resources/esignet/FAPI/FAPICreateOIDCClientV3/FAPICreateOIDCClient.hbs +++ b/api-test/src/main/resources/esignet/FAPI/FAPICreateOIDCClientV3/FAPICreateOIDCClient.hbs @@ -33,7 +33,7 @@ }, "additionalConfig": { - "userinfo_response_type": "JWS", + "userinfo_response_type": "{{userinfo_response_type}}", "purpose": { "type": "verify" }, diff --git a/api-test/src/main/resources/esignet/FAPI/FAPICreateOIDCClientV3/FAPICreateOIDCClient.yml b/api-test/src/main/resources/esignet/FAPI/FAPICreateOIDCClientV3/FAPICreateOIDCClient.yml index 5f994478f..127af9074 100644 --- a/api-test/src/main/resources/esignet/FAPI/FAPICreateOIDCClientV3/FAPICreateOIDCClient.yml +++ b/api-test/src/main/resources/esignet/FAPI/FAPICreateOIDCClientV3/FAPICreateOIDCClient.yml @@ -36,6 +36,46 @@ FAPICreateOIDCClientV3: "dpop_bound_access_tokens": true, "require_pkce": true +}' + output: '{ + "status": "ACTIVE" +}' + ESignet_CreateOIDCClientFAPI_all_Valid_forUserInfoJWE_Smoke_sid: + endPoint: /v1/esignet/client-mgmt/client + uniqueIdentifier: TC_ESignet_FAPI_CreateOIDCClient_02 + description: Create OIDC Client V3 for FAPI flow with JWE userinfo response type + role: partner + restMethod: post + inputTemplate: esignet/FAPI/FAPICreateOIDCClientV3/FAPICreateOIDCClient + outputTemplate: esignet/FAPI/FAPICreateOIDCClientV3/FAPICreateOIDCClientResult + input: '{ + "requestTime": "$TIMESTAMP$", + "clientId": "$RANDOMPARTNERID$", + "clientName": "MOSIP FAPI OIDC Client", + "logoUri": "https://health-services.com/logo.png", + "relyingPartyId": "mock-relying-party-id", + "redirectUris": "$IDPREDIRECTURI$", + "publicKey": "$OIDC_JWK_KEY_FAPI_JWE$", + "userClaims1": "name", + "userClaims2": "email", + "userClaims3": "gender", + "userClaims4": "phone_number", + "userClaims5": "birthdate", + "authContextRefs": [{"acrValues": "mosip:idp:acr:static-code"},{"acrValues": "mosip:idp:acr:generated-code"},{"acrValues": "mosip:idp:acr:biometrics"}], + "grantTypes": "authorization_code", + "clientAuthMethods": "private_key_jwt", + "keyLang1": "$1STLANG$", + "clientNameLang": "MOSIP FAPI OIDC Client", + "userinfo_response_type": "JWE", + "purpose_title": "title", + "purpose_type": "verify", + "purpose_subTitle": "subtitle", + "signup_banner_required": true, + "forgot_pwd_link_required": true, + "consent_expire_in_mins": 120, + "require_pushed_authorization_requests": true, + "dpop_bound_access_tokens": true, + "require_pkce": true }' output: '{ "status": "ACTIVE" diff --git a/api-test/src/main/resources/esignet/FAPI/FAPIGenerateToken/FAPIGenerateToken.yml b/api-test/src/main/resources/esignet/FAPI/FAPIGenerateToken/FAPIGenerateToken.yml index 50780980b..54b093210 100644 --- a/api-test/src/main/resources/esignet/FAPI/FAPIGenerateToken/FAPIGenerateToken.yml +++ b/api-test/src/main/resources/esignet/FAPI/FAPIGenerateToken/FAPIGenerateToken.yml @@ -21,4 +21,28 @@ FAPIGenerateToken: "code_verifier": "$CODE_VERIFIER$" }' output: '{ +}' + ESignet_GenerateToken_FAPI_DPoP_AuthToken_Xsrf_Valid_forUserInfoJWE_Smoke_sid: + endPoint: $GETENDPOINTFROMWELLKNOWN$ + uniqueIdentifier: TC_ESignet_FAPI_GenerateToken_forUserInfoJWE_01 + description: Generate token for FAPI JWE userinfo flow + role: resident + restMethod: post + checkErrorsOnlyInResponse: true + additionalDependencies: TC_ESignet_FAPI_AuthorizationCode_02 + inputTemplate: esignet/FAPI/FAPIGenerateToken/FAPIGenerateToken + outputTemplate: esignet/FAPI/FAPIGenerateToken/FAPIGenerateTokenResult + input: '{ + "dpop_key": "DPoP", + "dpop_value": "$DPOP_PROOF$", + "grant_type": "authorization_code", + "code": "$ID:AuthorizationCode_FAPI__AuthToken_Xsrf_All_Valid_forUserInfoJWE_Smoke_sid_code$", + "client_id": "$ID:CreateOIDCClientFAPI_all_Valid_forUserInfoJWE_Smoke_sid_clientId$", + "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", + "client_assertion": "$CLIENT_ASSERTION_FAPI_JWE_JWT$", + "redirect_uri": "$IDPREDIRECTURI$", + "aud_key": "token_endpoint", + "code_verifier": "$CODE_VERIFIER$" +}' + output: '{ }' \ No newline at end of file diff --git a/api-test/src/main/resources/esignet/FAPI/FAPIGetUserInfo/FAPIGetUserInfo.yml b/api-test/src/main/resources/esignet/FAPI/FAPIGetUserInfo/FAPIGetUserInfo.yml index f1063d8c6..894cc4f4f 100644 --- a/api-test/src/main/resources/esignet/FAPI/FAPIGetUserInfo/FAPIGetUserInfo.yml +++ b/api-test/src/main/resources/esignet/FAPI/FAPIGetUserInfo/FAPIGetUserInfo.yml @@ -16,4 +16,23 @@ FAPIGetUserInfo: }' output: '{ "aud": "$ID:CreateOIDCClientFAPI_all_Valid_Smoke_sid_clientId$" +}' + ESignet_GetOidcUserInfo_FAPI_UIN_Dpop_AccessToken_GetUserInfoJWE_Valid_Smoke: + endPoint: /v1/esignet/oidc/userinfo + uniqueIdentifier: TC_ESignet_FAPI_GetUserInfo_02 + description: Get OIDC user info with JWE response for FAPI PAR DPoP PKCE flow + role: resident + restMethod: get + validityCheckRequired: true + additionalDependencies: TC_ESignet_FAPI_PartialUpdateOIDCClient_01 + inputTemplate: esignet/FAPI/FAPIGetUserInfo/FAPIGetUserInfo + outputTemplate: esignet/EndToEndFlowWithV3MOCK/userinfo/GetOidcUserInfoDecryptResult + input: '{ + "dpop_access_token": "$ID:GenerateToken_FAPI_DPoP_AuthToken_Xsrf_Valid_forUserInfoJWE_Smoke_sid_access_token$", + "authorization_key": "Authorization", + "dpop_key": "DPoP", + "dpop_value": "$DPOP_PROOF_WITH_ACCESS_TOKEN$" +}' + output: '{ + "aud": "$ID:CreateOIDCClientFAPI_all_Valid_forUserInfoJWE_Smoke_sid_clientId$" }' \ No newline at end of file diff --git a/api-test/src/main/resources/esignet/FAPI/FAPIOauthDetails/FAPIOauthDetails.yml b/api-test/src/main/resources/esignet/FAPI/FAPIOauthDetails/FAPIOauthDetails.yml index 8214752e0..6d79784d8 100644 --- a/api-test/src/main/resources/esignet/FAPI/FAPIOauthDetails/FAPIOauthDetails.yml +++ b/api-test/src/main/resources/esignet/FAPI/FAPIOauthDetails/FAPIOauthDetails.yml @@ -2,7 +2,7 @@ FAPIOauthDetails: ESignet_OAuthDetailsRequest_FAPI_AuthToken_Xsrf_all_Valid_Smoke_sid: endPoint: /v1/esignet/authorization/par-oauth-details uniqueIdentifier: TC_ESignet_FAPI_OauthDetails_01 - description: Validate successful retrieval of OAuth details in FAPI flow + description: Retrieve OAuth details in FAPI PAR flow with valid requestUri and clientId role: resident restMethod: post checkErrorsOnlyInResponse: true @@ -14,4 +14,21 @@ FAPIOauthDetails: "clientId": "$ID:CreateOIDCClientFAPI_all_Valid_Smoke_sid_clientId$" }' output: '{ +}' + ESignet_OAuthDetailsRequest_FAPI_AuthToken_Xsrf_all_Valid_forUserInfoJWE_Smoke_sid: + endPoint: /v1/esignet/authorization/par-oauth-details + uniqueIdentifier: TC_ESignet_FAPI_OauthDetails_forUserInfoJWE_01 + description: Retrieve OAuth details for FAPI JWE UserInfo flow with valid requestUri and clientId + role: resident + restMethod: post + checkErrorsOnlyInResponse: true + additionalDependencies: TC_ESignet_Oauth_FAPI_forUserInfoJWE_01 + inputTemplate: esignet/FAPI/FAPIOauthDetails/FAPIOauthDetails + outputTemplate: esignet/FAPI/FAPIOauthDetails/FAPIOauthDetailsResult + input: '{ + "requestTime": "$TIMESTAMP$", + "requestUri": "$ID:OauthFAPI_all_Valid_forUserInfoJWE_Smoke_sid_request_uri$", + "clientId": "$ID:CreateOIDCClientFAPI_all_Valid_forUserInfoJWE_Smoke_sid_clientId$" +}' + output: '{ }' \ No newline at end of file diff --git a/api-test/src/main/resources/esignet/FAPI/FAPIPartialUpdateOIDCClient/FAPIPartialUpdateOIDCClient.hbs b/api-test/src/main/resources/esignet/FAPI/FAPIPartialUpdateOIDCClient/FAPIPartialUpdateOIDCClient.hbs new file mode 100644 index 000000000..05f10e88c --- /dev/null +++ b/api-test/src/main/resources/esignet/FAPI/FAPIPartialUpdateOIDCClient/FAPIPartialUpdateOIDCClient.hbs @@ -0,0 +1,7 @@ +{ + "clientId": "{{clientId}}", + "requestTime": "{{requestTime}}", + "request": { + "encPublicKey": {{encPublicKey}} + } +} diff --git a/api-test/src/main/resources/esignet/FAPI/FAPIPartialUpdateOIDCClient/FAPIPartialUpdateOIDCClient.yml b/api-test/src/main/resources/esignet/FAPI/FAPIPartialUpdateOIDCClient/FAPIPartialUpdateOIDCClient.yml new file mode 100644 index 000000000..996355b82 --- /dev/null +++ b/api-test/src/main/resources/esignet/FAPI/FAPIPartialUpdateOIDCClient/FAPIPartialUpdateOIDCClient.yml @@ -0,0 +1,18 @@ +FAPIPartialUpdateOIDCClient: + ESignet_FAPIPartialUpdateOIDCClient_all_Valid_forUserInfoJWE_Smoke_sid: + endPoint: /v1/esignet/client-mgmt/client/{clientId} + uniqueIdentifier: TC_ESignet_FAPI_PartialUpdateOIDCClient_01 + description: Partial Update FAPI OIDC Client with encryption public key for JWE userinfo + role: partner + restMethod: patch + additionalDependencies: TC_ESignet_FAPI_CreateOIDCClient_02 + inputTemplate: esignet/FAPI/FAPIPartialUpdateOIDCClient/FAPIPartialUpdateOIDCClient + outputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientResult + input: '{ + "requestTime": "$TIMESTAMP$", + "clientId": "$ID:CreateOIDCClientFAPI_all_Valid_forUserInfoJWE_Smoke_sid_clientId$", + "encPublicKey": "$OIDCJWKKEY13$" +}' + output: '{ + "status": "ACTIVE" +}' diff --git a/api-test/src/main/resources/esignet/FAPI/OauthFAPI/OauthFAPI.yml b/api-test/src/main/resources/esignet/FAPI/OauthFAPI/OauthFAPI.yml index 657b7da8f..181597f82 100644 --- a/api-test/src/main/resources/esignet/FAPI/OauthFAPI/OauthFAPI.yml +++ b/api-test/src/main/resources/esignet/FAPI/OauthFAPI/OauthFAPI.yml @@ -28,4 +28,35 @@ OauthFAPI: "code_challenge_method": "$CODE_CHALLENGE_METHOD$" }' output: '{ +}' + ESignet_OauthFAPI_all_Valid_forUserInfoJWE_Smoke_sid: + endPoint: /v1/esignet/oauth/par + uniqueIdentifier: TC_ESignet_Oauth_FAPI_forUserInfoJWE_01 + description: Generate valid FAPI PAR request for JWE UserInfo flow with PKCE and DPoP parameters + role: resident + restMethod: post + checkErrorsOnlyInResponse: true + additionalDependencies: TC_ESignet_FAPI_PartialUpdateOIDCClient_01 + inputTemplate: esignet/FAPI/OauthFAPI/OauthFAPI + outputTemplate: esignet/FAPI/OauthFAPI/OauthFAPIResult + input: '{ + "requestTime": "$TIMESTAMP$", + "client_id": "$ID:CreateOIDCClientFAPI_all_Valid_forUserInfoJWE_Smoke_sid_clientId$", + "scope": "openid profile", + "response_type": "code", + "redirect_uri": "$IDPREDIRECTURI$", + "display": "popup", + "prompt": "consent", + "acr_values": "mosip:idp:acr:generated-code", + "nonce": "$UNIQUENONCEVALUEFORESIGNET$", + "state": "eree2311", + "claim_locales": "en", + "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", + "client_assertion": "$CLIENT_ASSERTION_FAPI_JWE_JWT$", + "aud_key": "pushed_authorization_request_endpoint", + "dpop_jkt": "$DPOP_JKT$", + "code_challenge": "$CODE_CHALLENGE$", + "code_challenge_method": "$CODE_CHALLENGE_METHOD$" +}' + output: '{ }' \ No newline at end of file diff --git a/api-test/src/main/resources/esignet/OAuthDetailsRequest/OAuthDetailsRequest.yml b/api-test/src/main/resources/esignet/OAuthDetailsRequest/OAuthDetailsRequest.yml index ade07f150..45da70769 100644 --- a/api-test/src/main/resources/esignet/OAuthDetailsRequest/OAuthDetailsRequest.yml +++ b/api-test/src/main/resources/esignet/OAuthDetailsRequest/OAuthDetailsRequest.yml @@ -83,7 +83,7 @@ OAuthDetailsRequest: ESignet_OAuthDetailsRequest_Consent_2nd_Valid_Smoke_sid: endPoint: /v1/esignet/authorization/oauth-details uniqueIdentifier: TC_ESignet_OAuthDetailsRequest_04 - description: Oauthdetails request consent 2nd with all valid details + description: OAuth details request without prompt consent, where user consent is stored during initial authentication and ConsentAction is returned as NOCAPTURE for subsequent authentication with the same user identifier role: resident restMethod: post checkErrorsOnlyInResponse: true @@ -97,7 +97,6 @@ OAuthDetailsRequest: "responseType": "code", "redirectUri": "$IDPREDIRECTURI$", "display": "popup", - "prompt": "consent", "acrValues": "mosip:idp:acr:generated-code", "nonce": "$UNIQUENONCEVALUEFORESIGNET$", "state": "eree2311", diff --git a/api-test/src/main/resources/esignet/OTPAuthFactorFlow/ConsentNoCapture/AuthenticateConsentNoCapture/AuthenticateConsentNoCapture.yml b/api-test/src/main/resources/esignet/OTPAuthFactorFlow/ConsentNoCapture/AuthenticateConsentNoCapture/AuthenticateConsentNoCapture.yml index e9f5a60be..1174cbfaf 100644 --- a/api-test/src/main/resources/esignet/OTPAuthFactorFlow/ConsentNoCapture/AuthenticateConsentNoCapture/AuthenticateConsentNoCapture.yml +++ b/api-test/src/main/resources/esignet/OTPAuthFactorFlow/ConsentNoCapture/AuthenticateConsentNoCapture/AuthenticateConsentNoCapture.yml @@ -2,7 +2,7 @@ AuthenticateConsentNoCapture: ESignet_AuthenticateConsentNoCapture_AuthToken_Xsrf__Smoke: endPoint: /v1/esignet/authorization/v3/authenticate uniqueIdentifier: TC_ESignet_AuthenticateConsentNoCapture_01 - description: Authenticate user using OTP for Consent No Capture flow and initiate OTP delivery across configured channels + description: OAuth details request without prompt consent, where user consent is stored during initial authentication and ConsentAction is returned as NOCAPTURE for subsequent authentication with the same user identifier role: resident restMethod: post checkErrorsOnlyInResponse: true diff --git a/api-test/src/main/resources/esignet/OTPAuthFactorFlow/ConsentNoCapture/OAuthConsentNoCapture/OAuthConsentNoCapture.yml b/api-test/src/main/resources/esignet/OTPAuthFactorFlow/ConsentNoCapture/OAuthConsentNoCapture/OAuthConsentNoCapture.yml index 7e1252dd5..75647a113 100644 --- a/api-test/src/main/resources/esignet/OTPAuthFactorFlow/ConsentNoCapture/OAuthConsentNoCapture/OAuthConsentNoCapture.yml +++ b/api-test/src/main/resources/esignet/OTPAuthFactorFlow/ConsentNoCapture/OAuthConsentNoCapture/OAuthConsentNoCapture.yml @@ -15,7 +15,6 @@ OAuthConsentNoCapture: "responseType": "code", "redirectUri": "$IDPREDIRECTURI$", "display": "popup", - "prompt": "consent", "acrValues": "mosip:idp:acr:generated-code", "nonce": "$UNIQUENONCEVALUEFORESIGNET$", "state": "urlInfo1724138417665", diff --git a/api-test/src/main/resources/esignet/OTPAuthFactorFlow/VerifiedClaims/OAuthDetails/OAuthDetailsRequest.yml b/api-test/src/main/resources/esignet/OTPAuthFactorFlow/VerifiedClaims/OAuthDetails/OAuthDetailsRequest.yml index a465980b6..2f4b02fd4 100644 --- a/api-test/src/main/resources/esignet/OTPAuthFactorFlow/VerifiedClaims/OAuthDetails/OAuthDetailsRequest.yml +++ b/api-test/src/main/resources/esignet/OTPAuthFactorFlow/VerifiedClaims/OAuthDetails/OAuthDetailsRequest.yml @@ -15,7 +15,6 @@ OAuthDetailsRequestV3VerifiedClaims: "responseType": "code", "redirectUri": "$IDPREDIRECTURI$", "display": "popup", - "prompt": "consent", "acrValues": "mosip:idp:acr:generated-code", "nonce": "$UNIQUENONCEVALUEFORESIGNET$", "state": "urlInfo1724138417665", diff --git a/api-test/src/main/resources/esignet/OidcClient/OIDCClient.yml b/api-test/src/main/resources/esignet/OidcClient/OIDCClient.yml index 9aa7c5397..e2b36132b 100644 --- a/api-test/src/main/resources/esignet/OidcClient/OIDCClient.yml +++ b/api-test/src/main/resources/esignet/OidcClient/OIDCClient.yml @@ -704,7 +704,7 @@ CreateOIDCClient: role: partner restMethod: post additionalDependencies: Dependent_Idrepo_uploadPartnerCert_01, Dependent_Idrepo_GenerateApiKey_01, Dependent_Idrepo_RequestAPIKeyForAuthPartner_01,Dependent_Idrepo_ApproveAPIKey_01 - inputTemplate: esignet/OidcClient/OIDCClientDPOP + inputTemplate: esignet/OidcClient/OIDCClientFAPI outputTemplate: esignet/OidcClient/OIDCClientResult input: '{ "name": "$RANDOMID$", @@ -715,6 +715,33 @@ CreateOIDCClient: "redirectUris": "$IDPREDIRECTURI$", "grantTypes": "authorization_code", "clientAuthMethods": "private_key_jwt", + "userinfo_response_type": "JWE", + "require_pushed_authorization_requests": true, + "dpop_bound_access_tokens": true, + "require_pkce": true +}' + output: '{ + "status": "ACTIVE" +}' + Esignet_CreateOIDCClientFAPI_all_Valid_forUserInfoJWE_Smoke_sid: + endPoint: /v1/partnermanager/oidc/client + uniqueIdentifier: TC_ESignet_CreateOIDCClient_MOSIPID_30 + description: Create OIDC client with all valid details for MOSIP ID FAPI JWE userinfo flow + role: partner + restMethod: post + additionalDependencies: Dependent_Idrepo_uploadPartnerCert_01, Dependent_Idrepo_GenerateApiKey_01, Dependent_Idrepo_RequestAPIKeyForAuthPartner_01,Dependent_Idrepo_ApproveAPIKey_01 + inputTemplate: esignet/OidcClient/OIDCClientFAPI + outputTemplate: esignet/OidcClient/OIDCClientResult + input: '{ + "name": "$RANDOMID$", + "policyId": "$ID:DefinePolicy_All_Valid_Smoke_sid_id$", + "publicKey": "$OIDC_JWK_KEY_FAPI_JWE$", + "authPartnerId": "$ID:PartnerSelfRegistration_All_Valid_Smoke_sid_partnerId$", + "logoUri": "https://health-services.com/logo.png", + "redirectUris": "$IDPREDIRECTURI$", + "grantTypes": "authorization_code", + "clientAuthMethods": "private_key_jwt", + "userinfo_response_type": "JWE", "require_pushed_authorization_requests": true, "dpop_bound_access_tokens": true, "require_pkce": true diff --git a/api-test/src/main/resources/esignet/OidcClient/OIDCClientFAPI.hbs b/api-test/src/main/resources/esignet/OidcClient/OIDCClientFAPI.hbs index f3b6c6b4d..71d9d98db 100644 --- a/api-test/src/main/resources/esignet/OidcClient/OIDCClientFAPI.hbs +++ b/api-test/src/main/resources/esignet/OidcClient/OIDCClientFAPI.hbs @@ -17,7 +17,8 @@ "additionalConfig": { "require_pushed_authorization_requests": {{require_pushed_authorization_requests}}, "dpop_bound_access_tokens": {{dpop_bound_access_tokens}}, - "require_pkce": {{require_pkce}} + "require_pkce": {{require_pkce}}, + "userinfo_response_type": "{{userinfo_response_type}}" } } } \ No newline at end of file diff --git a/api-test/src/main/resources/esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClient.yml b/api-test/src/main/resources/esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClient.yml index 91136206b..e1fa1266a 100644 --- a/api-test/src/main/resources/esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClient.yml +++ b/api-test/src/main/resources/esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClient.yml @@ -5,6 +5,7 @@ PartialUpdateOIDCClient: description: Partial Update OIDCClient with Patch endpoint for valid encryption JWK to enable JWE based UserInfo responses role: partner restMethod: patch + additionalDependencies: TC_ESignet_OIDCClientV3_E2EMock_02 inputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClient outputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientResult input: '{ @@ -21,6 +22,7 @@ PartialUpdateOIDCClient: description: Partial Update OIDCClient with encryption public key for updated JWE UserInfo support in V3 MOCK flow role: partner restMethod: patch + additionalDependencies: TC_ESignet_OIDCClientV3_E2EMock_03 inputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClient outputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientResult input: '{ @@ -30,4 +32,120 @@ PartialUpdateOIDCClient: }' output: '{ "status": "ACTIVE" +}' + ESignet_PartialUpdateOIDCClient_MOCK_Invlalid_alg_invalid_Public_key_values_value_Neg: + endPoint: /v1/esignet/client-mgmt/client/{clientId} + uniqueIdentifier: TC_ESignet_PatchOIDCClient_03 + description: Partial Update OIDC Client with invalid public keys values in encryption public key during JWE UserInfo configuration update in V3 MOCK flow and verify that the request fails with invalid public_key error + role: partner + restMethod: patch + additionalDependencies: TC_ESignet_OIDCClientV3_E2EMock_02 + inputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientNegSce + outputTemplate: esignet/error + input: '{ + "requestTime": "$TIMESTAMP$", + "clientId": "$ID:CreateOIDCClientV3_MOCK_all_Valid_forUserInfoJWE_Smoke_sid_clientId$", + "kty": "XYZ", + "e": "AQAB", + "use": "sig", + "kid": "RXby0U2xrdZcLq_X7U7TR0O646sSEWYsSsxCu8P6YGE", + "alg": "", + "n": "mfJudo-L9sy-1guqQwjCdg4ZkeR2KKlhId699HXxTSoh1wkFfPwIpq-nnXgvXC5oEj6pwifcwrfbcZiDS-yuaVRzQQ8GWiyZswE3mUzlplti3QlUU_yMt2mA2BtbfAKJ4iNvq24L2cxah7m0IchQEaacetp9NRxXlhqTpmcNunahsaMI7HnHI2D60gpsuC2F8VjtryV5eZDy2jI28UnTlFgaFc7J_UFNObtTIi8OOX5A4xAxPJ8gEceAEPz0zAU8ARzZIGYch7MbqmZN4YMLShoRub6F1a6xT_NBAjkmIhniBBre1goRwLfSFbn2ipnujP_rA-nVKF9Is-x1URLnWQ" +}' + output: '{ + "errors": [ + { + "errorCode": "invalid_public_key" + } + ] +}' + ESignet_PartialUpdateOIDCClient_MOCK_Invlalid_ClientID_Neg: + endPoint: /v1/esignet/client-mgmt/client/{clientId} + uniqueIdentifier: TC_ESignet_PatchOIDCClient_04 + description: Partial Update OIDC Client with invalid clientId during JWE UserInfo encryption public key update in V3 MOCK flow and verify that the request fails with invalid client id error + role: partner + restMethod: patch + inputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientNegSce + outputTemplate: esignet/error + input: '{ + "requestTime": "$TIMESTAMP$", + "clientId": "12345699293404mosip", + "kty": "XYZ", + "e": "AQAB", + "use": "sig", + "kid": "RXby0U2xrdZcLq_X7U7TR0O646sSEWYsSsxCu8P6YGE", + "alg": "RS256", + "n": "mfJudo-L9sy-1gwsfsdfsfsfg4ZkeR2KKlhId699HXxTSoh1wkFfPwIpq-nnXgvXC5oEj6pwifcwrfbcZiDS-yuaVRzQQ8GWiyZswE3mUzlplti3QlUU_yMt2mA2BtbfAKJ4iNvq24L2cxah7m0IchQEaacetp9NRxXlhqTpmcNunahsaMI7HnHI2D60gpsuC2F8VjtryV5eZDy2jI28UnTlFgaFc7J_UFNObtTIi8OOX5A4xAxPJ8gEceAEPz0zAU8ARzZIGYch7MbqmZN4YMLShoRub6F1a6xT_NBAjkmIhniBBre1goRwLfSFbn2ipnujP_rA-nVKF9Is-x1URLnWQ" +}' + output: '{ + "errors": [ + { + "errorCode": "invalid_client_id" + } + ] +}' + ESignet_PartialUpdateOIDCClient_MOCK_Missing_kid_value_Neg: + endPoint: /v1/esignet/client-mgmt/client/{clientId} + uniqueIdentifier: TC_ESignet_PatchOIDCClient_05 + description: Partial Update OIDC Client with missing kid value in encryption public key during JWE UserInfo configuration update in V3 MOCK flow and verify that the request fails with invalid public key error + role: partner + restMethod: patch + additionalDependencies: TC_ESignet_OIDCClientV3_E2EMock_02 + inputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientNegSce + outputTemplate: esignet/error + input: '{ + "requestTime": "$TIMESTAMP$", + "clientId": "$ID:CreateOIDCClientV3_MOCK_all_Valid_forUserInfoJWE_Smoke_sid_clientId$", + "kty": "XYZ", + "e": "AQAB", + "use": "sig", + "kid": "$REMOVE$", + "alg": "RS256", + "n": "mfJudo-L9sy-1gwsfsdfsfsfg4ZkeR2KKlhId699HXxTSoh1wkFfPwIpq-nnXgvXC5oEj6pwifcwrfbcZiDS-yuaVRzQQ8GWiyZswE3mUzlplti3QlUU_yMt2mA2BtbfAKJ4iNvq24L2cxah7m0IchQEaacetp9NRxXlhqTpmcNunahsaMI7HnHI2D60gpsuC2F8VjtryV5eZDy2jI28UnTlFgaFc7J_UFNObtTIi8OOX5A4xAxPJ8gEceAEPz0zAU8ARzZIGYch7MbqmZN4YMLShoRub6F1a6xT_NBAjkmIhniBBre1goRwLfSFbn2ipnujP_rA-nVKF9Is-x1URLnWQ" +}' + output: '{ + "errors": [ + { + "errorCode": "invalid_public_key" + } + ] +}' + ESignet_PartialUpdateOIDCClient_MOCK_Duplicate_EncKey_forUserInfoUpdateJWE_Neg: + endPoint: /v1/esignet/client-mgmt/client/{clientId} + uniqueIdentifier: TC_ESignet_PatchOIDCClient_06 + description: Partial Update OIDC Client with duplicate encryption public key during JWE UserInfo configuration update in V3 MOCK flow and verify that the client status remains ACTIVE + role: partner + restMethod: patch + additionalDependencies: TC_ESignet_PatchOIDCClient_02 + inputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClient + outputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientResult + input: '{ + "requestTime": "$TIMESTAMP$", + "clientId": "$ID:CreateOIDCClientV3_MOCK_all_Valid_forUserInfoToUpdateClient_Smoke_sid_clientId$", + "encPublicKey": "$OIDCJWKKEY14$" +}' + output: '{ + "status": "ACTIVE" +}' + ESignet_PartialUpdateOIDCClient_MOCK_Different_Encryption_alg_value_Pos: + endPoint: /v1/esignet/client-mgmt/client/{clientId} + uniqueIdentifier: TC_ESignet_PatchOIDCClient_07 + description: Partial Update OIDC Client with RSA-OAEP-256 content encryption algorithm in encryption public key during JWE UserInfo configuration update in V3 MOCK flow and verify that the client status remains ACTIVE + role: partner + restMethod: patch + additionalDependencies: TC_ESignet_OIDCClientV3_E2EMock_02 + inputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientNegSce + outputTemplate: esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientResult + input: '{ + "requestTime": "$TIMESTAMP$", + "clientId": "$ID:CreateOIDCClientV3_MOCK_all_Valid_forUserInfoJWE_Smoke_sid_clientId$", + "kty": "RSA", + "e": "AQAB", + "use": "enc", + "kid": "Wa8SeFHOgsya0d05vxDWVy57Tpz-WQqQhDvJ38oRUuA", + "alg": "RSA-OAEP-256", + "n": "mfJudo-L9sy-1guqQwjCdg4ZkeR2KKlhId699HXxTSoh1wkFfPwIpq-nnXgvXC5oEj6pwifcwrfbcZiDS-yuaVRzQQ8GWiyZswE3mUzlplti3QlUU_yMt2mA2BtbfAKJ4iNvq24L2cxah7m0IchQEaacetp9NRxXlhqTpmcNunahsaMI7HnHI2D60gpsuC2F8VjtryV5eZDy2jI28UnTlFgaFc7J_UFNObtTIi8OOX5A4xAxPJ8gEceAEPz0zAU8ARzZIGYch7MbqmZN4YMLShoRub6F1a6xT_NBAjkmIhniBBre1goRwLfSFbn2ipnujP_rA-nVKF9Is-x1URLnWQ" +}' + output: '{ + "status": "ACTIVE" }' \ No newline at end of file diff --git a/api-test/src/main/resources/esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientNegSce.hbs b/api-test/src/main/resources/esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientNegSce.hbs new file mode 100644 index 000000000..12cf4bc87 --- /dev/null +++ b/api-test/src/main/resources/esignet/PartialUpdateOIDCClient/PartialUpdateOIDCClientNegSce.hbs @@ -0,0 +1,14 @@ +{ + "clientId": "{{clientId}}", + "requestTime": "{{requestTime}}", + "request": { + "encPublicKey": { + "kty": "{{kty}}", + "e": "{{e}}", + "use": "{{use}}", + "kid": "{{kid}}", + "alg": "{{alg}}", + "n": "{{n}}" + } + } +} diff --git a/api-test/testNgXmlFiles/esignetSuite.xml b/api-test/testNgXmlFiles/esignetSuite.xml index a8189c8b4..c19476a14 100644 --- a/api-test/testNgXmlFiles/esignetSuite.xml +++ b/api-test/testNgXmlFiles/esignetSuite.xml @@ -1017,6 +1017,15 @@ + + + + + + +