-
richard.petersen authored
Fixes #6
richard.petersen authoredFixes #6
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
headers_test.js 2.05 KiB
import { describe, it, expect, beforeAll, afterAll, beforeEach, afterEach } from '@jest/globals'
import mockfs from 'mock-fs'
import request from 'supertest'
import { createApp } from '../src/createApp'
import { createMockServer, generateSimpleViteManifest, getRandomPort } from './util.js'
describe('Responses contain custom headers', () => {
let app
let mockserver
const port = getRandomPort()
beforeAll(() => {
mockfs({
'./config': {
'config.yaml': `baseUrls:
- http://localhost:${port}`
}
})
app = createApp()
})
afterAll(() => {
mockfs.restore()
})
beforeEach(async () => {
mockserver = await createMockServer({ port })
mockserver.respondWith({
'/manifest.json': generateSimpleViteManifest({
'example.js': {},
'main.css': {},
'index.html': {
file: 'index.html.js',
isEntry: true,
imports: ['example.js'],
css: ['main.css']
}
}),
'/example.js': (req, res) => res.setHeader('content-type', 'application/javascript').status(200).send('this is example'),
'/index.html.js': (req, res) => res.setHeader('content-type', 'application/javascript').status(200).send('this is index.html.js'),
'/main.css': (req, res) => res.setHeader('content-type', 'text/css').status(200).send('.foo { color: #000; }'),
'/index.html': (req, res) => res.setHeader('content-type', 'text/html').status(200).send('<html><head></head><body>it\'s me</body></html>')
})
await request(app).get('/ready')
})
afterEach(() => {
mockserver.close()
process.env.CACHE_TTL = 30000
})
it('index.html has version', async () => {
const response = await request(app).get('/index.html')
expect(response.statusCode).toBe(200)
expect(response.headers.version).toMatch(/\d*\.\d*/)
})
it('javascript file contains dependencies', async () => {
const response = await request(app).get('/index.html.js')
expect(response.statusCode).toBe(200)
expect(response.headers.dependencies).toEqual('main.css')
})
})