Skip to content

Commit

Permalink
Add unit test for fragment application pre deletion listener
Browse files Browse the repository at this point in the history
  • Loading branch information
HasiniSama committed Feb 25, 2025
1 parent 96a7ec3 commit 1f7159b
Showing 1 changed file with 45 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import org.wso2.carbon.identity.organization.management.application.dao.OrgApplicationMgtDAO;
import org.wso2.carbon.identity.organization.management.application.internal.OrgApplicationMgtDataHolder;
import org.wso2.carbon.identity.organization.management.application.model.MainApplicationDO;
import org.wso2.carbon.identity.organization.management.application.model.SharedApplicationDO;
import org.wso2.carbon.identity.organization.management.service.OrganizationManager;
import org.wso2.carbon.identity.organization.management.service.exception.OrganizationManagementException;
import org.wso2.carbon.identity.organization.management.service.util.OrganizationManagementUtil;
Expand Down Expand Up @@ -74,6 +75,9 @@ public class FragmentApplicationMgtListenerTest {
@Mock
private ApplicationManagementService applicationManagementService;

@Mock
private SharedApplicationDO sharedApplicationDO;

@InjectMocks
private FragmentApplicationMgtListener fragmentApplicationMgtListener;

Expand All @@ -96,6 +100,7 @@ public void setUp() {

MockitoAnnotations.openMocks(this);
serviceProvider = mock(ServiceProvider.class);
sharedApplicationDO = mock(SharedApplicationDO.class);
OrgApplicationMgtDataHolder.getInstance().setOrganizationManager(organizationManager);
OrgApplicationMgtDataHolder.getInstance().setOrgApplicationMgtDAO(orgApplicationMgtDAO);
OrgApplicationMgtDataHolder.getInstance().setApplicationManagementService(applicationManagementService);
Expand Down Expand Up @@ -252,6 +257,46 @@ public void testSharedAppNameModificationNotAllowed(String isSharedApp, boolean
}
}

@DataProvider(name = "testFragmentApplicationPreDeletionDataProvider")
public Object[][] testFragmentApplicationPreDeletionDataProvider() {

return new Object[][]{
{TRUE}, {FALSE}
};
}

@Test(dataProvider = "testFragmentApplicationPreDeletionDataProvider")
public void testFragmentApplicationPreDeletion(String isFragmentApplication)
throws IdentityApplicationManagementException, OrganizationManagementException {

ServiceProviderProperty[] spProperties = new ServiceProviderProperty[]{
mockServiceProviderProperty(IS_FRAGMENT_APP, isFragmentApplication)
};
when(serviceProvider.getSpProperties()).thenReturn(spProperties);
when(applicationManagementService.getServiceProvider(applicationName, tenantDomain))
.thenReturn(serviceProvider);

if (Boolean.parseBoolean(isFragmentApplication)) {
when(serviceProvider.getApplicationID()).thenReturn(1);
when(serviceProvider.getApplicationResourceId()).thenReturn(applicationResourceID);
when(orgApplicationMgtDAO.getSharedApplication(1, tenantDomain))
.thenReturn(Optional.ofNullable(sharedApplicationDO));

IdentityApplicationManagementClientException thrownException =
Assert.expectThrows(IdentityApplicationManagementClientException.class,
() -> fragmentApplicationMgtListener
.doPreDeleteApplication(applicationName, tenantDomain, userName));

assertEquals(String.format("Cannot delete fragment application with resource id: %s. " +
"Delete is allowed only when the main application is deleted, or its sharing is revoked.",
applicationResourceID), thrownException.getMessage());
} else {
boolean result = fragmentApplicationMgtListener
.doPreDeleteApplication(applicationName, tenantDomain, userName);
assertTrue(result);
}
}

private void mockClaimConfig(ServiceProvider mainApplication) {

ClaimConfig claimConfig = mock(ClaimConfig.class);
Expand Down

0 comments on commit 1f7159b

Please sign in to comment.