98 AccessControllerImpl ac1; |
105 AccessControllerImpl ac1; |
99 AccessControllerImpl ac2; |
106 AccessControllerImpl ac2; |
100 String appName = "AccessControllerTests"; |
107 String appName = "AccessControllerTests"; |
101 // check null values |
108 // check null values |
102 ac1 = AccessControllerFactoryImpl.getAccessController(null, null); |
109 ac1 = AccessControllerFactoryImpl.getAccessController(null, null); |
103 assertTrue(ac1 == null); |
110 assertWithTrace(ac1 == null); |
104 AccessControllerFactoryImpl.destroyAccessController(null); |
111 AccessControllerFactoryImpl.destroyAccessController(null); |
105 ac1 = AccessControllerFactoryImpl.getAccessController(null, "appName"); |
112 ac1 = AccessControllerFactoryImpl.getAccessController(null, "appName"); |
106 assertTrue(ac1 == null); |
113 assertWithTrace(ac1 == null); |
107 AccessControllerFactoryImpl.destroyAccessController(null); |
114 AccessControllerFactoryImpl.destroyAccessController(null); |
108 // check duplicates |
115 // check duplicates |
109 AccessControllerFactoryImpl.destroyAccessController(appUID1); |
116 AccessControllerFactoryImpl.destroyAccessController(appUID1); |
110 ac1 = AccessControllerFactoryImpl.getAccessController(appUID1, appName); |
117 ac1 = AccessControllerFactoryImpl.getAccessController(appUID1, appName); |
111 ac2 = AccessControllerFactoryImpl.getAccessController(appUID1, appName); |
118 ac2 = AccessControllerFactoryImpl.getAccessController(appUID1, appName); |
112 AccessControllerFactoryImpl.destroyAccessController(appUID1); |
119 AccessControllerFactoryImpl.destroyAccessController(appUID1); |
113 assertTrue(ac1 == ac2); |
120 assertWithTrace(ac1 == ac2); |
114 // check destroy |
121 // check destroy |
115 ac1 = AccessControllerFactoryImpl.getAccessController(appUID1, appName); |
122 ac1 = AccessControllerFactoryImpl.getAccessController(appUID1, appName); |
116 AccessControllerFactoryImpl.destroyAccessController(appUID1); |
123 AccessControllerFactoryImpl.destroyAccessController(appUID1); |
117 ac2 = AccessControllerFactoryImpl.getAccessController(appUID1, appName); |
124 ac2 = AccessControllerFactoryImpl.getAccessController(appUID1, appName); |
118 // call destroy two times (or calling it on a UID which does not have an instance) |
125 // call destroy two times (or calling it on a UID which does not have an instance) |
119 AccessControllerFactoryImpl.destroyAccessController(appUID1); |
126 AccessControllerFactoryImpl.destroyAccessController(appUID1); |
120 AccessControllerFactoryImpl.destroyAccessController(appUID1); |
127 AccessControllerFactoryImpl.destroyAccessController(appUID1); |
121 assertTrue(ac1 != ac2); |
128 assertWithTrace(ac1 != ac2); |
122 } |
129 } |
123 |
130 |
124 protected void testAccessController() |
131 protected void testAccessController() |
125 { |
132 { |
126 Uid appUID = Uid.createUid("myAppUID"); |
133 Uid appUID = Uid.createUid("myAppUID"); |
133 // check null values |
140 // check null values |
134 PermissionResolver.testClearCache(); |
141 PermissionResolver.testClearCache(); |
135 try |
142 try |
136 { |
143 { |
137 ac.checkPermission((Permission)null); |
144 ac.checkPermission((Permission)null); |
138 assertTrue(false); |
145 assertWithTrace(false); |
139 } |
146 } |
140 catch (AccessControlException e) |
147 catch (AccessControlException e) |
141 { |
148 { |
142 assertTrue(true); |
149 assertWithTrace(true); |
143 } |
150 } |
144 assertTrue(ac.checkPermission((String)null) == 0); |
151 assertWithTrace(ac.checkPermission((String)null) == 0); |
145 // check permission which is not granted |
152 // check permission which is not granted |
146 PermissionResolver.testClearCache(); |
153 PermissionResolver.testClearCache(); |
147 try |
154 try |
148 { |
155 { |
149 ac.checkPermission(new CommProtocolPermission("comm://")); |
156 ac.checkPermission(new CommProtocolPermission("comm://")); |
150 assertTrue(false); |
157 assertWithTrace(false); |
151 } |
158 } |
152 catch (AccessControlException e) |
159 catch (AccessControlException e) |
153 { |
160 { |
154 assertTrue(true); |
161 assertWithTrace(true); |
155 } |
162 } |
156 try |
163 try |
157 { |
164 { |
158 ac.checkPermission(new CommProtocolPermission("comm://")); |
165 ac.checkPermission(new CommProtocolPermission("comm://")); |
159 assertTrue(false); |
166 assertWithTrace(false); |
160 } |
167 } |
161 catch (AccessControlException e) |
168 catch (AccessControlException e) |
162 { |
169 { |
163 assertTrue(true); |
170 assertWithTrace(true); |
164 } |
171 } |
165 // check allowed permission which is granted |
172 // check allowed permission which is granted |
166 PermissionResolver.testClearCache(); |
173 PermissionResolver.testClearCache(); |
167 grantedPermissions = new Vector(); |
174 grantedPermissions = new Vector(); |
168 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
175 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
174 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
181 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
175 ac.checkPermission(new CommProtocolPermission("comm://")); |
182 ac.checkPermission(new CommProtocolPermission("comm://")); |
176 try |
183 try |
177 { |
184 { |
178 ac.checkPermission(new FileProtocolPermission("file://myFile.txt", "read")); |
185 ac.checkPermission(new FileProtocolPermission("file://myFile.txt", "read")); |
179 assertTrue(false); |
186 assertWithTrace(false); |
180 } |
187 } |
181 catch (AccessControlException e) |
188 catch (AccessControlException e) |
182 { |
189 { |
183 assertTrue(true); |
190 assertWithTrace(true); |
184 } |
191 } |
185 storage.removeGrantedPermissions(appUID); |
192 storage.removeGrantedPermissions(appUID); |
186 // check permission not allowed |
193 // check permission not allowed |
187 PermissionResolver.testClearCache(); |
194 PermissionResolver.testClearCache(); |
188 grantedPermissions = new Vector(); |
195 grantedPermissions = new Vector(); |
200 storage.removeGrantedPermissions(appUID); |
207 storage.removeGrantedPermissions(appUID); |
201 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
208 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
202 try |
209 try |
203 { |
210 { |
204 ac.checkPermission(new SocketProtocolPermission("socket://:100")); |
211 ac.checkPermission(new SocketProtocolPermission("socket://:100")); |
205 assertTrue(false); |
212 assertWithTrace(false); |
206 } |
213 } |
207 catch (AccessControlException e) |
214 catch (AccessControlException e) |
208 { |
215 { |
209 assertTrue(true); |
216 assertWithTrace(true); |
210 } |
217 } |
211 storage.removeGrantedPermissions(appUID); |
218 storage.removeGrantedPermissions(appUID); |
212 // check user permission with NO as interaction mode -> security exception thrown |
219 // check user permission with NO as interaction mode -> security exception thrown |
213 PermissionResolver.testClearCache(); |
220 PermissionResolver.testClearCache(); |
214 grantedPermissions = new Vector(); |
221 grantedPermissions = new Vector(); |
226 storage.removeGrantedPermissions(appUID); |
233 storage.removeGrantedPermissions(appUID); |
227 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
234 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
228 try |
235 try |
229 { |
236 { |
230 ac.checkPermission(new HttpProtocolPermissionImpl("http://")); |
237 ac.checkPermission(new HttpProtocolPermissionImpl("http://")); |
231 assertTrue(false); |
238 assertWithTrace(false); |
232 } |
239 } |
233 catch (AccessControlException e) |
240 catch (AccessControlException e) |
234 { |
241 { |
235 assertTrue(true); |
242 assertWithTrace(true); |
236 } |
243 } |
237 try |
244 try |
238 { |
245 { |
239 ac.checkPermission(new HttpProtocolPermission("http://")); |
246 ac.checkPermission(new HttpProtocolPermission("http://")); |
240 assertTrue(false); |
247 assertWithTrace(false); |
241 } |
248 } |
242 catch (AccessControlException e) |
249 catch (AccessControlException e) |
243 { |
250 { |
244 assertTrue(true); |
251 assertWithTrace(true); |
245 } |
252 } |
246 storage.removeGrantedPermissions(appUID); |
253 storage.removeGrantedPermissions(appUID); |
247 // check the named permissions: unknown permission |
254 // check the named permissions: unknown permission |
248 assertTrue(ac.checkPermission("unknownPermission") == 0); |
255 assertWithTrace(ac.checkPermission("unknownPermission") == 0); |
249 // check the named permissions: allowed permission |
256 // check the named permissions: allowed permission |
250 PermissionResolver.testClearCache(); |
257 PermissionResolver.testClearCache(); |
251 grantedPermissions = new Vector(); |
258 grantedPermissions = new Vector(); |
252 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
259 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
253 "com.nokia.mj.impl.gcf.protocol.socket.SocketPermissionImpl", |
260 "com.nokia.mj.impl.gcf.protocol.socket.SocketPermissionImpl", |
254 "socket://", |
261 "socket://*", |
255 null, |
262 null, |
256 null)); |
263 null)); |
257 storage.removeGrantedPermissions(appUID); |
264 storage.removeGrantedPermissions(appUID); |
258 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
265 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
259 assertTrue(ac.checkPermission("javax.microedition.io.Connector.socket") == 1); |
266 assertWithTrace(ac.checkPermission("javax.microedition.io.Connector.socket") == 1); |
260 // check the named permissions: user permission with NO interaction mode |
267 // check the named permissions: user permission with NO interaction mode |
261 PermissionResolver.testClearCache(); |
268 PermissionResolver.testClearCache(); |
262 grantedPermissions = new Vector(); |
269 grantedPermissions = new Vector(); |
263 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
270 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
264 "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", |
271 "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", |
271 UserSecuritySettings.BLANKET_INTERACTION_MODE, |
278 UserSecuritySettings.BLANKET_INTERACTION_MODE, |
272 UserSecuritySettings.NO_INTERACTION_MODE |
279 UserSecuritySettings.NO_INTERACTION_MODE |
273 }))); |
280 }))); |
274 storage.removeGrantedPermissions(appUID); |
281 storage.removeGrantedPermissions(appUID); |
275 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
282 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
276 assertTrue(ac.checkPermission("javax.microedition.io.Connector.http") == 0); |
283 assertWithTrace(ac.checkPermission("javax.microedition.io.Connector.http") == 0); |
277 // check the named permissions: user permission with ONESHOT interaction mode |
284 // check the named permissions: user permission with ONESHOT interaction mode |
278 PermissionResolver.testClearCache(); |
285 PermissionResolver.testClearCache(); |
279 grantedPermissions = new Vector(); |
286 grantedPermissions = new Vector(); |
280 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
287 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
281 "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", |
288 "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", |
288 UserSecuritySettings.BLANKET_INTERACTION_MODE, |
295 UserSecuritySettings.BLANKET_INTERACTION_MODE, |
289 UserSecuritySettings.NO_INTERACTION_MODE |
296 UserSecuritySettings.NO_INTERACTION_MODE |
290 }))); |
297 }))); |
291 storage.removeGrantedPermissions(appUID); |
298 storage.removeGrantedPermissions(appUID); |
292 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
299 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
293 assertTrue(ac.checkPermission("javax.microedition.io.Connector.http") == -1); |
300 assertWithTrace(ac.checkPermission("javax.microedition.io.Connector.http") == -1); |
294 // check the named permissions: user permission with BLANKET interaction mode (blanket prompt not shown yet) |
301 // check the named permissions: user permission with BLANKET interaction mode (blanket prompt not shown yet) |
295 PermissionResolver.testClearCache(); |
302 PermissionResolver.testClearCache(); |
296 grantedPermissions = new Vector(); |
303 grantedPermissions = new Vector(); |
297 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
304 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
298 "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", |
305 "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", |
305 UserSecuritySettings.BLANKET_INTERACTION_MODE, |
312 UserSecuritySettings.BLANKET_INTERACTION_MODE, |
306 UserSecuritySettings.NO_INTERACTION_MODE |
313 UserSecuritySettings.NO_INTERACTION_MODE |
307 }))); |
314 }))); |
308 storage.removeGrantedPermissions(appUID); |
315 storage.removeGrantedPermissions(appUID); |
309 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
316 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
310 assertTrue(ac.checkPermission("javax.microedition.io.Connector.http") == -1); |
317 assertWithTrace(ac.checkPermission("javax.microedition.io.Connector.http") == -1); |
311 // check the named permissions: user permission with BLANKET interaction mode (blanket prompt shown already) |
318 // check the named permissions: user permission with BLANKET interaction mode (blanket prompt shown already) |
312 PermissionResolver.testClearCache(); |
319 PermissionResolver.testClearCache(); |
313 grantedPermissions = new Vector(); |
320 grantedPermissions = new Vector(); |
314 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
321 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
315 "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", |
322 "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", |
323 UserSecuritySettings.NO_INTERACTION_MODE |
330 UserSecuritySettings.NO_INTERACTION_MODE |
324 }))); |
331 }))); |
325 storage.removeGrantedPermissions(appUID); |
332 storage.removeGrantedPermissions(appUID); |
326 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
333 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
327 storage.writeUserSecuritySettingsPromptFlag(appUID, "Net Access", true); |
334 storage.writeUserSecuritySettingsPromptFlag(appUID, "Net Access", true); |
328 assertTrue(ac.checkPermission("javax.microedition.io.Connector.http") == 1); |
335 assertWithTrace(ac.checkPermission("javax.microedition.io.Connector.http") == 1); |
329 // check the named permissions: user permission with SESSION interaction mode (session prompt not shown already) |
336 // check the named permissions: user permission with SESSION interaction mode (session prompt not shown already) |
330 PermissionResolver.testClearCache(); |
337 PermissionResolver.testClearCache(); |
331 grantedPermissions = new Vector(); |
338 grantedPermissions = new Vector(); |
332 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
339 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
333 "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", |
340 "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", |
341 UserSecuritySettings.NO_INTERACTION_MODE |
348 UserSecuritySettings.NO_INTERACTION_MODE |
342 }))); |
349 }))); |
343 storage.removeGrantedPermissions(appUID); |
350 storage.removeGrantedPermissions(appUID); |
344 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
351 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
345 storage.writeUserSecuritySettingsPromptFlag(appUID, "Net Access", true); |
352 storage.writeUserSecuritySettingsPromptFlag(appUID, "Net Access", true); |
346 assertTrue(ac.checkPermission("javax.microedition.io.Connector.http") == -1); |
353 assertWithTrace(ac.checkPermission("javax.microedition.io.Connector.http") == -1); |
347 // check the named permissions: denied permission |
354 // check the named permissions: denied permission |
348 PermissionResolver.testClearCache(); |
355 PermissionResolver.testClearCache(); |
349 grantedPermissions = new Vector(); |
356 grantedPermissions = new Vector(); |
350 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
357 grantedPermissions.addElement(new PolicyBasedPermissionImpl( |
351 "com.nokia.mj.impl.gcf.protocol.datagram.DatagramPermissionImpl", |
358 "com.nokia.mj.impl.gcf.protocol.datagram.DatagramPermissionImpl", |
352 "datagram://", |
359 "datagram://", |
353 null, |
360 null, |
354 null)); |
361 null)); |
355 storage.removeGrantedPermissions(appUID); |
362 storage.removeGrantedPermissions(appUID); |
356 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
363 storage.writeGrantedPermissions(appUID, null, grantedPermissions); |
357 assertTrue(ac.checkPermission("javax.wireless.messaging.mms.send") == 0); |
364 assertWithTrace(ac.checkPermission("javax.wireless.messaging.mms.send") == 0); |
358 // cleanup |
365 // cleanup |
359 storage.removeGrantedPermissions(appUID); |
366 storage.removeGrantedPermissions(appUID); |
360 AccessControllerFactoryImpl.destroyAccessController(appUID); |
367 AccessControllerFactoryImpl.destroyAccessController(appUID); |
361 } |
368 } |
362 } |
369 } |