package gov.samhsa.consent2share.infrastructure.security; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.anyLong; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import java.util.HashSet; import java.util.Set; import javax.servlet.http.HttpSession; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import org.owasp.esapi.AccessReferenceMap; import org.owasp.esapi.errors.AccessControlException; /** * The Class ConsentServiceImplTest. */ @RunWith(MockitoJUnitRunner.class) public class AccessReferenceMapperImplTest { AccessReferenceMapperImpl sut; HttpSession session; final String INDIRECT_REFERENCE = "ScrambledText"; final Long DIRECT_REFERENCE_LONG = (long) 1; final String DIRECT_REFERENCE_STRING = "1"; final String MAP_NAME = "AccessReferenceMap"; @Before public void setUp() throws AccessControlException { AccessReferenceMapperImpl accessReferenceMapper = new AccessReferenceMapperImpl(); sut = spy(accessReferenceMapper); session = mock(HttpSession.class); @SuppressWarnings("unchecked") AccessReferenceMap<String> map = (AccessReferenceMap<String>) mock(AccessReferenceMap.class); Object directReference = String.valueOf(DIRECT_REFERENCE_STRING); doReturn(map).when(sut).getMap(); doReturn(INDIRECT_REFERENCE).when(map).addDirectReference(anyString()); doReturn(INDIRECT_REFERENCE).when(map).addDirectReference(anyLong()); doReturn(directReference).when(map).getDirectReference( INDIRECT_REFERENCE); doReturn(session).when(sut).getSession(); } @Test public void testGetDirectReference() { assertEquals(DIRECT_REFERENCE_LONG, Long.valueOf(sut.getDirectReference(INDIRECT_REFERENCE))); } @Test public void testGetIndirectReference() { assertEquals(INDIRECT_REFERENCE, sut.getIndirectReference(DIRECT_REFERENCE_STRING)); } @Test public void testSetupAccessReferenceMap() { Set<HasId> objectSet = new HashSet<HasId>(); HasId hasId1 = mock(HasId.class); HasId hasId2 = mock(HasId.class); objectSet.add(hasId1); objectSet.add(hasId2); doReturn("1").when(hasId1).getId(); doReturn("2").when(hasId2).getId(); sut.setupAccessReferenceMap(objectSet); verify(hasId1).setId(INDIRECT_REFERENCE); verify(hasId2).setId(INDIRECT_REFERENCE); } }