Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into ft_notification_t…
Browse files Browse the repository at this point in the history
…emplate_api
  • Loading branch information
RushanNanayakkara committed Oct 15, 2024
2 parents a18a819 + c6ba00a commit cf804a5
Show file tree
Hide file tree
Showing 58 changed files with 5,783 additions and 345 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<parent>
<artifactId>identity-governance</artifactId>
<groupId>org.wso2.carbon.identity.governance</groupId>
<version>1.11.8-SNAPSHOT</version>
<version>1.11.9-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@
<parent>
<groupId>org.wso2.carbon.identity.governance</groupId>
<artifactId>identity-governance</artifactId>
<version>1.11.8-SNAPSHOT</version>
<version>1.11.9-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>

<artifactId>org.wso2.carbon.identity.api.user.governance</artifactId>
<version>1.11.8-SNAPSHOT</version>
<version>1.11.9-SNAPSHOT</version>
<packaging>jar</packaging>
<name>WSO2 Carbon - User Rest Governance API</name>
<description>WSO2 Carbon - User Rest Governance API</description>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,9 @@ private String getRecoveryScenarioFromProperties(List<PropertyDTO> propertyDTOS)
RecoveryScenarios.ADMIN_FORCED_PASSWORD_RESET_VIA_EMAIL_LINK.toString().equals(recoveryScenario) ||
RecoveryScenarios.ADMIN_FORCED_PASSWORD_RESET_VIA_OTP.toString().equals(recoveryScenario) ||
RecoveryScenarios.EMAIL_VERIFICATION_ON_UPDATE.toString().equals(recoveryScenario) ||
RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE.toString().equals(recoveryScenario)) {
RecoveryScenarios.EMAIL_VERIFICATION_ON_VERIFIED_LIST_UPDATE.toString().equals(recoveryScenario) ||
RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE.toString().equals(recoveryScenario) ||
RecoveryScenarios.MOBILE_VERIFICATION_ON_VERIFIED_LIST_UPDATE.toString().equals(recoveryScenario)) {
return recoveryScenario;
}

Expand All @@ -293,7 +295,8 @@ private NotificationResponseBean doResendConfirmationCode(String recoveryScenari

UserRecoveryData userRecoveryData = null;
// Currently this me/resend-code API supports resend code during mobile verification scenario only.
if (RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE.toString().equals(recoveryScenario)) {
if (RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE.toString().equals(recoveryScenario) ||
RecoveryScenarios.MOBILE_VERIFICATION_ON_VERIFIED_LIST_UPDATE.toString().equals(recoveryScenario)) {
userRecoveryData = Utils.getUserRecoveryData(resendCodeRequestDTO, recoveryScenario);
}
if (userRecoveryData == null) {
Expand All @@ -312,6 +315,18 @@ private NotificationResponseBean doResendConfirmationCode(String recoveryScenari
resendCodeRequestDTO);
}

if (RecoveryScenarios.MOBILE_VERIFICATION_ON_VERIFIED_LIST_UPDATE.toString().equals(recoveryScenario) &&
RecoveryScenarios.MOBILE_VERIFICATION_ON_VERIFIED_LIST_UPDATE
.equals(userRecoveryData.getRecoveryScenario()) &&
RecoverySteps.VERIFY_MOBILE_NUMBER.equals(userRecoveryData.getRecoveryStep())) {

notificationResponseBean = setNotificationResponseBean(resendConfirmationManager,
RecoveryScenarios.MOBILE_VERIFICATION_ON_VERIFIED_LIST_UPDATE.toString(),
RecoverySteps.VERIFY_MOBILE_NUMBER.toString(),
IdentityRecoveryConstants.NOTIFICATION_TYPE_VERIFY_MOBILE_ON_UPDATE,
resendCodeRequestDTO);
}

return notificationResponseBean;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,13 +187,29 @@ private NotificationResponseBean doResendConfirmationCode(String recoveryScenari
notificationResponseBean = setNotificationResponseBean(resendConfirmationManager,
RecoveryScenarios.EMAIL_VERIFICATION_ON_UPDATE.toString(), RecoverySteps.VERIFY_EMAIL.toString(),
IdentityRecoveryConstants.NOTIFICATION_TYPE_RESEND_VERIFY_EMAIL_ON_UPDATE, resendCodeRequestDTO);
} else if (RecoveryScenarios.EMAIL_VERIFICATION_ON_VERIFIED_LIST_UPDATE.toString().equals(recoveryScenario) &&
RecoveryScenarios.EMAIL_VERIFICATION_ON_VERIFIED_LIST_UPDATE
.equals(userRecoveryData.getRecoveryScenario()) &&
RecoverySteps.VERIFY_EMAIL.equals(userRecoveryData.getRecoveryStep())) {
notificationResponseBean = setNotificationResponseBean(resendConfirmationManager,
RecoveryScenarios.EMAIL_VERIFICATION_ON_VERIFIED_LIST_UPDATE.toString(),
RecoverySteps.VERIFY_EMAIL.toString(),
IdentityRecoveryConstants.NOTIFICATION_TYPE_RESEND_VERIFY_EMAIL_ON_UPDATE, resendCodeRequestDTO);
} else if (RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE.toString().equals(recoveryScenario) &&
RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE.equals(userRecoveryData.getRecoveryScenario()) &&
RecoverySteps.VERIFY_MOBILE_NUMBER.equals(userRecoveryData.getRecoveryStep())) {
notificationResponseBean = setNotificationResponseBean(resendConfirmationManager,
RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE.toString(),
RecoverySteps.VERIFY_MOBILE_NUMBER.toString(),
IdentityRecoveryConstants.NOTIFICATION_TYPE_VERIFY_MOBILE_ON_UPDATE, resendCodeRequestDTO);
} else if (RecoveryScenarios.MOBILE_VERIFICATION_ON_VERIFIED_LIST_UPDATE.toString().equals(recoveryScenario) &&
RecoveryScenarios.MOBILE_VERIFICATION_ON_VERIFIED_LIST_UPDATE
.equals(userRecoveryData.getRecoveryScenario()) &&
RecoverySteps.VERIFY_MOBILE_NUMBER.equals(userRecoveryData.getRecoveryStep())) {
notificationResponseBean = setNotificationResponseBean(resendConfirmationManager,
RecoveryScenarios.MOBILE_VERIFICATION_ON_VERIFIED_LIST_UPDATE.toString(),
RecoverySteps.VERIFY_MOBILE_NUMBER.toString(),
IdentityRecoveryConstants.NOTIFICATION_TYPE_VERIFY_MOBILE_ON_UPDATE, resendCodeRequestDTO);
}

return notificationResponseBean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.mockito.MockitoAnnotations;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.wso2.carbon.base.CarbonBaseConstants;
import org.wso2.carbon.context.PrivilegedCarbonContext;
Expand Down Expand Up @@ -165,23 +166,68 @@ public void testMeResendCodePost() throws IdentityRecoveryException {
Mockito.when(userRecoveryData.getRecoveryStep()).thenReturn(
RecoverySteps.getRecoveryStep("VERIFY_MOBILE_NUMBER"));

assertEquals(meApiService.meResendCodePost(meResendCodeRequestDTO()).getStatus(), 201);
assertEquals(meApiService.meResendCodePost(
meResendCodeRequestDTO(RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE.name())).getStatus(),
201);

assertEquals(meApiService.meResendCodePost(
meResendCodeRequestDTOWithInvalidScenarioProperty()).getStatus(), 400);

mockedUtils.when(() -> Utils.getUserRecoveryData(any(ResendCodeRequestDTO.class), anyString()))
.thenReturn(null);
assertEquals(meApiService.meResendCodePost(meResendCodeRequestDTO()).getStatus(), 400);
assertEquals(meApiService.meResendCodePost(
meResendCodeRequestDTO(RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE.name())).getStatus(),
400);

Mockito.when(userRecoveryData.getRecoveryScenario()).thenReturn(RecoveryScenarios.
getRecoveryScenario("ASK_PASSWORD"));
assertEquals(meApiService.meResendCodePost(meResendCodeRequestDTO()).getStatus(), 400);
assertEquals(meApiService.meResendCodePost(
meResendCodeRequestDTO(RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE.name())).getStatus(),
400);
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
}

@DataProvider(name = "recoveryScenarioProvider")
public Object[][] recoveryScenarioProvider() {
return new Object[][] {
{RecoveryScenarios.EMAIL_VERIFICATION_ON_UPDATE, RecoverySteps.VERIFY_EMAIL, 400},
{RecoveryScenarios.EMAIL_VERIFICATION_ON_VERIFIED_LIST_UPDATE, RecoverySteps.VERIFY_EMAIL, 400},
{RecoveryScenarios.MOBILE_VERIFICATION_ON_UPDATE, RecoverySteps.VERIFY_MOBILE_NUMBER, 201},
{RecoveryScenarios.MOBILE_VERIFICATION_ON_VERIFIED_LIST_UPDATE,
RecoverySteps.VERIFY_MOBILE_NUMBER, 201},
{RecoveryScenarios.MOBILE_VERIFICATION_ON_VERIFIED_LIST_UPDATE, RecoverySteps.VERIFY_MOBILE_NUMBER, 201}
};
}

@Test(dataProvider = "recoveryScenarioProvider")
public void testMeResendCodePostRecoveryScenarios(RecoveryScenarios recoveryScenario, RecoverySteps recoveryStep,
int expectedStatusCode) throws IdentityRecoveryException {

try {
String carbonHome = Paths.get(System.getProperty("user.dir"), "src", "test", "resources").toString();
System.setProperty(CarbonBaseConstants.CARBON_HOME, carbonHome);
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(USERNAME);
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(-1234);
Mockito.when(resendConfirmationManager.resendConfirmationCode(isNull(), anyString(), anyString(),
anyString(), isNull())).thenReturn(notificationResponseBean);
mockedUtils.when(() -> Utils.getUserRecoveryData(any(ResendCodeRequestDTO.class), anyString()))
.thenReturn(userRecoveryData);
mockedUtils.when(Utils::getResendConfirmationManager).thenReturn(resendConfirmationManager);
Mockito.when(userRecoveryData.getRecoveryScenario()).thenReturn(recoveryScenario);
Mockito.when(userRecoveryData.getRecoveryStep()).thenReturn(recoveryStep);

assertEquals(meApiService.meResendCodePost(
meResendCodeRequestDTO(recoveryScenario.name())).getStatus(),
expectedStatusCode);
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
}

private SelfRegistrationUserDTO buildSelfRegistartion() {
private SelfRegistrationUserDTO buildSelfRegistration() {

SelfRegistrationUserDTO selfRegistrationUserDTO = new SelfRegistrationUserDTO();
selfRegistrationUserDTO.setUsername("TestUser");
Expand Down Expand Up @@ -212,11 +258,11 @@ private SelfUserRegistrationRequestDTO selfUserRegistrationRequestDTO() {
SelfUserRegistrationRequestDTO selfUserRegistrationRequestDTO = new SelfUserRegistrationRequestDTO();
List<ClaimDTO> listClaimDTO = new ArrayList<>();
listClaimDTO.add(buildClaimDTO());
buildSelfRegistartion().setClaims(listClaimDTO);
buildSelfRegistration().setClaims(listClaimDTO);
List<PropertyDTO> listPropertyDTOs = new ArrayList<>();
listPropertyDTOs.add(buildSelfUserRegistrationRequestDTO());
selfUserRegistrationRequestDTO.setProperties(listPropertyDTOs);
selfUserRegistrationRequestDTO.setUser(buildSelfRegistartion());
selfUserRegistrationRequestDTO.setUser(buildSelfRegistration());
return selfUserRegistrationRequestDTO;
}

Expand All @@ -227,11 +273,11 @@ private MeCodeValidationRequestDTO createMeCodeValidationRequestDTO() {
return codeValidationRequestDTO;
}

private MeResendCodeRequestDTO meResendCodeRequestDTO() {
private MeResendCodeRequestDTO meResendCodeRequestDTO(String recoveryScenario) {

MeResendCodeRequestDTO meResendCodeRequestDTO = new MeResendCodeRequestDTO();
List<PropertyDTO> listProperty = new ArrayList<>();
listProperty.add(buildPropertyDTO("RecoveryScenario", "MOBILE_VERIFICATION_ON_UPDATE"));
listProperty.add(buildPropertyDTO("RecoveryScenario", recoveryScenario));
meResendCodeRequestDTO.setProperties(listProperty);
return meResendCodeRequestDTO;
}
Expand Down
Loading

0 comments on commit cf804a5

Please sign in to comment.