source: josm/trunk/test/unit/org/openstreetmap/josm/gui/JosmUserIdentityManagerTest.groovy @ 9942

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

fix problems seen in unit tests when launched manually from Eclipse

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