UNPKG

3.23 kBJavaScriptView Raw
1"use strict";
2
3var request = require('supertest'),
4 canned = require("../"),
5 expect = require("chai").expect;
6
7describe("CRUD API", function() {
8
9 var server;
10
11 beforeEach(function() {
12 server = canned().init(__dirname + "/fixtures/responses.js");
13 });
14
15 it("should return all stored canned responses", function(done) {
16 request(server)
17 .get('/__canned_responses__/data')
18 .expect('Content-Type', /json/)
19 .expect(200, [
20 { verb : "GET", url : "/people", resp : [ { name : "Euge" }, { name : "Bob" } ] },
21 { verb : "GET", url : "/people/1", resp : { name : "Euge", address : "1234 Main St." } },
22 { verb : "POST", url : "/people", resp : { name : "Bob", id : 10 } },
23 { verb : "PUT", url : "/people/10", resp : { name : "NotBob", id : 10 } },
24 { verb : "DELETE", url : "/people/10", resp : {} }
25 ], done);
26 });
27
28 it("should add a new canned response", function(done) {
29 var cannedWidgetsIndex = [ { id : "foo" }, { id : "bar" } ];
30
31 // add a new canned response
32 request(server)
33 .post('/__canned_responses__/data')
34 .send({ verb: 'GET', url : "/widgets", resp : cannedWidgetsIndex })
35 .end(function(err, res) {
36 expect(res.status).to.equal(200);
37 expect(res.body).to.deep.equal({
38 verb: 'GET',
39 url : "/widgets",
40 resp : cannedWidgetsIndex,
41 id : encodeURIComponent("GET-/widgets")
42 });
43
44 // verify we can access it
45 request(server)
46 .get('/widgets')
47 .expect(200, cannedWidgetsIndex, done);
48 });
49 });
50
51 it("should delete an existing canned response", function(done) {
52 // delete a canned response
53 request(server)
54 .del('/__canned_responses__/data/' + encodeURIComponent("GET-/people"))
55 .end(function(err, res) {
56 expect(res.status).to.equal(200);
57
58 // verify we can't access it anymore
59 request(server)
60 .get('/people')
61 .expect(404, done);
62 });
63 });
64});
65
66describe("Actual canned responses", function() {
67
68 var server;
69
70 before(function() {
71 server = canned().init(__dirname + "/fixtures/responses.js");
72 });
73
74 describe("should respond with a 200 when there is a match", function(){
75
76 it("GET", function(done) {
77 request(server)
78 .get('/people')
79 .expect('Content-Type', /json/)
80 .expect(200, [ { name : "Euge" }, { name : "Bob" } ], done);
81 });
82
83 it("POST", function(done) {
84 request(server)
85 .post('/people')
86 .send({ name : "Bob" })
87 .expect('Content-Type', /json/)
88 .expect(200, { name : "Bob", id : 10 }, done);
89 });
90
91 it("PUT", function(done) {
92 request(server)
93 .put('/people/10')
94 .send({ name : "NotBob" })
95 .expect('Content-Type', /json/)
96 .expect(200, { name : "NotBob", id : 10 }, done);
97 });
98
99 it("DELTE", function(done) {
100 request(server)
101 .del('/people/10')
102 .expect('Content-Type', /json/)
103 .expect(200, { }, done);
104 });
105 });
106
107 it("should respond with a 404 when there is no match", function(done) {
108 request(server)
109 .get('/not_here')
110 .expect(404, done);
111 });
112
113
114});
115