-
-
Notifications
You must be signed in to change notification settings - Fork 64
Closed
Description
Prerequisites
- I have written a descriptive issue title
- I have searched existing issues to ensure the regression has not already been reported
Last working version
8.x.x
Stopped working in version
9.x.x
Node.js version
any
Operating system
Linux
Operating system version (i.e. 20.04, 11.3, 10)
any
💥 Regression Report
this testcase has two different origins (example.com and sample.com):
fastify-cors/test/cors.test.js
Lines 126 to 221 in 3cf8f61
test('Should support dynamic config (callback)', t => { | |
t.plan(18) | |
const configs = [{ | |
origin: 'example.com', | |
methods: 'GET', | |
credentials: true, | |
exposedHeaders: ['foo', 'bar'], | |
allowedHeaders: ['baz', 'woo'], | |
maxAge: 123, | |
cacheControl: 456 | |
}, { | |
origin: 'sample.com', | |
methods: 'GET', | |
credentials: true, | |
exposedHeaders: ['zoo', 'bar'], | |
allowedHeaders: ['baz', 'foo'], | |
maxAge: 321, | |
cacheControl: '456' | |
}] | |
const fastify = Fastify() | |
let requestId = 0 | |
const configDelegation = function (req, cb) { | |
// request should have id | |
t.ok(req.id) | |
// request should not have send | |
t.notOk(req.send) | |
const config = configs[requestId] | |
requestId++ | |
if (config) { | |
cb(null, config) | |
} else { | |
cb(new Error('ouch')) | |
} | |
} | |
fastify.register(cors, () => configDelegation) | |
fastify.get('/', (req, reply) => { | |
reply.send('ok') | |
}) | |
fastify.inject({ | |
method: 'GET', | |
url: '/' | |
}, (err, res) => { | |
t.error(err) | |
delete res.headers.date | |
t.equal(res.statusCode, 200) | |
t.equal(res.payload, 'ok') | |
t.match(res.headers, { | |
'access-control-allow-origin': 'example.com', | |
'access-control-allow-credentials': 'true', | |
'access-control-expose-headers': 'foo, bar', | |
'content-length': '2' | |
}) | |
t.notMatch(res.headers, { vary: 'Origin' }) | |
}) | |
fastify.inject({ | |
method: 'OPTIONS', | |
url: '/', | |
headers: { | |
'access-control-request-method': 'GET', | |
origin: 'example.com' | |
} | |
}, (err, res) => { | |
t.error(err) | |
delete res.headers.date | |
t.equal(res.statusCode, 204) | |
t.equal(res.payload, '') | |
t.match(res.headers, { | |
'access-control-allow-origin': 'sample.com', | |
'access-control-allow-credentials': 'true', | |
'access-control-expose-headers': 'zoo, bar', | |
'access-control-allow-methods': 'GET', | |
'access-control-allow-headers': 'baz, foo', | |
'access-control-max-age': '321', | |
'cache-control': '456', | |
'content-length': '0' | |
}) | |
t.notMatch(res.headers, { vary: 'Origin' }) | |
}) | |
fastify.inject({ | |
method: 'GET', | |
url: '/', | |
headers: { | |
'access-control-request-method': 'GET', | |
origin: 'example.com' | |
} | |
}, (err, res) => { | |
t.error(err) | |
t.equal(res.statusCode, 500) | |
}) | |
}) |
But does not add the Vary: origin header.
Steps to Reproduce
add expectation that the vary header exists back to that test (and the other tests with config delegation changed in #288)
Expected Behavior
No response
Metadata
Metadata
Assignees
Labels
No labels