summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/news/test/unit/test_nntpGroupPassword.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/news/test/unit/test_nntpGroupPassword.js')
-rw-r--r--comm/mailnews/news/test/unit/test_nntpGroupPassword.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/comm/mailnews/news/test/unit/test_nntpGroupPassword.js b/comm/mailnews/news/test/unit/test_nntpGroupPassword.js
new file mode 100644
index 0000000000..6bf9be53cc
--- /dev/null
+++ b/comm/mailnews/news/test/unit/test_nntpGroupPassword.js
@@ -0,0 +1,99 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/**
+ * Authentication tests for NNTP (based on RFC4643).
+ */
+
+// The basic daemon to use for testing Nntpd.jsm implementations
+var daemon = setupNNTPDaemon();
+
+add_task(async function () {
+ await Services.logins.initializationPromise;
+
+ daemon.groupCredentials = {
+ "test.subscribe.empty": ["group1", "pass1"],
+ "test.filter": ["group2", "pass2"],
+ };
+
+ var server = makeServer(NNTP_RFC4643_extension, daemon);
+ server.start();
+ var localserver = setupLocalServer(server.port);
+ localserver.singleSignon = false;
+
+ // Add passwords to the manager
+ var serverURI = "news://localhost/";
+ var loginInfo1 = Cc["@mozilla.org/login-manager/loginInfo;1"].createInstance(
+ Ci.nsILoginInfo
+ );
+ loginInfo1.init(
+ serverURI + "test.subscribe.empty",
+ null,
+ serverURI + "test.subscribe.empty",
+ "group1",
+ "pass1",
+ "",
+ ""
+ );
+ Services.logins.addLogin(loginInfo1);
+ var loginInfo2 = Cc["@mozilla.org/login-manager/loginInfo;1"].createInstance(
+ Ci.nsILoginInfo
+ );
+ loginInfo2.init(
+ serverURI + "test.filter",
+ null,
+ serverURI + "test.filter",
+ "group2",
+ "pass2",
+ "",
+ ""
+ );
+ Services.logins.addLogin(loginInfo2);
+ try {
+ var prefix = "news://localhost:" + server.port + "/";
+ var transaction;
+
+ test = "per-group password part 1";
+ setupProtocolTest(
+ server.port,
+ prefix + "test.subscribe.empty",
+ localserver
+ );
+ server.performTest();
+ transaction = server.playTransaction();
+ do_check_transaction(transaction, [
+ "MODE READER",
+ "GROUP test.subscribe.empty",
+ "AUTHINFO user group1",
+ "AUTHINFO pass pass1",
+ "GROUP test.subscribe.empty",
+ ]);
+
+ test = "per-group password part 2";
+ server.resetTest();
+ setupProtocolTest(server.port, prefix + "test.filter", localserver);
+ server.performTest();
+ transaction = server.playTransaction();
+ do_check_transaction(transaction, [
+ "MODE READER",
+ "GROUP test.filter",
+ "AUTHINFO user group2",
+ "AUTHINFO pass pass2",
+ "GROUP test.filter",
+ "XOVER 1-8",
+ ]);
+ } catch (e) {
+ dump("NNTP Protocol test " + test + " failed for type RFC 977:\n");
+ try {
+ var trans = server.playTransaction();
+ if (trans) {
+ dump("Commands called: " + uneval(trans) + "\n");
+ }
+ } catch (exp) {}
+ do_throw(e);
+ }
+ server.stop();
+
+ var thread = gThreadManager.currentThread;
+ while (thread.hasPendingEvents()) {
+ thread.processNextEvent(true);
+ }
+});