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