package net.unicon.cas.mfa.authentication; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import net.unicon.cas.mfa.web.support.MultiFactorAuthenticationSupportingWebApplicationService; import org.jasig.cas.authentication.principal.Principal; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import static org.mockito.Mockito.*; import static org.junit.Assert.*; @RunWith(JUnit4.class) public class DefaultCompositeAuthenticationTests { private static final String PARAM_NAME = MultiFactorAuthenticationSupportingWebApplicationService.CONST_PARAM_AUTHN_METHOD; private final CompositeAuthentication authentication; public DefaultCompositeAuthenticationTests() { final Map map = mock(Map.class); final Principal p = mock(Principal.class); when(p.getId()).thenReturn("casuser"); when(p.getAttributes()).thenReturn(map); final Map authnAttrs = mock(Map.class); this.authentication = new DefaultCompositeAuthentication(p, authnAttrs, new ArrayList(), new HashMap(), new HashMap()); } @Test public void testEmptyAuthenticationMethodAttribute() { final Map map = this.authentication.getAttributes(); when(map.containsKey(any(Object.class))).thenReturn(false); final Collection c = this.authentication.getSatisfiedAuthenticationMethods(); assertEquals(c.size(), 0); } @Test public void testSuccessfullySatisfiedValidAuthenticationMethods() { final Map map = this.authentication.getAttributes(); when(map.containsKey(any(Object.class))).thenReturn(true); final List list = Arrays.asList("first_method", "second_method"); when(map.get(PARAM_NAME)).thenReturn(list); final Collection c = this.authentication.getSatisfiedAuthenticationMethods(); assertEquals(c.size(), 2); } }