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

Last change on this file since 12849 was 12849, checked in by bastiK, 13 months ago

see #15229 - use Config in tests

  • Property svn:eol-style set to native
File size: 11.7 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    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        Config.getPref().removePreferenceChangeListener(im);
191
192        try {
193            Config.getPref().put("osm-server.url", null);
194            Config.getPref().put("osm-server.username", null);
195
196            im.initFromPreferences();
197
198            assertTrue(im.isAnonymous());
199        } finally {
200            Config.getPref().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        Config.getPref().removePreferenceChangeListener(im);
216
217        try {
218            Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
219            Config.getPref().put("osm-server.username", null);
220
221            im.initFromPreferences();
222
223            assertTrue(im.isAnonymous());
224        } finally {
225            Config.getPref().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        Config.getPref().removePreferenceChangeListener(im);
238
239        try {
240            // reset it
241            im.setAnonymous();
242
243            Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
244            Config.getPref().put("osm-server.username", "test");
245
246            im.initFromPreferences();
247
248            assertTrue(im.isPartiallyIdentified());
249        } finally {
250            Config.getPref().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        Config.getPref().removePreferenceChangeListener(im);
265
266        try {
267            im.setFullyIdentified("test1", newUserInfo());
268
269            Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
270            Config.getPref().put("osm-server.username", "test2");
271
272            im.initFromPreferences();
273
274            assertTrue(im.isPartiallyIdentified());
275        } finally {
276            Config.getPref().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        Config.getPref().removePreferenceChangeListener(im);
291
292        try {
293            im.setFullyIdentified("test1", new UserInfo());
294
295            Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
296            Config.getPref().put("osm-server.username", "test1");
297
298            im.initFromPreferences();
299
300            assertTrue(im.isFullyIdentified());
301        } finally {
302            Config.getPref().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        Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
314        assertTrue(im.isAnonymous());
315
316        Config.getPref().put("osm-server.url", null);
317        assertTrue(im.isAnonymous());
318
319        // reset it
320        im.setPartiallyIdentified("test");
321
322        Config.getPref().put("osm-server.url", "http://api.openstreetmap.org");
323        assertTrue(im.isPartiallyIdentified());
324        assertEquals("test", im.getUserName());
325
326        Config.getPref().put("osm-server.url", null);
327        assertTrue(im.isAnonymous());
328
329        // reset it
330        im.setFullyIdentified("test", newUserInfo());
331
332        Config.getPref().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        Config.getPref().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        Config.getPref().put("osm-server.username", "test");
351        assertTrue(im.isPartiallyIdentified());
352        assertEquals("test", im.getUserName());
353
354        Config.getPref().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        Config.getPref().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        Config.getPref().put("osm-server.username", null);
369        assertTrue(im.isAnonymous());
370
371        // reset it
372        im.setFullyIdentified("test1", newUserInfo());
373
374        Config.getPref().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        Config.getPref().put("osm-server.username", null);
385        assertTrue(im.isAnonymous());
386    }
387}
Note: See TracBrowser for help on using the repository browser.