summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/base/test/unit/test_testsuite_fakeserverAuth.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/base/test/unit/test_testsuite_fakeserverAuth.js')
-rw-r--r--comm/mailnews/base/test/unit/test_testsuite_fakeserverAuth.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/comm/mailnews/base/test/unit/test_testsuite_fakeserverAuth.js b/comm/mailnews/base/test/unit/test_testsuite_fakeserverAuth.js
new file mode 100644
index 0000000000..02181ae20b
--- /dev/null
+++ b/comm/mailnews/base/test/unit/test_testsuite_fakeserverAuth.js
@@ -0,0 +1,58 @@
+/**
+ * Tests functions in mailnews/test/fakeserver/Auth.jsm
+ * which are responsible for the authentication in the
+ * fakeserver.
+ *
+ * Do NOT essentially re-code the auth schemes here,
+ * just check roundtrips, against static values etc..
+ */
+
+var { AuthPLAIN, AuthCRAM } = ChromeUtils.import(
+ "resource://testing-common/mailnews/Auth.jsm"
+);
+
+var kUsername = "fred1";
+var kPassword = "wilma2";
+
+function run_test() {
+ authPLAIN();
+ authCRAMMD5();
+ return true;
+}
+
+/**
+ * Test AUTH PLAIN
+ */
+function authPLAIN() {
+ // roundtrip works
+ var line = AuthPLAIN.encodeLine(kUsername, kPassword);
+ var req = AuthPLAIN.decodeLine(line);
+ Assert.equal(req.username, kUsername);
+ Assert.equal(req.password, kPassword);
+
+ // correct encoding
+ Assert.equal(line, "AGZyZWQxAHdpbG1hMg==");
+}
+
+/**
+ * Test AUTH CRAM-MD5
+ */
+function authCRAMMD5() {
+ // AuthCRAM.createChallenge() creates a different challenge each time
+ var hardcodedChallenge = btoa("<123@fake.invalid>");
+ var hardcodedResponse =
+ "ZnJlZDEgOTA5YjgwMmM3NTI5NTJlYzI2NjgyMTNmYTdjNWU0ZjQ=";
+
+ // correct encoding
+ var req = AuthCRAM.decodeLine(hardcodedResponse);
+ Assert.equal(req.username, kUsername);
+ var expectedDigest = AuthCRAM.encodeCRAMMD5(hardcodedChallenge, kPassword);
+ Assert.equal(req.digest, expectedDigest);
+
+ var challenge = AuthCRAM.createChallenge("fake.invalid");
+ challenge = atob(challenge); // decode. function currently returns it already encoded
+ var challengeSplit = challenge.split("@");
+ Assert.equal(challengeSplit.length, 2);
+ Assert.equal(challengeSplit[1], "fake.invalid>");
+ Assert.equal(challengeSplit[0][0], "<");
+}