gecko-dev/docshell/test/unit/test_URIFixup_forced.js
James Teow b1eefaa0d6 Bug 1792635 - Prevent DNS not found page from suggesting the same URI - r=mak
I modified the boolean associated with fixupCreateAlternateURI to only
be true if the host which contains the prefix and suffix differs from
the fixed up version. This will allow the boolean to be false in cases
where the fixup doesn't change the host. Then for the DNS error page,
there is a check as to whether the host or protocol was changed.

Differential Revision: https://phabricator.services.mozilla.com/D159175
2022-10-18 13:24:51 +00:00

162 lines
4.3 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
var data = [
{
// singleword.
wrong: "http://example/",
fixed: "https://www.example.com/",
},
{
// upgrade protocol.
wrong: "http://www.example.com/",
fixed: "https://www.example.com/",
noAlternateURI: true,
},
{
// no difference.
wrong: "https://www.example.com/",
fixed: "https://www.example.com/",
noProtocolFixup: true,
noAlternateURI: true,
},
{
// don't add prefix when there's more than one dot.
wrong: "http://www.example.abc.def/",
fixed: "https://www.example.abc.def/",
noAlternateURI: true,
},
{
// http -> https.
wrong: "http://www.example/",
fixed: "https://www.example/",
noAlternateURI: true,
},
{
// domain.com -> https://www.domain.com.
wrong: "http://example.com/",
fixed: "https://www.example.com/",
},
{
// example/example... -> https://www.example.com/example/
wrong: "http://example/example/",
fixed: "https://www.example.com/example/",
},
{
// example/example/s#q -> www.example.com/example/s#q.
wrong: "http://example/example/s#q",
fixed: "https://www.example.com/example/s#q",
},
{
wrong: "http://モジラ.org",
fixed: "https://www.xn--yck6dwa.org/",
},
{
wrong: "http://モジラ",
fixed: "https://www.xn--yck6dwa.com/",
},
{
wrong: "http://xn--yck6dwa",
fixed: "https://www.xn--yck6dwa.com/",
},
{
wrong: "https://モジラ.org",
fixed: "https://www.xn--yck6dwa.org/",
noProtocolFixup: true,
},
{
wrong: "https://モジラ",
fixed: "https://www.xn--yck6dwa.com/",
noProtocolFixup: true,
},
{
wrong: "https://xn--yck6dwa",
fixed: "https://www.xn--yck6dwa.com/",
noProtocolFixup: true,
},
{
// Host is https -> fixup typos of protocol
wrong: "htp://https://mozilla.org",
fixed: "http://https//mozilla.org",
noAlternateURI: true,
},
{
// Host is http -> fixup typos of protocol
wrong: "ttp://http://mozilla.org",
fixed: "http://http//mozilla.org",
noAlternateURI: true,
},
{
// Host is localhost -> fixup typos of protocol
wrong: "htps://localhost://mozilla.org",
fixed: "https://localhost//mozilla.org",
noAlternateURI: true,
},
{
// view-source is not http/https -> error
wrong: "view-source:http://example/example/example/example",
reject: true,
comment: "Scheme should be either http or https",
},
{
// file is not http/https -> error
wrong: "file://http://example/example/example/example",
reject: true,
comment: "Scheme should be either http or https",
},
{
// Protocol is missing -> error
wrong: "example.com",
reject: true,
comment: "Scheme should be either http or https",
},
{
// Empty input -> error
wrong: "",
reject: true,
comment: "Should pass a non-null uri",
},
];
add_task(async function setup() {
Services.prefs.setStringPref("browser.fixup.alternate.prefix", "www.");
Services.prefs.setStringPref("browser.fixup.alternate.suffix", ".com");
Services.prefs.setStringPref("browser.fixup.alternate.protocol", "https");
registerCleanupFunction(function() {
Services.prefs.clearUserPref("browser.fixup.alternate.prefix");
Services.prefs.clearUserPref("browser.fixup.alternate.suffix");
Services.prefs.clearUserPref("browser.fixup.alternate.protocol");
});
});
add_task(function test_default_https_pref() {
for (let item of data) {
if (item.reject) {
Assert.throws(
() => Services.uriFixup.forceHttpFixup(item.wrong),
/NS_ERROR_FAILURE/,
item.comment
);
} else {
let {
fixupChangedProtocol,
fixupCreatedAlternateURI,
fixedURI,
} = Services.uriFixup.forceHttpFixup(item.wrong);
Assert.equal(fixedURI.spec, item.fixed, "Specs should be the same");
Assert.equal(
fixupChangedProtocol,
!item.noProtocolFixup,
`fixupChangedProtocol should be ${!item.noAlternateURI}`
);
Assert.equal(
fixupCreatedAlternateURI,
!item.noAlternateURI,
`fixupCreatedAlternateURI should be ${!item.limitedFixup}`
);
}
}
});