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

Last change on this file since 9527 was 9527, checked in by simon04, 7 years ago

fix #10306 - Changeset manager does not know username of current uploaded and open changeset

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