|
3 | 3 | const assert = require('assert'); |
4 | 4 | const Koa = require('koa'); |
5 | 5 | const request = require('supertest'); |
6 | | -const cors = require('../'); |
| 6 | +const cors = require('..'); |
7 | 7 |
|
8 | 8 | describe('cors.test.js', function() { |
9 | 9 | describe('default options', function() { |
@@ -167,6 +167,46 @@ describe('cors.test.js', function() { |
167 | 167 | }); |
168 | 168 | }); |
169 | 169 |
|
| 170 | + describe('options.origin=promise', function() { |
| 171 | + const app = new Koa(); |
| 172 | + app.use(cors({ |
| 173 | + origin(ctx) { |
| 174 | + return new Promise(resolve => { |
| 175 | + setTimeout(() => { |
| 176 | + if (ctx.url === '/forbin') { |
| 177 | + return resolve(false); |
| 178 | + } |
| 179 | + return resolve('*'); |
| 180 | + }, 100); |
| 181 | + }); |
| 182 | + }, |
| 183 | + })); |
| 184 | + app.use(function(ctx) { |
| 185 | + ctx.body = { foo: 'bar' }; |
| 186 | + }); |
| 187 | + |
| 188 | + it('should disable cors', function(done) { |
| 189 | + request(app.listen()) |
| 190 | + .get('/forbin') |
| 191 | + .set('Origin', 'http://koajs.com') |
| 192 | + .expect({ foo: 'bar' }) |
| 193 | + .expect(200, function(err, res) { |
| 194 | + assert(!err); |
| 195 | + assert(!res.headers['access-control-allow-origin']); |
| 196 | + done(); |
| 197 | + }); |
| 198 | + }); |
| 199 | + |
| 200 | + it('should set access-control-allow-origin to *', function(done) { |
| 201 | + request(app.listen()) |
| 202 | + .get('/') |
| 203 | + .set('Origin', 'http://koajs.com') |
| 204 | + .expect({ foo: 'bar' }) |
| 205 | + .expect('Access-Control-Allow-Origin', '*') |
| 206 | + .expect(200, done); |
| 207 | + }); |
| 208 | + }); |
| 209 | + |
170 | 210 | describe('options.origin=async function', function() { |
171 | 211 | const app = new Koa(); |
172 | 212 | app.use(cors({ |
|
0 commit comments