UNPKG

3.6 kBJavaScriptView Raw
1require("./common");
2var LastFmRequest = require("lastfm/lastfm-request");
3var fakes = require("./fakes");
4
5(function() {
6 describe("a LastFm request")
7
8 var lastfm, connection, url, gently, request;
9
10 before(function() {
11 lastfm = new LastFmNode();
12 connection = new fakes.Client(80, lastfm.host);
13 request = new fakes.ClientRequest();
14 gently = new Gently();
15 gently.expect(GENTLY_HIJACK.hijacked.http, "createClient", function() {
16 return connection;
17 });
18 });
19
20 it("creates a get request", function() {
21 gently.expect(connection, "request", function(method, url, options) {
22 assert.equal("GET", method);
23 assert.equal(lastfm.host, options.host);
24 return request;
25 });
26 var lastfmRequest = new LastFmRequest(lastfm, "any.method");
27 });
28
29 it("ends the request", function() {
30 gently.expect(connection, "request", function() {
31 return request;
32 });
33 gently.expect(request, "end");
34 var lastfmRequest = new LastFmRequest(lastfm);
35 });
36
37 it("emits data received when response is complete", function() {
38 var chunkOne = "test";
39 var chunkTwo = "data";
40 gently.expect(connection, "request", function() {
41 return request;
42 });
43 var lastfmRequest = new LastFmRequest(lastfm);
44 gently.expect(lastfmRequest, "emit", function(event, data) {
45 assert.equal("success", event);
46 assert.equal(chunkOne + chunkTwo, data);
47 });
48 var response = new fakes.ClientResponse();
49 request.emit("response", response);
50 response.emit("data", chunkOne);
51 response.emit("data", chunkTwo);
52 response.emit("end");
53 });
54
55 it("bubbles up connection errors", function() {
56 var message = "Bubbled error";
57 gently.expect(connection, "request", function() {
58 return request;
59 });
60 var lastfmRequest = new LastFmRequest(lastfm);
61 gently.expect(lastfmRequest, "emit", function(event, error) {
62 assert.equal("error", event);
63 assert.equal(message, error.message);
64 });
65 connection.emit("error", new Error(message));
66 });
67})();
68
69(function() {
70 describe("a LastFm request with a body")
71
72 var lastfm, connection, url, gently, request, params;
73
74 before(function() {
75 lastfm = new LastFmNode();
76 connection = new fakes.Client(80, lastfm.host);
77 request = new fakes.ClientRequest();
78 gently = new Gently();
79 params = { foo:"bar" };
80 gently.expect(GENTLY_HIJACK.hijacked.http, "createClient", function() {
81 return connection;
82 });
83 });
84
85 it("write parameter forces a post request", function() {
86 gently.expect(connection, "request", function(method, url, options) {
87 assert.equal("POST", method);
88 assert.equal(lastfm.url, url);
89 assert.equal(lastfm.host, options.host);
90 return request;
91 });
92 params.write = true;
93 var lastFmRequest = new LastFmRequest(lastfm, "any.method", params);
94 });
95
96 it("post requests includes additional headers", function() {
97 gently.expect(connection, "request", function(method, url, options) {
98 assert.ok(options["Content-Length"]);
99 assert.equal("application/x-www-form-urlencoded", options["Content-Type"]);
100 return request;
101 });
102 params.write = true;
103 var lastFmRequest = new LastFmRequest(lastfm, "any.method", params);
104 });
105
106 it("writes body to request", function() {
107 gently.expect(connection, "request", function() {
108 return request;
109 });
110 gently.expect(request, "write", function(data) {
111 assert.ok(data);
112 });
113 params.write = true;
114 var lastFmRequest = new LastFmRequest(lastfm, "any.method", params);
115 });
116})();