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

Last change on this file since 17275 was 17275, checked in by Don-vip, 3 years ago

see #16567 - upgrade almost all tests to JUnit 5, except those depending on WiremockRule

See https://github.com/tomakehurst/wiremock/issues/684

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