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

Last change on this file since 11909 was 11909, checked in by Don-vip, 2 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.