package com.feisystems.polrep.util; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.function.Function; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import com.feisystems.polrep.domain.Policy; import com.feisystems.polrep.service.dto.PolicyDto; import com.feisystems.polrep.service.exception.ConflictingRequestException; import com.feisystems.polrep.service.exception.PolicyAlreadyExistsException; import com.feisystems.polrep.service.exception.PolicyIdNotFoundException; import com.feisystems.polrep.service.exception.PolicyNotFoundException; @RunWith(MockitoJUnitRunner.class) public class AssertionUtilsTest { @Rule public ExpectedException thrown = ExpectedException.none(); @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testAssertNotExistsInPolicyRepositoryListOfPolicyDtoFunctionOfStringPolicy_First_Exists_Throws_PolicyAlreadyExistsException() { // Arrange thrown.expect(PolicyAlreadyExistsException.class); final String policyId1 = "policyId1"; final String policyId2 = "policyId2"; final PolicyDto p1 = new PolicyDto(); p1.setId(policyId1); final PolicyDto p2 = new PolicyDto(); p2.setId(policyId2); final Function<String, Policy> policyFindFunction = s -> s .equals(policyId2) ? null : new Policy(); final List<PolicyDto> policyDtos = Arrays.asList(p1, p2); // Act AssertionUtils.assertNotExistsInPolicyRepository(policyDtos, policyFindFunction); } @Test public void testAssertNotExistsInPolicyRepositoryListOfPolicyDtoFunctionOfStringPolicy_None_Exists() { // Arrange final String policyId1 = "policyId1"; final String policyId2 = "policyId2"; final PolicyDto p1 = new PolicyDto(); p1.setId(policyId1); final PolicyDto p2 = new PolicyDto(); p2.setId(policyId2); final Function<String, Policy> policyFindFunction = s -> s .equals(policyId1) || s.equals(policyId2) ? null : new Policy(); final List<PolicyDto> policyDtos = Arrays.asList(p1, p2); // Act AssertionUtils.assertNotExistsInPolicyRepository(policyDtos, policyFindFunction); } @Test public void testAssertNotExistsInPolicyRepositoryListOfPolicyDtoFunctionOfStringPolicy_Second_Exists_Throws_PolicyAlreadyExistsException() { // Arrange thrown.expect(PolicyAlreadyExistsException.class); final String policyId1 = "policyId1"; final String policyId2 = "policyId2"; final PolicyDto p1 = new PolicyDto(); p1.setId(policyId1); final PolicyDto p2 = new PolicyDto(); p2.setId(policyId2); final Function<String, Policy> policyFindFunction = s -> s .equals(policyId1) ? null : new Policy(); final List<PolicyDto> policyDtos = Arrays.asList(p1, p2); // Act AssertionUtils.assertNotExistsInPolicyRepository(policyDtos, policyFindFunction); } @Test public void testAssertNotExistsInPolicyRepositoryStringFunctionOfStringPolicy_Exist_Throws() { // Arrange thrown.expect(PolicyAlreadyExistsException.class); final String policyId1 = "policyId1"; final String policyId2 = "policyId2"; final PolicyDto p1 = new PolicyDto(); p1.setId(policyId1); final PolicyDto p2 = new PolicyDto(); p2.setId(policyId2); final Function<String, Policy> policyFindFunction = s -> s .equals(policyId1) ? null : new Policy(); // Act AssertionUtils.assertNotExistsInPolicyRepository(policyId2, policyFindFunction); } @Test public void testAssertNotExistsInPolicyRepositoryStringFunctionOfStringPolicy_Not_Exists() { // Arrange final String policyId1 = "policyId1"; final String policyId2 = "policyId2"; final PolicyDto p1 = new PolicyDto(); p1.setId(policyId1); final PolicyDto p2 = new PolicyDto(); p2.setId(policyId2); final Function<String, Policy> policyFindFunction = s -> s .equals(policyId1) ? null : new Policy(); // Act AssertionUtils.assertNotExistsInPolicyRepository(policyId1, policyFindFunction); } @Test public void testAssertPoliciesNotEmpty_Empty_Throws_PolicyNotFoundException() { // Arrange thrown.expect(PolicyNotFoundException.class); final String policyId = "policyId"; final String wildcard = "wildcard"; final List<Policy> policies = Collections.emptyList(); // Act AssertionUtils.assertPoliciesNotEmpty(policies, policyId, wildcard); } @Test public void testAssertPoliciesNotEmpty_Not_Empty() { // Arrange final Policy policy = new Policy(); final String policyId = "policyId"; final String wildcard = "wildcard"; final List<Policy> policies = Arrays.asList(policy); // Act AssertionUtils.assertPoliciesNotEmpty(policies, policyId, wildcard); } @Test public void testAssertPolicyId() { // Arrange final String policyId = "policyId"; // Act AssertionUtils.assertPolicyId(policyId); } @Test public void testAssertPolicyId_Empty_String_Throws_PolicyIdNotFoundException() { // Arrange thrown.expect(PolicyIdNotFoundException.class); final String policyId = ""; // Act AssertionUtils.assertPolicyId(policyId); } @Test public void testAssertPolicyId_Null_Throws_PolicyIdNotFoundException() { // Arrange thrown.expect(PolicyIdNotFoundException.class); final String policyId = null; // Act AssertionUtils.assertPolicyId(policyId); } @Test public void testAssertPolicyIdConsistency() { // Arrange final String requestPolicyId = "requestPolicyId"; final String policyContentPolicyId = requestPolicyId; // Act AssertionUtils.assertPolicyIdConsistency(requestPolicyId, policyContentPolicyId); } @Test public void testAssertPolicyIdConsistency_Not_Consistent_Throws_ConflictingRequestException() { // Arrange thrown.expect(ConflictingRequestException.class); final String requestPolicyId = "requestPolicyId"; final String policyContentPolicyId = requestPolicyId + "."; // Act AssertionUtils.assertPolicyIdConsistency(requestPolicyId, policyContentPolicyId); } @Test public void testAssertPolicyNotNull() { // Arrange final Policy policy = new Policy(); final String policyId = "policyId"; // Act AssertionUtils.assertPolicyNotNull(policy, policyId); } @Test public void testAssertPolicyNotNull_Throws_PolicyNotFoundException() { // Arrange thrown.expect(PolicyNotFoundException.class); final Policy policy = null; final String policyId = "policyId"; // Act AssertionUtils.assertPolicyNotNull(policy, policyId); } @Test public void testAssertUniqueIds() { // Arrange final PolicyDto p1 = new PolicyDto(); final PolicyDto p2 = new PolicyDto(); final PolicyDto p3 = new PolicyDto(); final String policyId1 = "policyId1"; final String policyId2 = "policyId2"; final String policyId3 = "policyId3"; p1.setId(policyId1); p2.setId(policyId2); p3.setId(policyId3); final List<PolicyDto> policyDtos = Arrays.asList(p1, p2, p3); // Act AssertionUtils.assertUniqueIds(policyDtos); } @Test public void testAssertUniqueIds_All_Matches_Throws_ConflictingRequestException() { // Arrange thrown.expect(ConflictingRequestException.class); final PolicyDto p1 = new PolicyDto(); final PolicyDto p2 = new PolicyDto(); final PolicyDto p3 = new PolicyDto(); final String policyId1 = "policyId1"; final String policyId2 = policyId1; final String policyId3 = policyId2; p1.setId(policyId1); p2.setId(policyId2); p3.setId(policyId3); final List<PolicyDto> policyDtos = Arrays.asList(p1, p2, p3); // Act AssertionUtils.assertUniqueIds(policyDtos); } @Test public void testAssertUniqueIds_One_Match_Throws_ConflictingRequestException() { // Arrange thrown.expect(ConflictingRequestException.class); final PolicyDto p1 = new PolicyDto(); final PolicyDto p2 = new PolicyDto(); final PolicyDto p3 = new PolicyDto(); final String policyId1 = "policyId1"; final String policyId2 = "policyId2"; final String policyId3 = policyId2; p1.setId(policyId1); p2.setId(policyId2); p3.setId(policyId3); final List<PolicyDto> policyDtos = Arrays.asList(p1, p2, p3); // Act AssertionUtils.assertUniqueIds(policyDtos); } }