104 lines
2.8 KiB
JavaScript
104 lines
2.8 KiB
JavaScript
/**
|
|
* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
// Use initOrigin to test the operation of the origin parser on a list of URLs
|
|
// we should support. If the origin doesn't parse, then initOrigin will throw an
|
|
// exception (and potentially MOZ_ASSERT under debug builds). Handling of
|
|
// obsolete or invalid origins is handled in other test files.
|
|
async function testSteps() {
|
|
const basePath = "storage/default/";
|
|
const longExampleOriginSubstring = "a".repeat(
|
|
255 - "https://example..com".length
|
|
);
|
|
const origins = [
|
|
// General
|
|
{
|
|
dirName: "https+++example.com",
|
|
url: "https://example.com",
|
|
},
|
|
{
|
|
dirName: "https+++smaug----.github.io",
|
|
url: "https://smaug----.github.io/",
|
|
},
|
|
// About
|
|
{
|
|
dirName: "about+home",
|
|
url: "about:home",
|
|
},
|
|
{
|
|
dirName: "about+reader",
|
|
url: "about:reader",
|
|
},
|
|
// IPv6
|
|
{
|
|
dirName: "https+++[++]",
|
|
url: "https://[::]",
|
|
},
|
|
{
|
|
dirName: "https+++[ffff+ffff+ffff+ffff+ffff+ffff+ffff+ffff]",
|
|
url: "https://[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]",
|
|
},
|
|
{
|
|
dirName: "http+++[2010+836b+4179++836b+4179]",
|
|
url: "http://[2010:836B:4179::836B:4179]:80",
|
|
},
|
|
{
|
|
dirName: "https+++[++ffff+8190+3426]",
|
|
url: "https://[::FFFF:129.144.52.38]",
|
|
},
|
|
// MAX_PATH on Windows (260); storage/default/https+++example.{a....a}.com
|
|
// should have already exceeded the MAX_PATH limitation on Windows.
|
|
// There is a limitation (255) for each component on Windows so that we can
|
|
// only let the component be 255 chars and expect the wwhole path to be
|
|
// greater then 260.
|
|
{
|
|
dirName: `https+++example.${longExampleOriginSubstring}.com`,
|
|
url: `https://example.${longExampleOriginSubstring}.com`,
|
|
},
|
|
// EndingWithPeriod
|
|
{
|
|
dirName: "https+++example.com.",
|
|
url: "https://example.com.",
|
|
},
|
|
];
|
|
|
|
info("Initializing");
|
|
|
|
let request = init();
|
|
await requestFinished(request);
|
|
|
|
info("Initializing temporary storage");
|
|
|
|
request = initTemporaryStorage();
|
|
await requestFinished(request);
|
|
|
|
for (let origin of origins) {
|
|
info(`Testing ${origin.url}`);
|
|
|
|
try {
|
|
request = initTemporaryOrigin(
|
|
"default",
|
|
getPrincipal(origin.url),
|
|
/* createIfNonExistent */ true
|
|
);
|
|
await requestFinished(request);
|
|
|
|
ok(true, "Should not have thrown");
|
|
} catch (ex) {
|
|
ok(false, "Should not have thrown");
|
|
}
|
|
|
|
let dir = getRelativeFile(basePath + origin.dirName);
|
|
ok(dir.exists(), "Origin was created");
|
|
Assert.strictEqual(
|
|
origin.dirName,
|
|
dir.leafName,
|
|
`Origin ${origin.dirName} was created expectedly`
|
|
);
|
|
}
|
|
|
|
request = clear();
|
|
await requestFinished(request);
|
|
}
|