📄 casauthenticationprovidertests.java
字号:
cap.setTicketValidator(new MockTicketValidator(true)); try { cap.afterPropertiesSet(); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException expected) { assertEquals("A casAuthoritiesPopulator must be set", expected.getMessage()); } } public void testDetectsMissingKey() throws Exception { CasAuthenticationProvider cap = new CasAuthenticationProvider(); cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator()); cap.setCasProxyDecider(new MockProxyDecider()); cap.setStatelessTicketCache(new MockStatelessTicketCache()); cap.setTicketValidator(new MockTicketValidator(true)); try { cap.afterPropertiesSet(); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException expected) { assertEquals("A Key is required so CasAuthenticationProvider can identify tokens it previously authenticated", expected.getMessage()); } } public void testDetectsMissingProxyDecider() throws Exception { CasAuthenticationProvider cap = new CasAuthenticationProvider(); cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator()); cap.setKey("qwerty"); cap.setStatelessTicketCache(new MockStatelessTicketCache()); cap.setTicketValidator(new MockTicketValidator(true)); try { cap.afterPropertiesSet(); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException expected) { assertEquals("A casProxyDecider must be set", expected.getMessage()); } } public void testDetectsMissingStatelessTicketCache() throws Exception { CasAuthenticationProvider cap = new CasAuthenticationProvider(); // set this explicitly to null to test failure cap.setStatelessTicketCache(null); cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator()); cap.setCasProxyDecider(new MockProxyDecider()); cap.setKey("qwerty"); cap.setTicketValidator(new MockTicketValidator(true)); try { cap.afterPropertiesSet(); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException expected) { assertEquals("A statelessTicketCache must be set", expected.getMessage()); } } public void testDetectsMissingTicketValidator() throws Exception { CasAuthenticationProvider cap = new CasAuthenticationProvider(); cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator()); cap.setCasProxyDecider(new MockProxyDecider(true)); cap.setKey("qwerty"); cap.setStatelessTicketCache(new MockStatelessTicketCache()); try { cap.afterPropertiesSet(); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException expected) { assertEquals("A ticketValidator must be set", expected.getMessage()); } } public void testGettersSetters() throws Exception { CasAuthenticationProvider cap = new CasAuthenticationProvider(); cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator()); cap.setCasProxyDecider(new MockProxyDecider()); cap.setKey("qwerty"); cap.setStatelessTicketCache(new MockStatelessTicketCache()); cap.setTicketValidator(new MockTicketValidator(true)); cap.afterPropertiesSet(); assertTrue(cap.getCasAuthoritiesPopulator() != null); assertTrue(cap.getCasProxyDecider() != null); assertEquals("qwerty", cap.getKey()); assertTrue(cap.getStatelessTicketCache() != null); assertTrue(cap.getTicketValidator() != null); } public void testIgnoresClassesItDoesNotSupport() throws Exception { CasAuthenticationProvider cap = new CasAuthenticationProvider(); cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator()); cap.setCasProxyDecider(new MockProxyDecider()); cap.setKey("qwerty"); cap.setStatelessTicketCache(new MockStatelessTicketCache()); cap.setTicketValidator(new MockTicketValidator(true)); cap.afterPropertiesSet(); TestingAuthenticationToken token = new TestingAuthenticationToken("user", "password", new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_A")}); assertFalse(cap.supports(TestingAuthenticationToken.class)); // Try it anyway assertEquals(null, cap.authenticate(token)); } public void testIgnoresUsernamePasswordAuthenticationTokensWithoutCasIdentifiersAsPrincipal() throws Exception { CasAuthenticationProvider cap = new CasAuthenticationProvider(); cap.setCasAuthoritiesPopulator(new MockAuthoritiesPopulator()); cap.setCasProxyDecider(new MockProxyDecider()); cap.setKey("qwerty"); cap.setStatelessTicketCache(new MockStatelessTicketCache()); cap.setTicketValidator(new MockTicketValidator(true)); cap.afterPropertiesSet(); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("some_normal_user", "password", new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_A")}); assertEquals(null, cap.authenticate(token)); } public void testSupports() { CasAuthenticationProvider cap = new CasAuthenticationProvider(); assertTrue(cap.supports(UsernamePasswordAuthenticationToken.class)); assertTrue(cap.supports(CasAuthenticationToken.class)); } //~ Inner Classes ================================================================================================== private class MockAuthoritiesPopulator implements CasAuthoritiesPopulator { public UserDetails getUserDetails(String casUserId) throws AuthenticationException { return makeUserDetailsFromAuthoritiesPopulator(); } } private class MockProxyDecider implements CasProxyDecider { private boolean acceptProxy; public MockProxyDecider(boolean acceptProxy) { this.acceptProxy = acceptProxy; } private MockProxyDecider() { super(); } public void confirmProxyListTrusted(List proxyList) throws ProxyUntrustedException { if (acceptProxy) { return; } else { throw new ProxyUntrustedException("As requested from mock"); } } } private class MockStatelessTicketCache implements StatelessTicketCache { private Map cache = new HashMap(); public CasAuthenticationToken getByTicketId(String serviceTicket) { return (CasAuthenticationToken) cache.get(serviceTicket); } public void putTicketInCache(CasAuthenticationToken token) { cache.put(token.getCredentials().toString(), token); } public void removeTicketFromCache(CasAuthenticationToken token) { throw new UnsupportedOperationException("mock method not implemented"); } public void removeTicketFromCache(String serviceTicket) { throw new UnsupportedOperationException("mock method not implemented"); } } private class MockTicketValidator extends AbstractTicketValidator { private boolean returnTicket; public MockTicketValidator(boolean returnTicket) { this.returnTicket = returnTicket; } private MockTicketValidator() { super(); } public TicketResponse confirmTicketValid(String serviceTicket) throws AuthenticationException { if (returnTicket) { List list = new Vector(); list.add("https://localhost/portal/j_acegi_cas_security_check"); return new TicketResponse("marissa", list, "PGTIOU-0-R0zlgrl4pdAQwBvJWO3vnNpevwqStbSGcq3vKB2SqSFFRnjPHt"); } throw new BadCredentialsException("As requested from mock"); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -