KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > mx4j > tools > remote > PasswordAuthenticatorTest


1 /*
2  * Copyright (C) The MX4J Contributors.
3  * All rights reserved.
4  *
5  * This software is distributed under the terms of the MX4J License version 1.0.
6  * See the terms of the MX4J License in the documentation provided with this software.
7  */

8
9 package test.mx4j.tools.remote;
10
11 import java.io.BufferedInputStream JavaDoc;
12 import java.io.BufferedWriter JavaDoc;
13 import java.io.ByteArrayInputStream JavaDoc;
14 import java.io.InputStream JavaDoc;
15 import java.io.StringWriter JavaDoc;
16 import java.security.Principal JavaDoc;
17 import java.util.Set JavaDoc;
18 import javax.security.auth.Subject JavaDoc;
19
20 import mx4j.tools.remote.PasswordAuthenticator;
21 import test.MX4JTestCase;
22
23 /**
24  * @version $Revision: 1.3 $
25  */

26 public class PasswordAuthenticatorTest extends MX4JTestCase
27 {
28    public PasswordAuthenticatorTest(String JavaDoc s)
29    {
30       super(s);
31    }
32
33    public void testAuthenticationWithNullCredentials() throws Exception JavaDoc
34    {
35       PasswordAuthenticator authenticator = new PasswordAuthenticator(preparePasswords(new String JavaDoc[0]));
36       Object JavaDoc credentials = null;
37       try
38       {
39          authenticator.authenticate(credentials);
40          fail();
41       }
42       catch (SecurityException JavaDoc x)
43       {
44       }
45    }
46
47    public void testAuthenticationWithBadCredentials() throws Exception JavaDoc
48    {
49       PasswordAuthenticator authenticator = new PasswordAuthenticator(preparePasswords(new String JavaDoc[0]));
50       Object JavaDoc credentials = new Object JavaDoc();
51       try
52       {
53          authenticator.authenticate(credentials);
54          fail();
55       }
56       catch (SecurityException JavaDoc x)
57       {
58       }
59    }
60
61    public void testAuthenticationWithCredentialsNull() throws Exception JavaDoc
62    {
63       PasswordAuthenticator authenticator = new PasswordAuthenticator(preparePasswords(new String JavaDoc[0]));
64       Object JavaDoc credentials = new String JavaDoc[2];
65       try
66       {
67          authenticator.authenticate(credentials);
68          fail();
69       }
70       catch (SecurityException JavaDoc x)
71       {
72       }
73    }
74
75    public void testAuthenticationWithUnknwonCredentials() throws Exception JavaDoc
76    {
77       PasswordAuthenticator authenticator = new PasswordAuthenticator(preparePasswords(new String JavaDoc[]{"user1", "password1"}));
78       Object JavaDoc credentials = new String JavaDoc[]{"dummy", null};
79       try
80       {
81          authenticator.authenticate(credentials);
82          fail();
83       }
84       catch (SecurityException JavaDoc x)
85       {
86       }
87    }
88
89    public void testAuthenticationWithWrongCredentials() throws Exception JavaDoc
90    {
91       String JavaDoc user = "user1";
92       PasswordAuthenticator authenticator = new PasswordAuthenticator(preparePasswords(new String JavaDoc[]{user, "password1"}));
93       Object JavaDoc credentials = new String JavaDoc[]{user, null};
94       try
95       {
96          authenticator.authenticate(credentials);
97          fail();
98       }
99       catch (SecurityException JavaDoc x)
100       {
101       }
102    }
103
104    public void testAuthenticationPlainSentClear() throws Exception JavaDoc
105    {
106       String JavaDoc user = "user1";
107       String JavaDoc password = "password1";
108       PasswordAuthenticator authenticator = new PasswordAuthenticator(preparePasswords(new String JavaDoc[]{user, password}));
109       Object JavaDoc credentials = new String JavaDoc[]{user, password};
110       // Send the password in clear
111
Subject JavaDoc subject = authenticator.authenticate(credentials);
112       assertNotNull(subject);
113       Set JavaDoc principals = subject.getPrincipals();
114       assertEquals(principals.size(), 1);
115       Principal JavaDoc principal = (Principal JavaDoc)principals.iterator().next();
116       assertEquals(principal.getName(), user);
117    }
118
119    public void testAuthenticationPlainSentObfuscated() throws Exception JavaDoc
120    {
121       String JavaDoc user = "user1";
122       String JavaDoc password = "password1";
123       PasswordAuthenticator authenticator = new PasswordAuthenticator(preparePasswords(new String JavaDoc[]{user, password}));
124       Object JavaDoc credentials = new String JavaDoc[]{user, PasswordAuthenticator.obfuscatePassword(password)};
125       // Send the password obfuscated
126
Subject JavaDoc subject = authenticator.authenticate(credentials);
127       assertNotNull(subject);
128       Set JavaDoc principals = subject.getPrincipals();
129       assertEquals(principals.size(), 1);
130       Principal JavaDoc principal = (Principal JavaDoc)principals.iterator().next();
131       assertEquals(principal.getName(), user);
132    }
133
134    public void testAuthenticationObfuscatedSentClear() throws Exception JavaDoc
135    {
136       String JavaDoc user = "user1";
137       String JavaDoc password = "password1";
138       PasswordAuthenticator authenticator = new PasswordAuthenticator(preparePasswords(new String JavaDoc[]{user, PasswordAuthenticator.obfuscatePassword(password)}));
139       Object JavaDoc credentials = new String JavaDoc[]{user, password};
140       // Send the password in clear
141
Subject JavaDoc subject = authenticator.authenticate(credentials);
142       assertNotNull(subject);
143       Set JavaDoc principals = subject.getPrincipals();
144       assertEquals(principals.size(), 1);
145       Principal JavaDoc principal = (Principal JavaDoc)principals.iterator().next();
146       assertEquals(principal.getName(), user);
147    }
148
149    public void testAuthenticationObfuscatedSentObfuscated() throws Exception JavaDoc
150    {
151       String JavaDoc user = "user1";
152       String JavaDoc password = "password1";
153       PasswordAuthenticator authenticator = new PasswordAuthenticator(preparePasswords(new String JavaDoc[]{user, PasswordAuthenticator.obfuscatePassword(password)}));
154       Object JavaDoc credentials = new String JavaDoc[]{user, PasswordAuthenticator.obfuscatePassword(password)};
155       // Send the password in clear
156
Subject JavaDoc subject = authenticator.authenticate(credentials);
157       assertNotNull(subject);
158       Set JavaDoc principals = subject.getPrincipals();
159       assertEquals(principals.size(), 1);
160       Principal JavaDoc principal = (Principal JavaDoc)principals.iterator().next();
161       assertEquals(principal.getName(), user);
162    }
163
164    private InputStream JavaDoc preparePasswords(String JavaDoc[] pairs) throws Exception JavaDoc
165    {
166       StringWriter JavaDoc sw = new StringWriter JavaDoc();
167       BufferedWriter JavaDoc bw = new BufferedWriter JavaDoc(sw);
168       for (int i = 0; i < pairs.length; i += 2)
169       {
170          String JavaDoc user = pairs[i];
171          String JavaDoc password = pairs[i + 1];
172          bw.write(user);
173          bw.write(':');
174          bw.write(password);
175          bw.newLine();
176       }
177       bw.close();
178
179       return new BufferedInputStream JavaDoc(new ByteArrayInputStream JavaDoc(sw.toString().getBytes()));
180    }
181 }
182
Popular Tags