test_permmanager_matches.js (4216B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 var attrs; 5 6 function matches_always(perm, principals) { 7 principals.forEach(principal => { 8 Assert.ok( 9 perm.matches(principal, true), 10 "perm: " + perm.principal.origin + ", princ: " + principal.origin 11 ); 12 Assert.ok( 13 perm.matches(principal, false), 14 "perm: " + perm.principal.origin + ", princ: " + principal.origin 15 ); 16 }); 17 } 18 19 function matches_weak(perm, principals) { 20 principals.forEach(principal => { 21 Assert.ok( 22 !perm.matches(principal, true), 23 "perm: " + perm.principal.origin + ", princ: " + principal.origin 24 ); 25 Assert.ok( 26 perm.matches(principal, false), 27 "perm: " + perm.principal.origin + ", princ: " + principal.origin 28 ); 29 }); 30 } 31 32 function matches_never(perm, principals) { 33 principals.forEach(principal => { 34 Assert.ok( 35 !perm.matches(principal, true), 36 "perm: " + perm.principal.origin + ", princ: " + principal.origin 37 ); 38 Assert.ok( 39 !perm.matches(principal, false), 40 "perm: " + perm.principal.origin + ", princ: " + principal.origin 41 ); 42 }); 43 } 44 45 function run_test() { 46 // initialize the permission manager service 47 let pm = Services.perms; 48 49 let secMan = Services.scriptSecurityManager; 50 51 // Add some permissions 52 let uri0 = NetUtil.newURI("http://google.com/search?q=foo#hashtag"); 53 let uri1 = NetUtil.newURI("http://hangouts.google.com/subdir"); 54 let uri2 = NetUtil.newURI("http://google.org/"); 55 let uri3 = NetUtil.newURI("https://google.com/some/random/subdirectory"); 56 let uri4 = NetUtil.newURI("https://hangouts.google.com/#!/hangout"); 57 let uri5 = NetUtil.newURI("http://google.com:8096/"); 58 59 let uri0_n = secMan.createContentPrincipal(uri0, {}); 60 let uri1_n = secMan.createContentPrincipal(uri1, {}); 61 let uri2_n = secMan.createContentPrincipal(uri2, {}); 62 let uri3_n = secMan.createContentPrincipal(uri3, {}); 63 let uri4_n = secMan.createContentPrincipal(uri4, {}); 64 let uri5_n = secMan.createContentPrincipal(uri5, {}); 65 66 attrs = { userContextId: 1 }; 67 let uri0_1 = secMan.createContentPrincipal(uri0, attrs); 68 let uri1_1 = secMan.createContentPrincipal(uri1, attrs); 69 let uri2_1 = secMan.createContentPrincipal(uri2, attrs); 70 let uri3_1 = secMan.createContentPrincipal(uri3, attrs); 71 let uri4_1 = secMan.createContentPrincipal(uri4, attrs); 72 let uri5_1 = secMan.createContentPrincipal(uri5, attrs); 73 74 attrs = { firstPartyDomain: "cnn.com" }; 75 let uri0_cnn = secMan.createContentPrincipal(uri0, attrs); 76 let uri1_cnn = secMan.createContentPrincipal(uri1, attrs); 77 let uri2_cnn = secMan.createContentPrincipal(uri2, attrs); 78 let uri3_cnn = secMan.createContentPrincipal(uri3, attrs); 79 let uri4_cnn = secMan.createContentPrincipal(uri4, attrs); 80 let uri5_cnn = secMan.createContentPrincipal(uri5, attrs); 81 82 pm.addFromPrincipal(uri0_n, "test/matches", pm.ALLOW_ACTION); 83 let perm_n = pm.getPermissionObject(uri0_n, "test/matches", true); 84 pm.addFromPrincipal(uri0_1, "test/matches", pm.ALLOW_ACTION); 85 let perm_1 = pm.getPermissionObject(uri0_n, "test/matches", true); 86 pm.addFromPrincipal(uri0_cnn, "test/matches", pm.ALLOW_ACTION); 87 let perm_cnn = pm.getPermissionObject(uri0_n, "test/matches", true); 88 89 matches_always(perm_n, [uri0_n, uri0_1]); 90 matches_weak(perm_n, [uri1_n, uri1_1]); 91 matches_never(perm_n, [ 92 uri2_n, 93 uri3_n, 94 uri4_n, 95 uri5_n, 96 uri2_1, 97 uri3_1, 98 uri4_1, 99 uri5_1, 100 uri0_cnn, 101 uri1_cnn, 102 uri2_cnn, 103 uri3_cnn, 104 uri4_cnn, 105 uri5_cnn, 106 ]); 107 108 matches_always(perm_1, [uri0_n, uri0_1]); 109 matches_weak(perm_1, [uri1_n, uri1_1]); 110 matches_never(perm_1, [ 111 uri2_n, 112 uri3_n, 113 uri4_n, 114 uri5_n, 115 uri2_1, 116 uri3_1, 117 uri4_1, 118 uri5_1, 119 uri0_cnn, 120 uri1_cnn, 121 uri2_cnn, 122 uri3_cnn, 123 uri4_cnn, 124 uri5_cnn, 125 ]); 126 127 matches_always(perm_cnn, [uri0_n, uri0_1]); 128 matches_weak(perm_cnn, [uri1_n, uri1_1]); 129 matches_never(perm_cnn, [ 130 uri2_n, 131 uri3_n, 132 uri4_n, 133 uri5_n, 134 uri2_1, 135 uri3_1, 136 uri4_1, 137 uri5_1, 138 uri0_cnn, 139 uri1_cnn, 140 uri2_cnn, 141 uri3_cnn, 142 uri4_cnn, 143 uri5_cnn, 144 ]); 145 146 // Clean up! 147 pm.removeAll(); 148 }