| import { afterAll, afterEach, describe, expect, it } from 'vitest'; | |
| import wait from '@/utils/wait'; | |
| process.env.NODE_NAME = 'mock'; | |
| process.env.ALLOW_ORIGIN = 'rsshub.mock'; | |
| let etag; | |
| afterEach(async () => { | |
| await wait(1000); | |
| }); | |
| afterAll(() => { | |
| delete process.env.NODE_NAME; | |
| delete process.env.ALLOW_ORIGIN; | |
| }); | |
| describe('header', () => { | |
| it(`header`, async () => { | |
| const app = (await import('@/app')).default; | |
| const { config } = await import('@/config'); | |
| const response = await app.request('/test/1'); | |
| expect(response.headers.get('access-control-allow-origin')).toBe('rsshub.mock'); | |
| expect(response.headers.get('access-control-allow-methods')).toBe('GET'); | |
| expect(response.headers.get('content-type')).toBe('application/xml; charset=utf-8'); | |
| expect(response.headers.get('cache-control')).toBe(`public, max-age=${config.cache.routeExpire}`); | |
| expect(response.headers.get('last-modified')).toBe((await response.text()).match(/<lastBuildDate>(.*)<\/lastBuildDate>/)?.[1]); | |
| expect(response.headers.get('rsshub-node')).toBe('mock'); | |
| expect(response.headers.get('etag')).not.toBe(undefined); | |
| etag = response.headers.get('etag'); | |
| expect(response.headers.get('x-rsshub-route')).toBe('/test/:id/:params?'); | |
| }); | |
| it(`etag`, async () => { | |
| const app = (await import('@/app')).default; | |
| const response = await app.request('/test/1', { | |
| headers: { | |
| 'If-None-Match': etag, | |
| }, | |
| }); | |
| expect(response.status).toBe(304); | |
| expect(await response.text()).toBe(''); | |
| expect(response.headers.get('last-modified')).toBe(null); | |
| }); | |
| }); | |