1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.acegisecurity.providers.rcp;
17
18 import junit.framework.TestCase;
19
20 import org.acegisecurity.Authentication;
21 import org.acegisecurity.GrantedAuthority;
22 import org.acegisecurity.GrantedAuthorityImpl;
23 import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
24
25
26 /***
27 * Tests {@link RemoteAuthenticationProvider}.
28 *
29 * @author Ben Alex
30 * @version $Id: RemoteAuthenticationProviderTests.java,v 1.2 2005/11/17 00:56:09 benalex Exp $
31 */
32 public class RemoteAuthenticationProviderTests extends TestCase {
33
34
35 public final void setUp() throws Exception {
36 super.setUp();
37 }
38
39 public static void main(String[] args) {
40 junit.textui.TestRunner.run(RemoteAuthenticationProviderTests.class);
41 }
42
43 public void testExceptionsGetPassedBackToCaller() {
44 RemoteAuthenticationProvider provider = new RemoteAuthenticationProvider();
45 provider.setRemoteAuthenticationManager(new MockRemoteAuthenticationManager(
46 false));
47
48 try {
49 provider.authenticate(new UsernamePasswordAuthenticationToken(
50 "marissa", "password"));
51 fail("Should have thrown RemoteAuthenticationException");
52 } catch (RemoteAuthenticationException expected) {
53 assertTrue(true);
54 }
55 }
56
57 public void testGettersSetters() {
58 RemoteAuthenticationProvider provider = new RemoteAuthenticationProvider();
59 provider.setRemoteAuthenticationManager(new MockRemoteAuthenticationManager(
60 true));
61 assertNotNull(provider.getRemoteAuthenticationManager());
62 }
63
64 public void testStartupChecksAuthenticationManagerSet()
65 throws Exception {
66 RemoteAuthenticationProvider provider = new RemoteAuthenticationProvider();
67
68 try {
69 provider.afterPropertiesSet();
70 fail("Should have thrown IllegalArgumentException");
71 } catch (IllegalArgumentException expected) {
72 assertTrue(true);
73 }
74
75 provider.setRemoteAuthenticationManager(new MockRemoteAuthenticationManager(
76 true));
77 provider.afterPropertiesSet();
78 assertTrue(true);
79 }
80
81 public void testSuccessfulAuthenticationCreatesObject() {
82 RemoteAuthenticationProvider provider = new RemoteAuthenticationProvider();
83 provider.setRemoteAuthenticationManager(new MockRemoteAuthenticationManager(
84 true));
85
86 Authentication result = provider.authenticate(new UsernamePasswordAuthenticationToken(
87 "marissa", "password"));
88 assertEquals("marissa", result.getPrincipal());
89 assertEquals("password", result.getCredentials());
90 assertEquals("foo", result.getAuthorities()[0].getAuthority());
91 }
92
93 public void testSupports() {
94 RemoteAuthenticationProvider provider = new RemoteAuthenticationProvider();
95 assertTrue(provider.supports(UsernamePasswordAuthenticationToken.class));
96 }
97
98
99
100 private class MockRemoteAuthenticationManager
101 implements RemoteAuthenticationManager {
102 private boolean grantAccess;
103
104 public MockRemoteAuthenticationManager(boolean grantAccess) {
105 this.grantAccess = grantAccess;
106 }
107
108 public GrantedAuthority[] attemptAuthentication(String username,
109 String password) throws RemoteAuthenticationException {
110 if (grantAccess) {
111 return new GrantedAuthority[] {new GrantedAuthorityImpl("foo")};
112 } else {
113 throw new RemoteAuthenticationException("as requested");
114 }
115 }
116 }
117 }