@revoloo/cypress6
Version:
Cypress.io end to end testing tool
131 lines (106 loc) • 2.48 kB
text/typescript
import cors from 'cors'
import parser from 'cookie-parser'
import session from 'express-session'
import e2e from '../support/helpers/e2e'
const onServer = function (app) {
app.use(parser())
app.use((req, res, next) => {
console.log('** REQUEST HEADERS ARE', req.url, req.headers)
return next()
})
const getIndex = () => {
return `\
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<ul>
<li>
<a href="http://help.foobar.com:2292">switch to http://help.foobar.com</a>
</li>
</ul>
</body>
</html>\
`
}
const getText = (text) => {
return `\
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>${text}</h1>
</body>
</html>\
`
}
const applySession = session({
name: 'secret-session',
secret: 'secret',
cookie: {
sameSite: true,
},
}) as Function
app.get('/htmlCookies', (req, res) => {
const {
cookie,
} = req.headers
return res.send(`<html><div id='cookie'>${cookie}</div></html>`)
})
app.get('/cookies*', cors({ origin: true, credentials: true }), (req, res) => {
return res.json({
cookie: req.headers['cookie'],
parsed: req.cookie,
})
})
app.get('/redirect', (req, res) => {
return res.redirect('http://www.foobar.com:2292/cookies')
})
app.get('/domainRedirect', (req, res) => {
return res.redirect('http://www.foobar.com:2292/htmlCookies')
})
return app.get('*', (req, res, next) => {
res.set('Content-Type', 'text/html')
const getHtml = () => {
let h
switch ((h = req.get('host'))) {
case 'www.foobar.com:2292':
return getIndex()
case 'help.foobar.com:2292':
return getText('Help')
case 'session.foobar.com:2292':
applySession(req, res, next)
return getText('Session')
case 'domain.foobar.com:2292':
res.cookie('nomnom', 'good', {
domain: '.foobar.com',
})
return getText('Domain')
case 'qa.sub.foobar.com:2292': case 'staging.sub.foobar.com:2292':
return getText('Nested Subdomains')
default:
throw new Error(`Host: '${h}' not recognized`)
}
}
return res.send(getHtml())
})
}
describe('e2e subdomain', () => {
e2e.setup({
servers: {
port: 2292,
onServer,
},
})
e2e.it('passes', {
spec: 'subdomain_spec.js',
snapshot: true,
config: {
hosts: {
'*.foobar.com': '127.0.0.1',
},
},
})
})