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 @@
+
+
+
+
+
+
+