From 5f5e927ebc17ffdf9b6a6c4212b6a354cc43edee Mon Sep 17 00:00:00 2001 From: Eric Satterwhite Date: Fri, 30 Dec 2016 13:18:33 -0600 Subject: [PATCH] adding test for delete route --- test/integration/delete-timer.spec.js | 121 ++++++++++++++++++++++++++ test/integration/post-timer.spec.js | 20 ++++- 2 files changed, 137 insertions(+), 4 deletions(-) create mode 100644 test/integration/delete-timer.spec.js diff --git a/test/integration/delete-timer.spec.js b/test/integration/delete-timer.spec.js new file mode 100644 index 00000000..024df334 --- /dev/null +++ b/test/integration/delete-timer.spec.js @@ -0,0 +1,121 @@ +'use strict'; +const os = require('os') + , http = require('http') + , assert = require('assert') + , uuid = require('uuid') + , supertest = require('supertest') + , Server = require('../../lib') + ; + +describe('skyring:api', function() { + let server, request, hostname; + this.timeout(4000); + before(( done ) => { + const HOST = process.env.TEST_HOST + hostname = HOST ? HOST : os.hostname(); + server = new Server(); + request = supertest('http://localhost:4444') + server.load().listen(4444, null, null, done); + }); + + after(( done ) => { + server.close(done); + }); + + describe('#DELETE /timer/:id', function(){ + let url, callback_server; + beforeEach(( done ) => { + request + .post('/timer') + .send({ + timeout: 1000 + , data: 'hello' + , callback: { + uri: `http://${hostname}:9999` + , method: 'post' + , transport: 'http' + } + }) + .expect(201) + .end(( err, res ) => { + assert.ifError(err); + assert.ok(res.headers.location); + url = res.headers.location; + done(err) + }) + }); + + afterEach(( done ) => { + if( callback_server ){ + return callback_server.close(() => { + callback_server = null + done() + }) + }; + done() + }); + + it('Should cancel an existing timer -202', (done) => { + callback_server = http.createServer((req, res) => { + res.writeHead(500); + res.end(); + const err = new Error('timer should be deleted') + done(err); + }).listen(9999); + + request + .delete(url) + .expect(202) + .end((err, res) => { + assert.ifError(err); + err && console.log(res.headers['x-skyring-reason']) + setTimeout(() => { + done() + }, 1200); + }); + }); // end 202 + + it('should 404 on a time that was previously canceled', ( done ) => { + callback_server = http.createServer((req, res) => { + res.writeHead(500); + res.end(); + const err = new Error('timer should be deleted') + done(err); + }).listen(9999); + + request + .delete(url) + .expect(202) + .end((err, res) => { + err && console.log(res.headers['x-skyring-reason']) + assert.ifError(err); + request + .delete(url) + .expect(404) + .end((err, res) => { + setTimeout(() => { + done() + }, 1200); + }); + }); + }); // end 404 + + it('should 404 on a timer that doesn not exist', ( done ) => { + request + .delete(`/timer/${uuid.v4()}`) + .expect(404) + .end((err, res) => { + err && console.log(res.headers['x-skyring-reason']) + assert.ifError(err); + request + .delete(url) + .expect(404) + .end((err, res) => { + setTimeout(() => { + done() + }, 1200); + }); + }); + }) + }); +}); diff --git a/test/integration/post-timer.spec.js b/test/integration/post-timer.spec.js index b4f30509..03164909 100644 --- a/test/integration/post-timer.spec.js +++ b/test/integration/post-timer.spec.js @@ -1,4 +1,4 @@ -'user strict' +'user strict'; const http = require('http') , assert = require('assert') , supertest = require('supertest') @@ -106,7 +106,7 @@ describe('skyring:api', function() { .expect(400) .end((err, res) => { assert.equal(typeof res.headers['x-skyring-reason'], 'string') - done() + done() }); }); @@ -124,7 +124,7 @@ describe('skyring:api', function() { .expect(400) .end((err, res) => { assert.equal(typeof res.headers['x-skyring-reason'], 'string') - done() + done() }); }); @@ -141,7 +141,19 @@ describe('skyring:api', function() { .expect(400) .end((err, res) => { assert.equal(typeof res.headers['x-skyring-reason'], 'string') - done() + done() + }); + }); + it('should not allow request with no callback - (400)', (done) => { + request + .post('/timer') + .send({ + timeout:1000 + , data: 'hello' + }) + .expect(400) + .end((err, res) => { + done() }); });