mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-06-09 18:09:16 +00:00
78 lines
3.0 KiB
JavaScript
78 lines
3.0 KiB
JavaScript
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
|
/* vim: set ts=2 et sw=2 tw=80: */
|
|
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Tests the legacy validation made when storing nsILoginInfo or disabled hosts.
|
|
*
|
|
* These rules exist because of limitations of the "signons.txt" storage file,
|
|
* that is not used anymore. They are still enforced by the Login Manager
|
|
* service, despite these values can now be safely stored in the back-end.
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//// Tests
|
|
|
|
/**
|
|
* Tests legacy validation with addLogin.
|
|
*/
|
|
add_task(function test_addLogin_invalid_characters_legacy()
|
|
{
|
|
// Test newlines and carriage returns in properties that contain URLs.
|
|
for (let testValue of ["http://newline\n.example.com",
|
|
"http://carriagereturn.example.com\r"]) {
|
|
let loginInfo = TestData.formLogin({ hostname: testValue });
|
|
Assert.throws(() => Services.logins.addLogin(loginInfo),
|
|
/login values can't contain newlines/);
|
|
|
|
loginInfo = TestData.formLogin({ formSubmitURL: testValue });
|
|
Assert.throws(() => Services.logins.addLogin(loginInfo),
|
|
/login values can't contain newlines/);
|
|
|
|
loginInfo = TestData.authLogin({ httpRealm: testValue });
|
|
Assert.throws(() => Services.logins.addLogin(loginInfo),
|
|
/login values can't contain newlines/);
|
|
}
|
|
|
|
// Test newlines and carriage returns in form field names.
|
|
for (let testValue of ["newline_field\n", "carriagereturn\r_field"]) {
|
|
let loginInfo = TestData.formLogin({ usernameField: testValue });
|
|
Assert.throws(() => Services.logins.addLogin(loginInfo),
|
|
/login values can't contain newlines/);
|
|
|
|
loginInfo = TestData.formLogin({ passwordField: testValue });
|
|
Assert.throws(() => Services.logins.addLogin(loginInfo),
|
|
/login values can't contain newlines/);
|
|
}
|
|
|
|
// Test a single dot as the value of usernameField and formSubmitURL.
|
|
let loginInfo = TestData.formLogin({ usernameField: "." });
|
|
Assert.throws(() => Services.logins.addLogin(loginInfo),
|
|
/login values can't be periods/);
|
|
|
|
loginInfo = TestData.formLogin({ formSubmitURL: "." });
|
|
Assert.throws(() => Services.logins.addLogin(loginInfo),
|
|
/login values can't be periods/);
|
|
|
|
// Test the sequence " (" inside the value of the "hostname" property.
|
|
loginInfo = TestData.formLogin({ hostname: "http://parens (.example.com" });
|
|
Assert.throws(() => Services.logins.addLogin(loginInfo),
|
|
/bad parens in hostname/);
|
|
});
|
|
|
|
/**
|
|
* Tests legacy validation with setLoginSavingEnabled.
|
|
*/
|
|
add_task(function test_setLoginSavingEnabled_invalid_characters_legacy()
|
|
{
|
|
for (let hostname of ["http://newline\n.example.com",
|
|
"http://carriagereturn.example.com\r",
|
|
"."]) {
|
|
Assert.throws(() => Services.logins.setLoginSavingEnabled(hostname, false),
|
|
/Invalid hostname/);
|
|
}
|
|
});
|