summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/news/test/unit/test_nntpGroupPassword.js
blob: 6bf9be53cc16c947aef96e564084efbb1b97914c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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);
  }
});