Revision control

Copy as Markdown

Other Tools

/* -*- 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.sys.mjs 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",
"",
""
);
await Services.logins.addLoginAsync(loginInfo1);
var loginInfo2 = Cc["@mozilla.org/login-manager/loginInfo;1"].createInstance(
Ci.nsILoginInfo
);
loginInfo2.init(
serverURI + "test.filter",
null,
serverURI + "test.filter",
"group2",
"pass2",
"",
""
);
await Services.logins.addLoginAsync(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 = Services.tm.currentThread;
while (thread.hasPendingEvents()) {
thread.processNextEvent(true);
}
});