1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/extensions/cookie/test/unit/test_permmanager_expiration.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,82 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +// Test that permissions with specific expiry times behave as expected. 1.8 + 1.9 +let test_generator = do_run_test(); 1.10 + 1.11 +function run_test() { 1.12 + do_test_pending(); 1.13 + test_generator.next(); 1.14 +} 1.15 + 1.16 +function continue_test() 1.17 +{ 1.18 + do_run_generator(test_generator); 1.19 +} 1.20 + 1.21 +function do_run_test() { 1.22 + // Set up a profile. 1.23 + let profile = do_get_profile(); 1.24 + 1.25 + let pm = Services.perms; 1.26 + let permURI = NetUtil.newURI("http://example.com"); 1.27 + let principal = Services.scriptSecurityManager.getNoAppCodebasePrincipal(permURI); 1.28 + 1.29 + let now = Number(Date.now()); 1.30 + 1.31 + // add a permission with *now* expiration 1.32 + pm.addFromPrincipal(principal, "test/expiration-perm-exp", 1, pm.EXPIRE_TIME, now); 1.33 + pm.addFromPrincipal(principal, "test/expiration-session-exp", 1, pm.EXPIRE_SESSION, now); 1.34 + 1.35 + // add a permission with future expiration (100 milliseconds) 1.36 + pm.addFromPrincipal(principal, "test/expiration-perm-exp2", 1, pm.EXPIRE_TIME, now + 100); 1.37 + pm.addFromPrincipal(principal, "test/expiration-session-exp2", 1, pm.EXPIRE_SESSION, now + 100); 1.38 + 1.39 + // add a permission with future expiration (1000 seconds) 1.40 + pm.addFromPrincipal(principal, "test/expiration-perm-exp3", 1, pm.EXPIRE_TIME, now + 1e6); 1.41 + pm.addFromPrincipal(principal, "test/expiration-session-exp3", 1, pm.EXPIRE_SESSION, now + 1e6); 1.42 + 1.43 + // add a permission without expiration 1.44 + pm.addFromPrincipal(principal, "test/expiration-perm-nexp", 1, pm.EXPIRE_NEVER, 0); 1.45 + 1.46 + // add a permission for renewal 1.47 + pm.addFromPrincipal(principal, "test/expiration-perm-renewable", 1, pm.EXPIRE_TIME, now + 100); 1.48 + pm.addFromPrincipal(principal, "test/expiration-session-renewable", 1, pm.EXPIRE_SESSION, now + 100); 1.49 + 1.50 + // And immediately renew them with longer timeouts 1.51 + pm.updateExpireTime(principal, "test/expiration-perm-renewable", true, now + 100, now + 1e6); 1.52 + pm.updateExpireTime(principal, "test/expiration-session-renewable", true, now + 1e6, now + 100); 1.53 + 1.54 + // check that the second two haven't expired yet 1.55 + do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-exp3")); 1.56 + do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-session-exp3")); 1.57 + do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-nexp")); 1.58 + do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-renewable")); 1.59 + do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-session-renewable")); 1.60 + 1.61 + // ... and the first one has 1.62 + do_timeout(10, continue_test); 1.63 + yield; 1.64 + do_check_eq(0, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-exp")); 1.65 + do_check_eq(0, pm.testPermissionFromPrincipal(principal, "test/expiration-session-exp")); 1.66 + 1.67 + // ... and that the short-term one will 1.68 + do_timeout(200, continue_test); 1.69 + yield; 1.70 + do_check_eq(0, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-exp2")); 1.71 + do_check_eq(0, pm.testPermissionFromPrincipal(principal, "test/expiration-session-exp2")); 1.72 + 1.73 + // Check that .getPermission returns a matching result 1.74 + do_check_null(pm.getPermissionObject(principal, "test/expiration-perm-exp", false)); 1.75 + do_check_null(pm.getPermissionObject(principal, "test/expiration-session-exp", false)); 1.76 + do_check_null(pm.getPermissionObject(principal, "test/expiration-perm-exp2", false)); 1.77 + do_check_null(pm.getPermissionObject(principal, "test/expiration-session-exp2", false)); 1.78 + 1.79 + // Check that the renewable permissions actually got renewed 1.80 + do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-perm-renewable")); 1.81 + do_check_eq(1, pm.testPermissionFromPrincipal(principal, "test/expiration-session-renewable")); 1.82 + 1.83 + do_finish_generator_test(test_generator); 1.84 +} 1.85 +