diff --git a/spec/meta_test.js b/spec/meta_test.js index 264e8d226526e89c1eb3517681f531cae4f62606..4ff9221bd67a5a69d45ab55028387c3d3cf24edd 100644 --- a/spec/meta_test.js +++ b/spec/meta_test.js @@ -73,6 +73,7 @@ describe('Responses contain custom headers', function () { }) it('does not have metadata from ui service when unavailable', async function () { + await import('../src/cache.js').then(({ clear }) => clear()) const response = await request(app).get('/meta') expect(response.statusCode).to.equal(200) expect(response.body).to.not.deep.contain({ @@ -81,4 +82,36 @@ describe('Responses contain custom headers', function () { }) }) }) + + describe('without redis disabled', function () { + let prevConfig + + beforeEach(async function () { + td.reset() + mockConfig({ urls: ['http://ui-server/'] }) + mockFetch(fetchConfig = { + 'http://ui-server': { + '/manifest.json': generateSimpleViteManifest({ + 'example.js': {} + }), + '/example.js': () => new Response('this is example', { headers: { 'content-type': 'application/javascript' } }), + '/meta.json': { name: 'sample-service', version: '1.0' } + } + }) + app = await mockApp() + }) + + afterEach(function () { + fetchConfig['http://ui-server'] = prevConfig + }) + + it('has metadata', async function () { + const response = await request(app).get('/meta') + expect(response.statusCode).to.equal(200) + expect(response.body).to.deep.contain({ + name: 'sample-service', + version: '1.0' + }) + }) + }) }) diff --git a/src/cache.js b/src/cache.js index 523b798b3f2004f992caafc299d811b18f1f7ddd..a781e291a7f6aa8449006c082cba1947efe75953 100644 --- a/src/cache.js +++ b/src/cache.js @@ -14,6 +14,12 @@ export async function getBuffer (key) { return get(key, { method: 'getBuffer' }) } +export async function clear () { + for (const prop of Object.getOwnPropertyNames(cache)) { + delete cache[prop] + } +} + export async function get (key, { method = 'get' } = {}) { if (cache[key]) return cache[key] diff --git a/src/meta.js b/src/meta.js index 5aadcc1db2361bb92d24485e934120a4b6238492..3bc63ab752ee6f2acad705b98e2e095106fe76bd 100644 --- a/src/meta.js +++ b/src/meta.js @@ -1,10 +1,10 @@ import { config } from './config.js' import fetch from 'node-fetch' -import { client } from './redis.js' +import * as cache from './cache.js' import { getRedisKey } from './util.js' export async function getMergedMetadata ({ version }) { - const metadata = await client.get(getRedisKey({ version, name: 'mergedMetadata' })) + const metadata = await cache.get(getRedisKey({ version, name: 'mergedMetadata' })) if (metadata) return JSON.parse(metadata) await config.load() @@ -29,6 +29,6 @@ export async function getMergedMetadata ({ version }) { // only return when contains data const filtered = newMetadata.filter(Boolean) - await client.set(getRedisKey({ version, name: 'mergedMetadata' }), JSON.stringify(filtered)) + await cache.set(getRedisKey({ version, name: 'mergedMetadata' }), JSON.stringify(filtered)) return filtered }