129 lines
3.5 KiB
HTML
129 lines
3.5 KiB
HTML
<!--
|
|
Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/
|
|
-->
|
|
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
Tests for IceCat Accounts signin with invalid email case
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=963835
|
|
-->
|
|
<head>
|
|
<title>Test for IceCat Accounts (Bug 963835)</title>
|
|
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<body>
|
|
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=963835">Mozilla Bug 963835</a>
|
|
<p id="display"></p>
|
|
<div id="content" style="display: none">
|
|
Test for correction of invalid email case in Fx Accounts signIn
|
|
</div>
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
const {FxAccounts} = ChromeUtils.importESModule(
|
|
"resource://gre/modules/FxAccounts.sys.mjs"
|
|
);
|
|
const {FxAccountsClient} = ChromeUtils.importESModule(
|
|
"resource://gre/modules/FxAccountsClient.sys.mjs"
|
|
);
|
|
|
|
const TEST_SERVER =
|
|
"http://mochi.test:8888/chrome/services/fxaccounts/tests/mochitest/file_invalidEmailCase.sjs?path=";
|
|
|
|
let MockStorage = function() {
|
|
this.data = null;
|
|
};
|
|
MockStorage.prototype = Object.freeze({
|
|
set(contents) {
|
|
this.data = contents;
|
|
return Promise.resolve(null);
|
|
},
|
|
get() {
|
|
return Promise.resolve(this.data);
|
|
},
|
|
getOAuthTokens() {
|
|
return Promise.resolve(null);
|
|
},
|
|
setOAuthTokens() {
|
|
return Promise.resolve();
|
|
},
|
|
});
|
|
|
|
function MockFxAccounts() {
|
|
return new FxAccounts({
|
|
_now_is: new Date(),
|
|
|
|
now() {
|
|
return this._now_is;
|
|
},
|
|
|
|
signedInUserStorage: new MockStorage(),
|
|
|
|
fxAccountsClient: new FxAccountsClient(TEST_SERVER),
|
|
});
|
|
}
|
|
|
|
let wrongEmail = "greta.garbo@gmail.com";
|
|
let rightEmail = "Greta.Garbo@gmail.COM";
|
|
let password = "123456";
|
|
|
|
function runTest() {
|
|
is(Services.prefs.getStringPref("identity.fxaccounts.auth.uri"), TEST_SERVER,
|
|
"Pref for auth.uri should be set to test server");
|
|
|
|
let fxa = new MockFxAccounts();
|
|
let client = fxa._internal.fxAccountsClient;
|
|
|
|
is(true, !!fxa, "Couldn't mock fxa");
|
|
is(true, !!client, "Couldn't mock fxa client");
|
|
is(client.host, TEST_SERVER, "Should be using the test auth server uri");
|
|
|
|
// First try to sign in using the email with the wrong capitalization. The
|
|
// FxAccountsClient will receive a 400 from the server with the corrected email.
|
|
// It will automatically try to sign in again. We expect this to succeed.
|
|
client.signIn(wrongEmail, password).then(
|
|
user => {
|
|
// Now store the signed-in user state. This will include the correct
|
|
// email capitalization.
|
|
fxa._internal.setSignedInUser(user).then(
|
|
() => {
|
|
// Confirm that the correct email got stored.
|
|
fxa.getSignedInUser().then(
|
|
data => {
|
|
is(data.email, rightEmail);
|
|
SimpleTest.finish();
|
|
},
|
|
getUserError => {
|
|
ok(false, JSON.stringify(getUserError));
|
|
}
|
|
);
|
|
},
|
|
setSignedInUserError => {
|
|
ok(false, JSON.stringify(setSignedInUserError));
|
|
}
|
|
);
|
|
},
|
|
signInError => {
|
|
ok(false, JSON.stringify(signInError));
|
|
}
|
|
);
|
|
}
|
|
|
|
SpecialPowers.pushPrefEnv({"set": [
|
|
["identity.fxaccounts.enabled", true], // fx accounts
|
|
["identity.fxaccounts.auth.uri", TEST_SERVER], // our sjs server
|
|
["browser.dom.window.dump.enabled", true],
|
|
["devtools.console.stdout.chrome", true],
|
|
]},
|
|
function() { runTest(); }
|
|
);
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|