summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/news/test/unit/test_NntpChannel.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/news/test/unit/test_NntpChannel.js')
-rw-r--r--comm/mailnews/news/test/unit/test_NntpChannel.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/comm/mailnews/news/test/unit/test_NntpChannel.js b/comm/mailnews/news/test/unit/test_NntpChannel.js
new file mode 100644
index 0000000000..0da7963c78
--- /dev/null
+++ b/comm/mailnews/news/test/unit/test_NntpChannel.js
@@ -0,0 +1,74 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var { NntpChannel } = ChromeUtils.import("resource:///modules/NntpChannel.jsm");
+var { PromiseTestUtils } = ChromeUtils.import(
+ "resource://testing-common/mailnews/PromiseTestUtils.jsm"
+);
+
+let server;
+
+add_setup(function setup() {
+ let daemon = setupNNTPDaemon();
+ server = new nsMailServer(() => {
+ let handler = new NNTP_RFC977_handler(daemon);
+ // Test NntpClient works with 201 response.
+ handler.onStartup = () => {
+ return "201 posting prohibited";
+ };
+ return handler;
+ }, daemon);
+ server.start(NNTP_PORT);
+ registerCleanupFunction(() => {
+ server.stop();
+ });
+
+ setupLocalServer(NNTP_PORT);
+});
+
+/**
+ * Test a ?list-ids news url will trigger LISTGROUP request.
+ */
+add_task(async function test_listIds() {
+ // Init the uri and streamListener.
+ let uri = Services.io.newURI(
+ `news://localhost:${NNTP_PORT}/test.filter?list-ids`
+ );
+ let streamListener = new PromiseTestUtils.PromiseStreamListener();
+
+ // Run the uri with NntpChannel.
+ let channel = new NntpChannel(uri);
+ channel.asyncOpen(streamListener);
+ await streamListener.promise;
+
+ // Test LISTGROUP request was sent correctly.
+ let transaction = server.playTransaction();
+ do_check_transaction(transaction, ["MODE READER", "LISTGROUP test.filter"]);
+});
+
+/**
+ * Test a ?group=name&key=x news url will trigger ARTICLE request.
+ */
+add_task(async function test_fetchArticle() {
+ _server.closeCachedConnections();
+
+ // Init the uri and streamListener.
+ let uri = Services.io.newURI(
+ `news://localhost:${NNTP_PORT}?group=test.filter&key=1`
+ );
+ let streamListener = new PromiseTestUtils.PromiseStreamListener();
+
+ // Run the uri with NntpChannel.
+ let channel = new NntpChannel(uri);
+ channel.asyncOpen(streamListener);
+ await streamListener.promise;
+
+ // Test ARTICLE request was sent correctly.
+ let transaction = server.playTransaction();
+ do_check_transaction(transaction, [
+ "MODE READER",
+ "GROUP test.filter",
+ "ARTICLE 1",
+ ]);
+});