package net.unicon.cas.mfa.authentication;
import net.unicon.cas.mfa.web.support.DefaultMultiFactorAuthenticationSupportingWebApplicationService;
import net.unicon.cas.mfa.web.support.UnrecognizedAuthenticationMethodException;
import org.jasig.cas.authentication.principal.Response;
import org.junit.Test;
import java.util.LinkedHashMap;
import java.util.Map;
import static org.junit.Assert.*;
/**
* Created by jgasper on 5/18/15.
*/
public class RegexAuthenticationMethodTranslatorTests {
@Test
public void testBasicTranslate() {
final Map<String, String> testMap = getLookupMap();
final RegexAuthenticationMethodTranslator regexAuthenticationMethodTranslator = new RegexAuthenticationMethodTranslator(testMap);
assertEquals("mfa1", regexAuthenticationMethodTranslator.translate(null, "CN=Staff,OU=Groups,DC=example,DC=edu"));
assertEquals("mfa2", regexAuthenticationMethodTranslator.translate(null, "CN=Students,OU=Groups,DC=example,DC=edu"));
assertEquals("mfa3", regexAuthenticationMethodTranslator.translate(null, "CN=Others,OU=Groups,DC=example,DC=edu"));
}
@Test
public void testDefaultMfa() {
final Map<String, String> testMap = getLookupMap();
final String result = "duo-strong";
final RegexAuthenticationMethodTranslator regexAuthenticationMethodTranslator =
new RegexAuthenticationMethodTranslator(testMap, result);
assertEquals(result, regexAuthenticationMethodTranslator.translate(null, "CN=sudoers,OU=AdminGroups,DC=example,DC=edu"));
}
@Test(expected = UnrecognizedAuthenticationMethodException.class)
public void testTranslateException() {
final DefaultMultiFactorAuthenticationSupportingWebApplicationService svc =
new DefaultMultiFactorAuthenticationSupportingWebApplicationService("https://www.github.com",
"https://www.github.com", null, Response.ResponseType.REDIRECT, "test_authn_method");
final Map<String, String> testMap = getLookupMap();
final RegexAuthenticationMethodTranslator regexAuthenticationMethodTranslator = new RegexAuthenticationMethodTranslator(testMap);
regexAuthenticationMethodTranslator.translate(svc, "CN=sudoers,OU=AdminGroups,DC=example,DC=edu");
}
private static Map<String, String> getLookupMap() {
final Map<String, String> testMap = new LinkedHashMap<>();
testMap.put("CN=Staff,OU=Groups,DC=example,DC=edu", "mfa1");
testMap.put("CN=Students,OU=Groups,DC=example,DC=edu", "mfa2");
testMap.put(".*,OU=Groups,DC=example,DC=edu", "mfa3");
return testMap;
}
}