diff options
Diffstat (limited to 'comm/mailnews/base/test/unit/test_testsuite_fakeserverAuth.js')
-rw-r--r-- | comm/mailnews/base/test/unit/test_testsuite_fakeserverAuth.js | 58 |
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], "<"); +} |