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