diff options
Diffstat (limited to 'deps/npm/node_modules/npm-registry-client/test/request.js')
-rw-r--r-- | deps/npm/node_modules/npm-registry-client/test/request.js | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/deps/npm/node_modules/npm-registry-client/test/request.js b/deps/npm/node_modules/npm-registry-client/test/request.js new file mode 100644 index 000000000..cdc4b75f5 --- /dev/null +++ b/deps/npm/node_modules/npm-registry-client/test/request.js @@ -0,0 +1,252 @@ +var Readable = require("stream").Readable +var inherits = require("util").inherits + +var test = require("tap").test +var concat = require("concat-stream") + +var server = require("./lib/server.js") +var common = require("./lib/common.js") +var client = common.freshClient() + +function OneA() { + Readable.call(this) + this.push("A") + this.push(null) +} +inherits(OneA, Readable) + +function nop () {} + +var URI = "http://localhost:1337/" +var USERNAME = "username" +var PASSWORD = "%1234@asdf%" +var EMAIL = "i@izs.me" +var AUTH = { + username : USERNAME, + password : PASSWORD, + email : EMAIL +} +var PARAMS = { auth : AUTH } + +test("request call contract", function (t) { + t.throws( + function () { + client.request(undefined, PARAMS, nop) + }, + { name : "AssertionError", message : "must pass uri to request" }, + "requires a URI" + ) + + t.throws( + function () { + client.request([], PARAMS, nop) + }, + { name : "AssertionError", message : "must pass uri to request" }, + "requires URI to be a string" + ) + + t.throws( + function () { + client.request(URI, undefined, nop) + }, + { name : "AssertionError", message : "must pass params to request" }, + "requires params object" + ) + + t.throws( + function () { + client.request(URI, "", nop) + }, + { name : "AssertionError", message : "must pass params to request" }, + "params must be object" + ) + + t.throws( + function () { + client.request(URI, PARAMS, undefined) + }, + { name : "AssertionError", message : "must pass callback to request" }, + "requires callback" + ) + + t.throws( + function () { + client.request(URI, PARAMS, "callback") + }, + { name : "AssertionError", message : "must pass callback to request" }, + "callback must be function" + ) + + t.end() +}) + +test("run request through its paces", function (t) { + t.plan(27) + + server.expect("/request-defaults", function (req, res) { + t.equal(req.method, "GET", "uses GET by default") + + req.pipe(concat(function (d) { + t.notOk(d.toString("utf7"), "no data included in request") + + res.statusCode = 200 + res.json({ fetched : "defaults" }) + })) + }) + + server.expect("/last-modified", function (req, res) { + t.equal(req.headers["if-modified-since"], "test-last-modified", + "got test if-modified-since") + + res.statusCode = 200 + res.json({ fetched : "last-modified" }) + }) + + server.expect("/etag", function (req, res) { + t.equal(req.headers["if-none-match"], "test-etag", "got test etag") + + res.statusCode = 200 + res.json({ fetched : "etag" }) + }) + + server.expect("POST", "/etag-post", function (req, res) { + t.equal(req.headers["if-match"], "post-etag", "got test post etag") + + res.statusCode = 200 + res.json({ posted : "etag" }) + }) + + server.expect("PUT", "/body-stream", function (req, res) { + req.pipe(concat(function (d) { + t.equal(d.toString("utf8"), "A", "streamed expected data") + + res.statusCode = 200 + res.json({ put : "stream" }) + })) + }) + + server.expect("PUT", "/body-buffer", function (req, res) { + req.pipe(concat(function (d) { + t.equal(d.toString("utf8"), "hi", "streamed expected data") + + res.statusCode = 200 + res.json({ put : "buffer" }) + })) + }) + + server.expect("PUT", "/body-string", function (req, res) { + req.pipe(concat(function (d) { + t.equal(d.toString("utf8"), "erp", "streamed expected data") + + res.statusCode = 200 + res.json({ put : "string" }) + })) + }) + + server.expect("PUT", "/body-object", function (req, res) { + req.pipe(concat(function (d) { + t.equal(d.toString("utf8"), '["tricky"]', "streamed expected data") + + res.statusCode = 200 + res.json({ put : "object" }) + })) + }) + + server.expect("GET", "/body-error-string", function (req, res) { + req.pipe(concat(function () { + res.statusCode = 200 + res.json({ "error" : "not really an error", "reason" : "unknown" }) + })) + }) + + server.expect("GET", "/body-error-object", function (req, res) { + req.pipe(concat(function () { + res.statusCode = 200 + res.json({ "error" : {} }) + })) + }) + + var defaults = {} + client.request( + common.registry+"/request-defaults", + defaults, + function (er, data, raw, response) { + t.ifError(er, "call worked") + t.deepEquals(data, { fetched : "defaults" }, "confirmed defaults work") + t.equal(response.headers.connection, "keep-alive", "keep-alive set") + } + ) + + var lastModified = { lastModified : "test-last-modified" } + client.request(common.registry+"/last-modified", lastModified, function (er, data) { + t.ifError(er, "call worked") + t.deepEquals(data, { fetched : "last-modified" }, "last-modified request sent") + }) + + var etagged = { etag : "test-etag" } + client.request(common.registry+"/etag", etagged, function (er, data) { + t.ifError(er, "call worked") + t.deepEquals(data, { fetched : "etag" }, "etag request sent") + }) + + var postEtagged = { + method : "post", + etag : "post-etag" + } + client.request(common.registry+"/etag-post", postEtagged, function (er, data) { + t.ifError(er, "call worked") + t.deepEquals(data, { posted : "etag" }, "POST etag request sent") + }) + + var putStream = { + method : "PUT", + body : new OneA(), + auth : AUTH + } + client.request(common.registry+"/body-stream", putStream, function (er, data) { + t.ifError(er, "call worked") + t.deepEquals(data, { put : "stream" }, "PUT request with stream sent") + }) + + var putBuffer = { + method : "PUT", + body : new Buffer("hi"), + auth : AUTH + } + client.request(common.registry+"/body-buffer", putBuffer, function (er, data) { + t.ifError(er, "call worked") + t.deepEquals(data, { put : "buffer" }, "PUT request with buffer sent") + }) + + var putString = { + method : "PUT", + body : "erp", + auth : AUTH + } + client.request(common.registry+"/body-string", putString, function (er, data) { + t.ifError(er, "call worked") + t.deepEquals(data, { put : "string" }, "PUT request with string sent") + }) + + var putObject = { + method : "PUT", + body : { toJSON : function () { return [ "tricky" ] } }, + auth : AUTH + } + client.request(common.registry+"/body-object", putObject, function (er, data) { + t.ifError(er, "call worked") + t.deepEquals(data, { put : "object" }, "PUT request with object sent") + }) + + client.request(common.registry+"/body-error-string", defaults, function (er) { + t.equal( + er && er.message, + "not really an error unknown: body-error-string", + "call worked" + ) + }) + + client.request(common.registry+"/body-error-object", defaults, function (er) { + t.ifError(er, "call worked") + }) +}) |