import request from 'supertest' import { brotliParser, generateSimpleViteManifest, mockApp, mockConfig, mockFetch, mockRedis } from './util.js' import { expect } from 'chai' import * as td from 'testdouble' import RedisMock from 'ioredis-mock' describe('Salt', function () { let app let config beforeEach(async function () { mockConfig(config = { baseUrls: ['http://ui-server/'] }) mockRedis() mockFetch({ 'http://ui-server': { '/manifest.json': generateSimpleViteManifest({ 'example.js': 'test' }), '/example.js': '' } }) app = await mockApp() }) afterEach(async function () { td.reset() await new RedisMock().flushdb() }) it('change version when salt changes', async function () { const response = await request(app.server).get('/manifests').parse(brotliParser) expect(response.statusCode).to.equal(200) expect(response.headers.version).to.equal('1916675216') // update salt config.salt = '1' await import('../src/version.js').then(async ({ updateVersionProcessor }) => { // need to process two times to actually trigger the update await updateVersionProcessor() await updateVersionProcessor() }) const responseAfterUpdate = await request(app.server).get('/manifests').parse(brotliParser) expect(responseAfterUpdate.statusCode).to.equal(200) expect(responseAfterUpdate.headers.version).to.equal('1916675216-1') }) })