diff --git a/package.json b/package.json index e629e0b..0c4726d 100644 --- a/package.json +++ b/package.json @@ -26,11 +26,14 @@ } , "dependencies": {} , "devDependencies": { - "mocha": "latest" - , "should": "latest" + "express": "*" + , "lint": "*" + , "mocha": "*" + , "should": "*" + , "supertest": "*" } , "scripts": { "test": "mocha" - , "lint": "node-lint lib test" + , "lint": "./node_modules/lint/bin/node-lint lib test" } } diff --git a/test/example-app.js b/test/example-app.js new file mode 100644 index 0000000..82a526c --- /dev/null +++ b/test/example-app.js @@ -0,0 +1,95 @@ +/*jslint nodejs: true*/ +/*global describe: true, it: true*/ + +'use strict'; + +var should = require('should'), + express = require('express'), + supertest = require('supertest'), + cors = require('../lib'); + +/* -------------------------------------------------------------------------- */ + +var simpleApp = express(); +simpleApp.get('/', cors(), function(req, res){ + res.send('Hello World (Get)'); +}); +simpleApp.head('/', cors(), function(req, res){ + res.send(204); +}); +simpleApp.post('/', cors(), function(req, res){ + res.send('Hello World (Post)'); +}); + +/* -------------------------------------------------------------------------- */ + +var complexApp = express(); +complexApp.all('/', cors(), function(req, res, next){ + next(); +}); +complexApp.del('/', cors(), function(req, res){ + res.send('Hello World (Delete)'); +}); + +/* -------------------------------------------------------------------------- */ + +describe('example app(s)', function(){ + describe('simple methods', function(){ + it('GET works', function(done){ + supertest(simpleApp) + .get('/') + .expect(200) + .end(function(err, res){ + should.not.exist(err); + res.headers['access-control-allow-origin'].should.eql('*'); + res.text.should.eql('Hello World (Get)'); + done(); + }); + }); + it('HEAD works', function(done){ + supertest(simpleApp) + .head('/') + .expect(204) + .end(function(err, res){ + should.not.exist(err); + res.headers['access-control-allow-origin'].should.eql('*'); + done(); + }); + }); + it('POST works', function(done){ + supertest(simpleApp) + .post('/') + .expect(200) + .end(function(err, res){ + should.not.exist(err); + res.headers['access-control-allow-origin'].should.eql('*'); + res.text.should.eql('Hello World (Post)'); + done(); + }); + }); + }); + + describe('complex methods', function(){ + it('OPTIONS works', function(done){ + supertest(complexApp) + .options('/') + .expect(204) + .end(function(err, res){ + should.not.exist(err); + res.headers['access-control-allow-origin'].should.eql('*'); + done(); + }); + }); + it('DELETE works', function(done){ + supertest(complexApp) + .del('/') + .expect(200) + .end(function(err, res){ + should.not.exist(err); + res.headers['access-control-allow-origin'].should.eql('*'); + res.text.should.eql('Hello World (Delete)'); + done(); + }); + }); + }); +}); diff --git a/test/issue-2.js b/test/issue-2.js new file mode 100644 index 0000000..43946e0 --- /dev/null +++ b/test/issue-2.js @@ -0,0 +1,40 @@ +/*jslint nodejs: true*/ +/*global describe: true, it: true*/ + +'use strict'; + +var should = require('should'), + express = require('express'), + supertest = require('supertest'), + cors = require('../lib'); + +/* -------------------------------------------------------------------------- */ + +var app = express(), + corsOptions = { + origin: true, + methods: ['POST'], + credentials: true, + maxAge: 3600, + enablePreflight: true + }; +app.post('/api/login', cors(corsOptions), function(req, res){ + res.send('LOGIN'); +}); + +/* -------------------------------------------------------------------------- */ + +describe('issue #2', function(){ + it('is fixed', function(done){ + supertest(app) + .post('/api/login') + .expect(200) + .end(function(err, res){ + should.not.exist(err); + console.log(res.headers); + res.headers['access-control-allow-origin'].should.eql('*'); + res.text.should.eql('LOGIN'); + done(); + }); + }); +});