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

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

spotbugs - fix various issues found with Eclipse plugin

  • Property svn:eol-style set to native
File size: 11.9 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.data.osm.User;
14import org.openstreetmap.josm.data.osm.UserInfo;
15import org.openstreetmap.josm.spi.preferences.Config;
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 @SuppressFBWarnings(value = "NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS")
105 public void testSetPartiallyIdentifiedNull() {
106 UserIdentityManager.getInstance().setPartiallyIdentified(null);
107 }
108
109 /**
110 * Unit test of {@link UserIdentityManager#setPartiallyIdentified} - empty case.
111 */
112 @Test(expected = IllegalArgumentException.class)
113 public void testSetPartiallyIdentifiedEmpty() {
114 UserIdentityManager.getInstance().setPartiallyIdentified("");
115 }
116
117 /**
118 * Unit test of {@link UserIdentityManager#setPartiallyIdentified} - blank case.
119 */
120 @Test(expected = IllegalArgumentException.class)
121 public void testSetPartiallyIdentifiedBlank() {
122 UserIdentityManager.getInstance().setPartiallyIdentified(" \t ");
123 }
124
125 /**
126 * Unit test of {@link UserIdentityManager#setFullyIdentified} - nominal case.
127 */
128 @Test
129 public void testSetFullyIdentified() {
130 UserIdentityManager im = UserIdentityManager.getInstance();
131
132 UserInfo userInfo = newUserInfo();
133
134 im.setFullyIdentified("test", userInfo);
135
136 assertFalse(im.isAnonymous());
137 assertFalse(im.isPartiallyIdentified());
138 assertTrue(im.isFullyIdentified());
139
140 assertEquals(1, im.getUserId());
141 assertEquals("test", im.getUserName());
142 assertEquals(userInfo, im.getUserInfo());
143 User usr = im.asUser();
144 assertEquals(1, usr.getId());
145 assertEquals("test", usr.getName());
146 }
147
148 /**
149 * Unit test of {@link UserIdentityManager#setFullyIdentified} - null name case.
150 */
151 @Test(expected = IllegalArgumentException.class)
152 @SuppressFBWarnings(value = "NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS")
153 public void testSetFullyIdentifiedNullName() {
154 UserIdentityManager.getInstance().setFullyIdentified(null, newUserInfo());
155 }
156
157 /**
158 * Unit test of {@link UserIdentityManager#setFullyIdentified} - empty name case.
159 */
160 @Test(expected = IllegalArgumentException.class)
161 public void testSetFullyIdentifiedEmptyName() {
162 UserIdentityManager.getInstance().setFullyIdentified("", newUserInfo());
163 }
164
165 /**
166 * Unit test of {@link UserIdentityManager#setFullyIdentified} - blank name case.
167 */
168 @Test(expected = IllegalArgumentException.class)
169 public void testSetFullyIdentifiedBlankName() {
170 UserIdentityManager.getInstance().setFullyIdentified(" \t ", newUserInfo());
171 }
172
173 /**
174 * Unit test of {@link UserIdentityManager#setFullyIdentified} - null info case.
175 */
176 @Test(expected = IllegalArgumentException.class)
177 public void testSetFullyIdentifiedNullInfo() {
178 UserIdentityManager.getInstance().setFullyIdentified("test", null);
179 }
180
181 /**
182 * Preferences include neither an url nor a user name => we have an anonymous user
183 */
184 @Test
185 public void testInitFromPreferences1() {
186 UserIdentityManager im = UserIdentityManager.getInstance();
187
188 // reset it
189 im.setAnonymous();
190
191 // for this test we disable the listener
192 Config.getPref().removePreferenceChangeListener(im);
193
194 try {
195 Config.getPref().put("osm-server.url", null);
196 Config.getPref().put("osm-server.username", null);
197
198 im.initFromPreferences();
199
200 assertTrue(im.isAnonymous());
201 } finally {
202 Config.getPref().addPreferenceChangeListener(im);
203 }
204 }
205
206 /**
207 * Preferences include neither an url nor a user name => we have an anonymous user
208 */
209 @Test
210 public void testInitFromPreferences2() {
211 UserIdentityManager im = UserIdentityManager.getInstance();
212
213 // reset it
214 im.setAnonymous();
215
216 // for this test we disable the listener
217 Config.getPref().removePreferenceChangeListener(im);
218
219 try {
220 Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
221 Config.getPref().put("osm-server.username", null);
222
223 im.initFromPreferences();
224
225 assertTrue(im.isAnonymous());
226 } finally {
227 Config.getPref().addPreferenceChangeListener(im);
228 }
229 }
230
231 /**
232 * Preferences include an user name => we have a partially identified user
233 */
234 @Test
235 public void testInitFromPreferences3() {
236 UserIdentityManager im = UserIdentityManager.getInstance();
237
238 // for this test we disable the listener
239 Config.getPref().removePreferenceChangeListener(im);
240
241 try {
242 // reset it
243 im.setAnonymous();
244
245 Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
246 Config.getPref().put("osm-server.username", "test");
247
248 im.initFromPreferences();
249
250 assertTrue(im.isPartiallyIdentified());
251 } finally {
252 Config.getPref().addPreferenceChangeListener(im);
253 }
254 }
255
256 /**
257 * Preferences include an user name which is different from the current
258 * user name and we are currently fully identifed => josm user becomes
259 * partially identified
260 */
261 @Test
262 public void testInitFromPreferences4() {
263 UserIdentityManager im = UserIdentityManager.getInstance();
264
265 // for this test we disable the listener
266 Config.getPref().removePreferenceChangeListener(im);
267
268 try {
269 im.setFullyIdentified("test1", newUserInfo());
270
271 Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
272 Config.getPref().put("osm-server.username", "test2");
273
274 im.initFromPreferences();
275
276 assertTrue(im.isPartiallyIdentified());
277 } finally {
278 Config.getPref().addPreferenceChangeListener(im);
279 }
280 }
281
282 /**
283 * Preferences include an user name which is the same as the current
284 * user name and we are currently fully identifed => josm user remains
285 * fully identified
286 */
287 @Test
288 public void testInitFromPreferences5() {
289 UserIdentityManager im = UserIdentityManager.getInstance();
290
291 // for this test we disable the listener
292 Config.getPref().removePreferenceChangeListener(im);
293
294 try {
295 im.setFullyIdentified("test1", new UserInfo());
296
297 Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
298 Config.getPref().put("osm-server.username", "test1");
299
300 im.initFromPreferences();
301
302 assertTrue(im.isFullyIdentified());
303 } finally {
304 Config.getPref().addPreferenceChangeListener(im);
305 }
306 }
307
308 @Test
309 public void testApiUrlChanged() {
310 UserIdentityManager im = UserIdentityManager.getInstance();
311
312 // reset it
313 im.setAnonymous();
314
315 Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
316 assertTrue(im.isAnonymous());
317
318 Config.getPref().put("osm-server.url", null);
319 assertTrue(im.isAnonymous());
320
321 // reset it
322 im.setPartiallyIdentified("test");
323
324 Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
325 assertTrue(im.isPartiallyIdentified());
326 assertEquals("test", im.getUserName());
327
328 Config.getPref().put("osm-server.url", null);
329 assertTrue(im.isAnonymous());
330
331 // reset it
332 im.setFullyIdentified("test", newUserInfo());
333
334 Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
335 assertTrue(im.isPartiallyIdentified());
336 assertEquals("test", im.getUserName());
337
338 // reset it
339 im.setFullyIdentified("test", newUserInfo());
340
341 Config.getPref().put("osm-server.url", null);
342 assertTrue(im.isAnonymous());
343 }
344
345 @Test
346 public void testUserNameChanged() {
347 UserIdentityManager im = UserIdentityManager.getInstance();
348
349 // reset it
350 im.setAnonymous();
351
352 Config.getPref().put("osm-server.username", "test");
353 assertTrue(im.isPartiallyIdentified());
354 assertEquals("test", im.getUserName());
355
356 Config.getPref().put("osm-server.username", null);
357 assertTrue(im.isAnonymous());
358 assertEquals(User.getAnonymous(), im.asUser());
359
360 // reset it
361 im.setPartiallyIdentified("test1");
362
363 Config.getPref().put("osm-server.username", "test2");
364 assertTrue(im.isPartiallyIdentified());
365 assertEquals("test2", im.getUserName());
366 User usr = im.asUser();
367 assertEquals(0, usr.getId());
368 assertEquals("test2", usr.getName());
369
370 Config.getPref().put("osm-server.username", null);
371 assertTrue(im.isAnonymous());
372
373 // reset it
374 im.setFullyIdentified("test1", newUserInfo());
375
376 Config.getPref().put("osm-server.username", "test2");
377 assertTrue(im.isPartiallyIdentified());
378 assertEquals("test2", im.getUserName());
379 usr = im.asUser();
380 assertEquals(0, usr.getId());
381 assertEquals("test2", usr.getName());
382
383 // reset it
384 im.setFullyIdentified("test1", newUserInfo());
385
386 Config.getPref().put("osm-server.username", null);
387 assertTrue(im.isAnonymous());
388 }
389}
Note: See TracBrowser for help on using the repository browser.