source: josm/trunk/test/unit/org/openstreetmap/josm/gui/JosmUserIdentityManagerTest.java@ 11974

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

switch a unit test from Groovy to Java + fix a bug found after migration + add unit test

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