Revision 8472
Added by Jing Tao almost 11 years ago
test/edu/ucsb/nceas/metacat/authentication/AuthFileTest.java | ||
---|---|---|
30 | 30 |
private static final String GROUPNAME3 = "dev"; |
31 | 31 |
private static final String USERNAME = "uid=john,o=NCEAS,dc=ecoinformatics,dc=org"; |
32 | 32 |
private static final String USERNAME2="uid=smith,o=unaffiliated,dc=ecoinformatics,dc=org"; |
33 |
private static final String PASSWORD = "ecoinformatics"; |
|
33 |
private static final String PLAINPASSWORD = "ecoinformatics"; |
|
34 |
private static final String PLAINPASSWORD2 = "n%cea4s"; |
|
35 |
private static final String HASHEDPASSWORD2 = "$2a$10$iMZXvVYs8nEUAWDFfcCF8ePEvzcnak32tx7TQAecsZcPGRouqSdse"; |
|
36 |
private static final String PLAINPASSWORD3 = "q8w*er"; |
|
37 |
private static final String HASHEDPASSWORD3 = "$2a$10$zO4Cw1p38xWeUh4DneMGCecg67yo2SN25m0wzWCJ9zu7FfRwLTvue"; |
|
38 |
private static final String EMAILADDRESS = "john@nceas.ucsb.edu"; |
|
39 |
private static final String SURNAME = "John"; |
|
40 |
private static final String GIVENNAME = "Joe"; |
|
34 | 41 |
/** |
35 | 42 |
* consstructor for the test |
36 | 43 |
*/ |
... | ... | |
63 | 70 |
suite.addTest(new AuthFileTest("testAddGroup")); |
64 | 71 |
suite.addTest(new AuthFileTest("testAddUser")); |
65 | 72 |
suite.addTest(new AuthFileTest("testAuthenticate")); |
73 |
suite.addTest(new AuthFileTest("testChangePassword")); |
|
66 | 74 |
suite.addTest(new AuthFileTest("testGetUsers")); |
67 | 75 |
suite.addTest(new AuthFileTest("testGetGroups")); |
68 |
suite.addTest(new AuthFileTest("testChangePassword")); |
|
69 | 76 |
suite.addTest(new AuthFileTest("testAddRemoveUserToFromGroup")); |
70 | 77 |
suite.addTest(new AuthFileTest("testGetPrincipals")); |
71 | 78 |
return suite; |
... | ... | |
94 | 101 |
public void testAddUser() throws Exception{ |
95 | 102 |
AuthFile authFile = AuthFile.getInstance(PASSWORDFILEPATH); |
96 | 103 |
String[]groups = {GROUPNAME}; |
97 |
authFile.addUser(USERNAME, groups, PASSWORD, null, null, null, null); |
|
98 |
authFile.addUser(USERNAME2, null, PASSWORD, null, null, null,null); |
|
104 |
authFile.addUser(USERNAME, groups, PLAINPASSWORD, null, EMAILADDRESS, SURNAME, GIVENNAME); |
|
105 |
//user a hash value of the PASSWORD |
|
106 |
authFile.addUser(USERNAME2, null, null, HASHEDPASSWORD2, null, null,null); |
|
99 | 107 |
try { |
100 |
authFile.addUser(USERNAME, groups, PASSWORD, null, null, null, null); |
|
108 |
authFile.addUser(USERNAME, groups, PLAINPASSWORD, null, null, null, null);
|
|
101 | 109 |
assertTrue("We can't reach here since we can't add the user twice", false); |
102 | 110 |
} catch (AuthenticationException e) { |
103 | 111 |
|
... | ... | |
111 | 119 |
*/ |
112 | 120 |
public void testAuthenticate() throws Exception { |
113 | 121 |
AuthFile authFile = AuthFile.getInstance(PASSWORDFILEPATH); |
114 |
boolean success = authFile.authenticate(USERNAME, PASSWORD); |
|
122 |
boolean success = authFile.authenticate(USERNAME, PLAINPASSWORD);
|
|
115 | 123 |
if(!success) { |
116 | 124 |
assertTrue("The authentication should succeed.", false); |
117 | 125 |
} |
... | ... | |
119 | 127 |
if(success) { |
120 | 128 |
assertTrue("The authentication should NOT succeed.", false); |
121 | 129 |
} |
122 |
success = authFile.authenticate("hello", PASSWORD); |
|
130 |
success = authFile.authenticate("hello", PLAINPASSWORD);
|
|
123 | 131 |
if(success) { |
124 | 132 |
assertTrue("The authentication should NOT succeed.", false); |
125 | 133 |
} |
134 |
success = authFile.authenticate(USERNAME2, PLAINPASSWORD2); |
|
135 |
if(!success) { |
|
136 |
assertTrue("The authentication for "+USERNAME2 +" should succeed.", false); |
|
137 |
} |
|
138 |
success = authFile.authenticate(USERNAME2, HASHEDPASSWORD2); |
|
139 |
if(success) { |
|
140 |
assertTrue("The authentication should NOT succeed.", false); |
|
141 |
} |
|
126 | 142 |
} |
127 | 143 |
|
128 | 144 |
/** |
... | ... | |
133 | 149 |
AuthFile authFile = AuthFile.getInstance(PASSWORDFILEPATH); |
134 | 150 |
String[][] users = authFile.getUsers(null, null); |
135 | 151 |
assertTrue("The file should have one user "+USERNAME, users[0][0].equals(USERNAME)); |
152 |
assertTrue("The common name for the user "+USERNAME+" should be "+GIVENNAME+" "+SURNAME, users[0][1].equals(GIVENNAME+" "+SURNAME)); |
|
153 |
assertTrue("The org name for the user "+USERNAME+" should be null ", users[0][2]== null); |
|
154 |
assertTrue("The org unit name for the user "+USERNAME+" should be null ", users[0][3]== null); |
|
155 |
assertTrue("The email address for the user "+USERNAME+" should be "+EMAILADDRESS, users[0][4].equals(EMAILADDRESS)); |
|
156 |
assertTrue("The file should have one user "+USERNAME2, users[1][0].equals(USERNAME2)); |
|
157 |
assertTrue("The common name for the user "+USERNAME2+" should be null", users[1][1]==null); |
|
158 |
assertTrue("The org name for the user "+USERNAME2+" should be null ", users[1][2]== null); |
|
159 |
assertTrue("The org unit name for the user "+USERNAME2+" should be null ", users[1][3]== null); |
|
160 |
assertTrue("The email address for the user "+USERNAME2+" should be null.", users[1][4]==null); |
|
136 | 161 |
String[]userInGroup = authFile.getUsers(null, null, GROUPNAME); |
137 | 162 |
assertTrue("There should be at least one user in the group "+GROUPNAME, userInGroup[0].equals(USERNAME)); |
138 | 163 |
userInGroup = authFile.getUsers(null, null, "group1"); |
... | ... | |
151 | 176 |
assertTrue("There should be at least one group for user "+USERNAME, groupForUser[0][0].equals(GROUPNAME)); |
152 | 177 |
groupForUser = authFile.getGroups(null, null, "user1"); |
153 | 178 |
assertTrue("There shouldn't have any groups assoicated with user1 ", groupForUser==null); |
179 |
groupForUser = authFile.getGroups(null, null, USERNAME2); |
|
180 |
assertTrue("There shouldn't have any groups assoicated with user "+USERNAME2, groupForUser==null); |
|
154 | 181 |
} |
155 | 182 |
|
156 | 183 |
/** |
... | ... | |
159 | 186 |
*/ |
160 | 187 |
public void testChangePassword() throws Exception { |
161 | 188 |
AuthFile authFile = AuthFile.getInstance(PASSWORDFILEPATH); |
162 |
authFile.authenticate(USERNAME, password);
|
|
189 |
authFile.authenticate(USERNAME, PLAINPASSWORD);
|
|
163 | 190 |
String newPassword = "hello"; |
164 |
authFile.modifyPassWithHash(USERNAME,newPassword); |
|
165 |
authFile.authenticate(USERNAME, newPassword); |
|
191 |
authFile.modifyPassWithPlain(USERNAME,newPassword); |
|
192 |
boolean success = authFile.authenticate(USERNAME, newPassword); |
|
193 |
assertTrue("The authentication should be successful with the new password", success); |
|
166 | 194 |
try { |
167 | 195 |
authFile.modifyPassWithPlain("user1", "new"); |
168 | 196 |
assertTrue("Can't reach here since we tried to change the password for an unexisting user ", false); |
169 | 197 |
} catch (AuthenticationException e) { |
170 |
System.out.println("Failed to change the password for a user: "+e.getMessage()); |
|
198 |
//System.out.println("Failed to change the password for a user: "+e.getMessage());
|
|
171 | 199 |
} |
200 |
|
|
201 |
success = authFile.authenticate(USERNAME, "qws"); |
|
202 |
assertTrue("The authentication should fail with a wrong password", !success); |
|
203 |
|
|
204 |
//test change the password with hashed version |
|
205 |
authFile.modifyPassWithHash(USERNAME, HASHEDPASSWORD3); |
|
206 |
success = authFile.authenticate(USERNAME, PLAINPASSWORD3); |
|
207 |
assertTrue("The authentication should be successful with the new password (after modifying the password with a hashed value", success); |
|
208 |
success = authFile.authenticate(USERNAME, HASHEDPASSWORD3); |
|
209 |
assertTrue("The authentication should faile when the user directly use the hash password.", !success); |
|
210 |
success = authFile.authenticate(USERNAME, newPassword); |
|
211 |
assertTrue("The authentication should be successful with a wrong password", !success); |
|
172 | 212 |
} |
173 | 213 |
|
174 | 214 |
/** |
Also available in: Unified diff
Modified the junit test file according to the change in the class.