test_site_origin.js (7241B)
1 const scriptSecMan = Services.scriptSecurityManager; 2 3 // SystemPrincipal checks 4 let systemPrincipal = scriptSecMan.getSystemPrincipal(); 5 Assert.ok(systemPrincipal.isSystemPrincipal); 6 Assert.equal(systemPrincipal.origin, "[System Principal]"); 7 Assert.equal(systemPrincipal.originNoSuffix, "[System Principal]"); 8 Assert.equal(systemPrincipal.siteOrigin, "[System Principal]"); 9 Assert.equal(systemPrincipal.siteOriginNoSuffix, "[System Principal]"); 10 11 // ContentPrincipal checks 12 let uri1 = Services.io.newURI("http://example.com"); 13 let prinicpal1 = scriptSecMan.createContentPrincipal(uri1, { 14 userContextId: 11, 15 }); 16 Assert.ok(prinicpal1.isContentPrincipal); 17 Assert.equal(prinicpal1.origin, "http://example.com^userContextId=11"); 18 Assert.equal(prinicpal1.originNoSuffix, "http://example.com"); 19 Assert.equal(prinicpal1.siteOrigin, "http://example.com^userContextId=11"); 20 Assert.equal(prinicpal1.siteOriginNoSuffix, "http://example.com"); 21 22 let uri2 = Services.io.newURI("http://test1.example.com"); 23 let prinicpal2 = scriptSecMan.createContentPrincipal(uri2, { 24 userContextId: 22, 25 }); 26 Assert.ok(prinicpal2.isContentPrincipal); 27 Assert.equal(prinicpal2.origin, "http://test1.example.com^userContextId=22"); 28 Assert.equal(prinicpal2.originNoSuffix, "http://test1.example.com"); 29 Assert.equal(prinicpal2.siteOrigin, "http://example.com^userContextId=22"); 30 Assert.equal(prinicpal2.siteOriginNoSuffix, "http://example.com"); 31 32 let uri3 = Services.io.newURI("https://test1.test2.example.com:5555"); 33 let prinicpal3 = scriptSecMan.createContentPrincipal(uri3, { 34 userContextId: 5555, 35 }); 36 Assert.ok(prinicpal3.isContentPrincipal); 37 Assert.equal( 38 prinicpal3.origin, 39 "https://test1.test2.example.com:5555^userContextId=5555" 40 ); 41 Assert.equal(prinicpal3.originNoSuffix, "https://test1.test2.example.com:5555"); 42 Assert.equal(prinicpal3.siteOrigin, "https://example.com^userContextId=5555"); 43 Assert.equal(prinicpal3.siteOriginNoSuffix, "https://example.com"); 44 45 let uri4 = Services.io.newURI("https://.example.com:6666"); 46 let prinicpal4 = scriptSecMan.createContentPrincipal(uri4, { 47 userContextId: 6666, 48 }); 49 Assert.ok(prinicpal4.isContentPrincipal); 50 Assert.equal(prinicpal4.origin, "https://.example.com:6666^userContextId=6666"); 51 Assert.equal(prinicpal4.originNoSuffix, "https://.example.com:6666"); 52 Assert.equal(prinicpal4.siteOrigin, "https://.example.com^userContextId=6666"); 53 Assert.equal(prinicpal4.siteOriginNoSuffix, "https://.example.com"); 54 55 let aboutURI = Services.io.newURI("about:preferences"); 56 let aboutPrincipal = scriptSecMan.createContentPrincipal(aboutURI, { 57 userContextId: 66, 58 }); 59 Assert.ok(aboutPrincipal.isContentPrincipal); 60 Assert.equal(aboutPrincipal.origin, "about:preferences^userContextId=66"); 61 Assert.equal(aboutPrincipal.originNoSuffix, "about:preferences"); 62 Assert.equal(aboutPrincipal.siteOrigin, "about:preferences^userContextId=66"); 63 Assert.equal(aboutPrincipal.siteOriginNoSuffix, "about:preferences"); 64 65 let viewSourceURI = Services.io.newURI( 66 "view-source:https://test1.test2.example.com" 67 ); 68 let viewSourcePrincipal = scriptSecMan.createContentPrincipal(viewSourceURI, { 69 userContextId: 101, 70 }); 71 Assert.ok(viewSourcePrincipal.isContentPrincipal); 72 Assert.ok(viewSourcePrincipal.schemeIs("view-source")); 73 Assert.equal( 74 viewSourcePrincipal.origin, 75 "https://test1.test2.example.com^userContextId=101" 76 ); 77 Assert.equal( 78 viewSourcePrincipal.originNoSuffix, 79 "https://test1.test2.example.com" 80 ); 81 Assert.equal( 82 viewSourcePrincipal.siteOrigin, 83 "https://example.com^userContextId=101" 84 ); 85 Assert.equal(viewSourcePrincipal.siteOriginNoSuffix, "https://example.com"); 86 87 let mozExtensionURI = Services.io.newURI( 88 "moz-extension://924f966d-c93b-4fbf-968a-16608461663c/meh.txt" 89 ); 90 let mozExtensionPrincipal = scriptSecMan.createContentPrincipal( 91 mozExtensionURI, 92 { 93 userContextId: 102, 94 } 95 ); 96 Assert.ok(mozExtensionPrincipal.isContentPrincipal); 97 Assert.ok(mozExtensionPrincipal.schemeIs("moz-extension")); 98 Assert.equal( 99 mozExtensionPrincipal.origin, 100 "moz-extension://924f966d-c93b-4fbf-968a-16608461663c^userContextId=102" 101 ); 102 Assert.equal( 103 mozExtensionPrincipal.originNoSuffix, 104 "moz-extension://924f966d-c93b-4fbf-968a-16608461663c" 105 ); 106 Assert.equal( 107 mozExtensionPrincipal.siteOrigin, 108 "moz-extension://924f966d-c93b-4fbf-968a-16608461663c^userContextId=102" 109 ); 110 Assert.equal( 111 mozExtensionPrincipal.siteOriginNoSuffix, 112 "moz-extension://924f966d-c93b-4fbf-968a-16608461663c" 113 ); 114 115 let localhostURI = Services.io.newURI(" http://localhost:44203"); 116 let localhostPrincipal = scriptSecMan.createContentPrincipal(localhostURI, { 117 userContextId: 144, 118 }); 119 Assert.ok(localhostPrincipal.isContentPrincipal); 120 Assert.ok(localhostPrincipal.schemeIs("http")); 121 Assert.equal( 122 localhostPrincipal.origin, 123 "http://localhost:44203^userContextId=144" 124 ); 125 Assert.equal(localhostPrincipal.originNoSuffix, "http://localhost:44203"); 126 Assert.equal( 127 localhostPrincipal.siteOrigin, 128 "http://localhost^userContextId=144" 129 ); 130 Assert.equal(localhostPrincipal.siteOriginNoSuffix, "http://localhost"); 131 132 // NullPrincipal checks 133 let nullPrincipal = scriptSecMan.createNullPrincipal({ userContextId: 33 }); 134 Assert.ok(nullPrincipal.isNullPrincipal); 135 Assert.ok(nullPrincipal.origin.includes("moz-nullprincipal")); 136 Assert.ok(nullPrincipal.origin.includes("^userContextId=33")); 137 Assert.ok(nullPrincipal.originNoSuffix.includes("moz-nullprincipal")); 138 Assert.ok(!nullPrincipal.originNoSuffix.includes("^userContextId=33")); 139 Assert.ok(nullPrincipal.siteOrigin.includes("moz-nullprincipal")); 140 Assert.ok(nullPrincipal.siteOrigin.includes("^userContextId=33")); 141 Assert.ok(nullPrincipal.siteOriginNoSuffix.includes("moz-nullprincipal")); 142 Assert.ok(!nullPrincipal.siteOriginNoSuffix.includes("^userContextId=33")); 143 144 // ExpandedPrincipal checks 145 let expandedPrincipal = Cu.getObjectPrincipal(Cu.Sandbox([prinicpal2])); 146 Assert.ok(expandedPrincipal.isExpandedPrincipal); 147 Assert.equal( 148 expandedPrincipal.origin, 149 "[Expanded Principal [http://test1.example.com^userContextId=22]]^userContextId=22" 150 ); 151 Assert.equal( 152 expandedPrincipal.originNoSuffix, 153 "[Expanded Principal [http://test1.example.com^userContextId=22]]" 154 ); 155 Assert.equal( 156 expandedPrincipal.siteOrigin, 157 "[Expanded Principal [http://test1.example.com^userContextId=22]]^userContextId=22" 158 ); 159 Assert.equal( 160 expandedPrincipal.siteOriginNoSuffix, 161 "[Expanded Principal [http://test1.example.com^userContextId=22]]" 162 ); 163 164 let ipv6URI = Services.io.newURI("https://[2001:db8::ff00:42:8329]:123"); 165 let ipv6Principal = scriptSecMan.createContentPrincipal(ipv6URI, { 166 userContextId: 6, 167 }); 168 Assert.ok(ipv6Principal.isContentPrincipal); 169 Assert.equal( 170 ipv6Principal.origin, 171 "https://[2001:db8::ff00:42:8329]:123^userContextId=6" 172 ); 173 Assert.equal( 174 ipv6Principal.originNoSuffix, 175 "https://[2001:db8::ff00:42:8329]:123" 176 ); 177 Assert.equal( 178 ipv6Principal.siteOrigin, 179 "https://[2001:db8::ff00:42:8329]^userContextId=6" 180 ); 181 Assert.equal( 182 ipv6Principal.siteOriginNoSuffix, 183 "https://[2001:db8::ff00:42:8329]" 184 ); 185 186 // Checks for non-http URIs not using the TLD service. 187 let resourceURI = Services.io.newURI("resource://test.example.com/test"); 188 let resourcePrincipal = scriptSecMan.createContentPrincipal(resourceURI, {}); 189 Assert.equal(resourcePrincipal.siteOrigin, "resource://test.example.com");