diff options
Diffstat (limited to 'comm/mailnews/compose/test/unit/test_smtpProtocols.js')
-rw-r--r-- | comm/mailnews/compose/test/unit/test_smtpProtocols.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/comm/mailnews/compose/test/unit/test_smtpProtocols.js b/comm/mailnews/compose/test/unit/test_smtpProtocols.js new file mode 100644 index 0000000000..bba7d55b6b --- /dev/null +++ b/comm/mailnews/compose/test/unit/test_smtpProtocols.js @@ -0,0 +1,63 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* + * Test suite for getting smtp urls via the protocol handler. + */ + +var defaultProtocolFlags = + Ci.nsIProtocolHandler.URI_NORELATIVE | + Ci.nsIProtocolHandler.URI_DANGEROUS_TO_LOAD | + Ci.nsIProtocolHandler.URI_NON_PERSISTABLE | + Ci.nsIProtocolHandler.ALLOWS_PROXY | + Ci.nsIProtocolHandler.URI_FORBIDS_AUTOMATIC_DOCUMENT_REPLACEMENT; + +var protocols = [ + { + protocol: "smtp", + urlSpec: "smtp://user@localhost/", + defaultPort: Ci.nsISmtpUrl.DEFAULT_SMTP_PORT, + }, + { + protocol: "smtps", + urlSpec: "smtps://user@localhost/", + defaultPort: Ci.nsISmtpUrl.DEFAULT_SMTPS_PORT, + }, +]; + +function run_test() { + for (var part = 0; part < protocols.length; ++part) { + print("protocol: " + protocols[part].protocol); + + var pH = Cc[ + "@mozilla.org/network/protocol;1?name=" + protocols[part].protocol + ].createInstance(Ci.nsIProtocolHandler); + + Assert.equal(pH.scheme, protocols[part].protocol); + Assert.equal( + Services.io.getDefaultPort(pH.scheme), + protocols[part].defaultPort + ); + Assert.equal(Services.io.getProtocolFlags(pH.scheme), defaultProtocolFlags); + + // Whip through some of the ports to check we get the right results. + for (let i = 0; i < 1024; ++i) { + Assert.equal(pH.allowPort(i, ""), i == protocols[part].defaultPort); + } + + // Check we get a URI when we ask for one + var uri = Services.io.newURI(protocols[part].urlSpec); + + uri.QueryInterface(Ci.nsISmtpUrl); + + Assert.equal(uri.spec, protocols[part].urlSpec); + + try { + // This call should throw NS_ERROR_NOT_IMPLEMENTED. If it doesn't, + // then we should implement a new test for it. + pH.newChannel(uri, null); + // If it didn't throw, then shout about it. + do_throw("newChannel not throwing NS_ERROR_NOT_IMPLEMENTED."); + } catch (ex) { + Assert.equal(ex.result, Cr.NS_ERROR_NOT_IMPLEMENTED); + } + } +} |