summaryrefslogtreecommitdiffstats
path: root/toolkit/components/passwordmgr/test/unit/test_isInferredLoginForm.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/passwordmgr/test/unit/test_isInferredLoginForm.js')
-rw-r--r--toolkit/components/passwordmgr/test/unit/test_isInferredLoginForm.js98
1 files changed, 98 insertions, 0 deletions
diff --git a/toolkit/components/passwordmgr/test/unit/test_isInferredLoginForm.js b/toolkit/components/passwordmgr/test/unit/test_isInferredLoginForm.js
new file mode 100644
index 0000000000..01bc3ff816
--- /dev/null
+++ b/toolkit/components/passwordmgr/test/unit/test_isInferredLoginForm.js
@@ -0,0 +1,98 @@
+/**
+ * Test for LoginHelper.isInferredLoginForm.
+ */
+
+"use strict";
+
+const attributeTestData = [
+ {
+ testValues: ["", "form", "search", "signup", "sign-up", "sign/up"],
+ expectation: false,
+ },
+ {
+ testValues: [
+ "Login",
+ "Log in",
+ "Log on",
+ "Log-on",
+ "Sign in",
+ "Sigin",
+ "Sign/in",
+ "Sign-in",
+ "Sign on",
+ "Sign-on",
+ "loginForm",
+ "form-sign-in",
+ ],
+ expectation: true,
+ },
+];
+
+const classNameTestData = [
+ {
+ testValues: [
+ "",
+ "inputTxt form-control",
+ "user-input form-name",
+ "text name mail",
+ "form signup",
+ ],
+ expectation: false,
+ },
+ {
+ testValues: ["login form"],
+ expectation: true,
+ },
+];
+
+const TESTCASES = [
+ {
+ description: "Test id attribute",
+ update: (doc, v) => {
+ doc.querySelector("form").setAttribute("id", v);
+ },
+ subtests: attributeTestData,
+ },
+ {
+ description: "Test name attribute",
+ update: (doc, v) => {
+ doc.querySelector("form").setAttribute("name", v);
+ },
+ subtests: attributeTestData,
+ },
+ {
+ description: "Test class attribute",
+ update: (doc, v) => {
+ doc.querySelector("form").setAttribute("class", v);
+ },
+ subtests: [...attributeTestData, ...classNameTestData],
+ },
+];
+
+for (let testcase of TESTCASES) {
+ info("Sanity checking the testcase: " + testcase.description);
+
+ (function () {
+ add_task(async function () {
+ info("Starting testcase: " + testcase.description);
+
+ for (let subtest of testcase.subtests) {
+ const document = MockDocument.createTestDocument(
+ "http://localhost:8080/test/",
+ `<form id="id" name="name"></form>`
+ );
+
+ for (let value of subtest.testValues) {
+ testcase.update(document, value);
+ const ele = document.querySelector("form");
+ const ret = LoginHelper.isInferredLoginForm(ele);
+ Assert.strictEqual(
+ ret,
+ subtest.expectation,
+ `${testcase.description}, isInferredLoginForm doesn't return correct result while setting the value to ${value}`
+ );
+ }
+ }
+ });
+ })();
+}