Revision control

Copy as Markdown

Other Tools

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* Test suite for IMAP nsIProtocolHandler implementations.
*/
var defaultProtocolFlags =
Ci.nsIProtocolHandler.URI_NORELATIVE |
Ci.nsIProtocolHandler.URI_FORBIDS_AUTOMATIC_DOCUMENT_REPLACEMENT |
Ci.nsIProtocolHandler.URI_DANGEROUS_TO_LOAD |
Ci.nsIProtocolHandler.ALLOWS_PROXY |
Ci.nsIProtocolHandler.URI_FORBIDS_COOKIE_ACCESS |
Ci.nsIProtocolHandler.ORIGIN_IS_FULL_SPEC;
var protocols = [
{
protocol: "imap",
defaultPort: Ci.nsIImapUrl.DEFAULT_IMAP_PORT,
},
// XXX Imaps protocol not available via nsIProtocolHandler yet.
// {
// protocol: "imaps",
// urlSpec: "iamps://user@localhost/",
// defaultPort: Ci.nsIImapUrl.DEFAULT_IMAPS_PORT,
// },
];
function run_test() {
// We need a server to match the urlSpecs above.
createLocalIMAPServer();
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.
// IMAP allows connecting to any port.
for (let i = 0; i < 1024; ++i) {
Assert.ok(pH.allowPort(i, ""));
}
// Check we get a URI when we ask for one
var uri = Services.io.newURI(protocols[part].urlSpec);
uri.QueryInterface(Ci.nsIImapUrl);
Assert.equal(uri.spec, protocols[part].urlSpec);
}
}