source: josm/trunk/test/unit/org/openstreetmap/josm/data/UserIdentityManagerTest.java@ 12795

Last change on this file since 12795 was 12747, checked in by Don-vip, 7 years ago

see #15229 - see #15182 - fix unit tests

  • Property svn:eol-style set to native
File size: 11.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data;
3
4import static org.junit.Assert.assertEquals;
5import static org.junit.Assert.assertFalse;
6import static org.junit.Assert.assertNotNull;
7import static org.junit.Assert.assertNull;
8import static org.junit.Assert.assertSame;
9import static org.junit.Assert.assertTrue;
10
11import org.junit.Rule;
12import org.junit.Test;
13import org.openstreetmap.josm.Main;
14import org.openstreetmap.josm.data.osm.User;
15import org.openstreetmap.josm.data.osm.UserInfo;
16import org.openstreetmap.josm.testutils.JOSMTestRules;
17
18import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
19
20/**
21 * Unit tests of {@link UserIdentityManager} class.
22 */
23public class UserIdentityManagerTest {
24
25 /**
26 * Setup test.
27 */
28 @Rule
29 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
30 public JOSMTestRules test = new JOSMTestRules().preferences();
31
32 private static UserInfo newUserInfo() {
33 return newUserInfo(1, "a description");
34 }
35
36 private static UserInfo newUserInfo(int id, String description) {
37 UserInfo userInfo = new UserInfo();
38 userInfo.setId(id);
39 userInfo.setDescription(description);
40 return userInfo;
41 }
42
43 /**
44 * Test singleton access.
45 */
46 @Test
47 public void testSingletonAccess() {
48
49 UserIdentityManager im = UserIdentityManager.getInstance();
50
51 // created ?
52 assertNotNull(im);
53
54 UserIdentityManager im2 = UserIdentityManager.getInstance();
55
56 // only one instance
57 assertSame(im, im2);
58 }
59
60 /**
61 * Unit test of {@link UserIdentityManager#setAnonymous}.
62 */
63 @Test
64 public void testSetAnonymous() {
65 UserIdentityManager im = UserIdentityManager.getInstance();
66
67 im.setPartiallyIdentified("test");
68 im.setAnonymous();
69
70 assertTrue(im.isAnonymous());
71 assertFalse(im.isPartiallyIdentified());
72 assertFalse(im.isFullyIdentified());
73
74 assertEquals(0, im.getUserId());
75 assertNull(im.getUserName());
76 assertNull(im.getUserInfo());
77 assertSame(User.getAnonymous(), im.asUser());
78 }
79
80 /**
81 * Unit test of {@link UserIdentityManager#setPartiallyIdentified} - nominal case.
82 */
83 @Test
84 public void testSetPartiallyIdentified() {
85 UserIdentityManager im = UserIdentityManager.getInstance();
86 im.setPartiallyIdentified("test");
87
88 assertFalse(im.isAnonymous());
89 assertTrue(im.isPartiallyIdentified());
90 assertFalse(im.isFullyIdentified());
91
92 assertEquals(0, im.getUserId());
93 assertEquals("test", im.getUserName());
94 assertNull(im.getUserInfo());
95 User usr = im.asUser();
96 assertEquals(0, usr.getId());
97 assertEquals("test", usr.getName());
98 }
99
100 /**
101 * Unit test of {@link UserIdentityManager#setPartiallyIdentified} - null case.
102 */
103 @Test(expected = IllegalArgumentException.class)
104 public void testSetPartiallyIdentifiedNull() {
105 UserIdentityManager.getInstance().setPartiallyIdentified(null);
106 }
107
108 /**
109 * Unit test of {@link UserIdentityManager#setPartiallyIdentified} - empty case.
110 */
111 @Test(expected = IllegalArgumentException.class)
112 public void testSetPartiallyIdentifiedEmpty() {
113 UserIdentityManager.getInstance().setPartiallyIdentified("");
114 }
115
116 /**
117 * Unit test of {@link UserIdentityManager#setPartiallyIdentified} - blank case.
118 */
119 @Test(expected = IllegalArgumentException.class)
120 public void testSetPartiallyIdentifiedBlank() {
121 UserIdentityManager.getInstance().setPartiallyIdentified(" \t ");
122 }
123
124 /**
125 * Unit test of {@link UserIdentityManager#setFullyIdentified} - nominal case.
126 */
127 @Test
128 public void testSetFullyIdentified() {
129 UserIdentityManager im = UserIdentityManager.getInstance();
130
131 UserInfo userInfo = newUserInfo();
132
133 im.setFullyIdentified("test", userInfo);
134
135 assertFalse(im.isAnonymous());
136 assertFalse(im.isPartiallyIdentified());
137 assertTrue(im.isFullyIdentified());
138
139 assertEquals(1, im.getUserId());
140 assertEquals("test", im.getUserName());
141 assertEquals(userInfo, im.getUserInfo());
142 User usr = im.asUser();
143 assertEquals(1, usr.getId());
144 assertEquals("test", usr.getName());
145 }
146
147 /**
148 * Unit test of {@link UserIdentityManager#setFullyIdentified} - null name case.
149 */
150 @Test(expected = IllegalArgumentException.class)
151 public void testSetFullyIdentifiedNullName() {
152 UserIdentityManager.getInstance().setFullyIdentified(null, newUserInfo());
153 }
154
155 /**
156 * Unit test of {@link UserIdentityManager#setFullyIdentified} - empty name case.
157 */
158 @Test(expected = IllegalArgumentException.class)
159 public void testSetFullyIdentifiedEmptyName() {
160 UserIdentityManager.getInstance().setFullyIdentified("", newUserInfo());
161 }
162
163 /**
164 * Unit test of {@link UserIdentityManager#setFullyIdentified} - blank name case.
165 */
166 @Test(expected = IllegalArgumentException.class)
167 public void testSetFullyIdentifiedBlankName() {
168 UserIdentityManager.getInstance().setFullyIdentified(" \t ", newUserInfo());
169 }
170
171 /**
172 * Unit test of {@link UserIdentityManager#setFullyIdentified} - null info case.
173 */
174 @Test(expected = IllegalArgumentException.class)
175 public void testSetFullyIdentifiedNullInfo() {
176 UserIdentityManager.getInstance().setFullyIdentified("test", null);
177 }
178
179 /**
180 * Preferences include neither an url nor a user name => we have an anonymous user
181 */
182 @Test
183 public void testInitFromPreferences1() {
184 UserIdentityManager im = UserIdentityManager.getInstance();
185
186 // reset it
187 im.setAnonymous();
188
189 // for this test we disable the listener
190 Main.pref.removePreferenceChangeListener(im);
191
192 try {
193 Main.pref.put("osm-server.url", null);
194 Main.pref.put("osm-server.username", null);
195
196 im.initFromPreferences();
197
198 assertTrue(im.isAnonymous());
199 } finally {
200 Main.pref.addPreferenceChangeListener(im);
201 }
202 }
203
204 /**
205 * Preferences include neither an url nor a user name => we have an anonymous user
206 */
207 @Test
208 public void testInitFromPreferences2() {
209 UserIdentityManager im = UserIdentityManager.getInstance();
210
211 // reset it
212 im.setAnonymous();
213
214 // for this test we disable the listener
215 Main.pref.removePreferenceChangeListener(im);
216
217 try {
218 Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
219 Main.pref.put("osm-server.username", null);
220
221 im.initFromPreferences();
222
223 assertTrue(im.isAnonymous());
224 } finally {
225 Main.pref.addPreferenceChangeListener(im);
226 }
227 }
228
229 /**
230 * Preferences include an user name => we have a partially identified user
231 */
232 @Test
233 public void testInitFromPreferences3() {
234 UserIdentityManager im = UserIdentityManager.getInstance();
235
236 // for this test we disable the listener
237 Main.pref.removePreferenceChangeListener(im);
238
239 try {
240 // reset it
241 im.setAnonymous();
242
243 Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
244 Main.pref.put("osm-server.username", "test");
245
246 im.initFromPreferences();
247
248 assertTrue(im.isPartiallyIdentified());
249 } finally {
250 Main.pref.addPreferenceChangeListener(im);
251 }
252 }
253
254 /**
255 * Preferences include an user name which is different from the current
256 * user name and we are currently fully identifed => josm user becomes
257 * partially identified
258 */
259 @Test
260 public void testInitFromPreferences4() {
261 UserIdentityManager im = UserIdentityManager.getInstance();
262
263 // for this test we disable the listener
264 Main.pref.removePreferenceChangeListener(im);
265
266 try {
267 im.setFullyIdentified("test1", newUserInfo());
268
269 Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
270 Main.pref.put("osm-server.username", "test2");
271
272 im.initFromPreferences();
273
274 assertTrue(im.isPartiallyIdentified());
275 } finally {
276 Main.pref.addPreferenceChangeListener(im);
277 }
278 }
279
280 /**
281 * Preferences include an user name which is the same as the current
282 * user name and we are currently fully identifed => josm user remains
283 * fully identified
284 */
285 @Test
286 public void testInitFromPreferences5() {
287 UserIdentityManager im = UserIdentityManager.getInstance();
288
289 // for this test we disable the listener
290 Main.pref.removePreferenceChangeListener(im);
291
292 try {
293 im.setFullyIdentified("test1", new UserInfo());
294
295 Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
296 Main.pref.put("osm-server.username", "test1");
297
298 im.initFromPreferences();
299
300 assertTrue(im.isFullyIdentified());
301 } finally {
302 Main.pref.addPreferenceChangeListener(im);
303 }
304 }
305
306 @Test
307 public void testApiUrlChanged() {
308 UserIdentityManager im = UserIdentityManager.getInstance();
309
310 // reset it
311 im.setAnonymous();
312
313 Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
314 assertTrue(im.isAnonymous());
315
316 Main.pref.put("osm-server.url", null);
317 assertTrue(im.isAnonymous());
318
319 // reset it
320 im.setPartiallyIdentified("test");
321
322 Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
323 assertTrue(im.isPartiallyIdentified());
324 assertEquals("test", im.getUserName());
325
326 Main.pref.put("osm-server.url", null);
327 assertTrue(im.isAnonymous());
328
329 // reset it
330 im.setFullyIdentified("test", newUserInfo());
331
332 Main.pref.put("osm-server.url", "http://api.openstreetmap.org");
333 assertTrue(im.isPartiallyIdentified());
334 assertEquals("test", im.getUserName());
335
336 // reset it
337 im.setFullyIdentified("test", newUserInfo());
338
339 Main.pref.put("osm-server.url", null);
340 assertTrue(im.isAnonymous());
341 }
342
343 @Test
344 public void testUserNameChanged() {
345 UserIdentityManager im = UserIdentityManager.getInstance();
346
347 // reset it
348 im.setAnonymous();
349
350 Main.pref.put("osm-server.username", "test");
351 assertTrue(im.isPartiallyIdentified());
352 assertEquals("test", im.getUserName());
353
354 Main.pref.put("osm-server.username", null);
355 assertTrue(im.isAnonymous());
356 assertEquals(User.getAnonymous(), im.asUser());
357
358 // reset it
359 im.setPartiallyIdentified("test1");
360
361 Main.pref.put("osm-server.username", "test2");
362 assertTrue(im.isPartiallyIdentified());
363 assertEquals("test2", im.getUserName());
364 User usr = im.asUser();
365 assertEquals(0, usr.getId());
366 assertEquals("test2", usr.getName());
367
368 Main.pref.put("osm-server.username", null);
369 assertTrue(im.isAnonymous());
370
371 // reset it
372 im.setFullyIdentified("test1", newUserInfo());
373
374 Main.pref.put("osm-server.username", "test2");
375 assertTrue(im.isPartiallyIdentified());
376 assertEquals("test2", im.getUserName());
377 usr = im.asUser();
378 assertEquals(0, usr.getId());
379 assertEquals("test2", usr.getName());
380
381 // reset it
382 im.setFullyIdentified("test1", newUserInfo());
383
384 Main.pref.put("osm-server.username", null);
385 assertTrue(im.isAnonymous());
386 }
387}
Note: See TracBrowser for help on using the repository browser.