import { describe, expect, test } from 'vitest' import { languageKeys } from '@/languages/lib/languages-server' import { get } from '@/tests/helpers/e2etest' import { USER_LANGUAGE_COOKIE_NAME } from '@/frame/lib/constants' const langs = languageKeys.filter((lang) => lang !== 'en') describe('redirects', () => { test.each(langs)('redirects to %s if accept-language', async (lang) => { const acceptLanguage = lang === 'zh' ? 'zh-CN' : lang const res = await get('/get-started', { headers: { 'accept-language': acceptLanguage }, followRedirects: false, }) expect(res.statusCode).toBe(302) expect(res.headers.location).toBe(`/${lang}/get-started`) expect(res.headers['cache-control']).toContain('public') expect(res.headers['cache-control']).toMatch(/max-age=\d+/) expect(res.headers['set-cookie']).toBeUndefined() }) test.each(langs)('redirects to %s if USER_LANGUAGE_COOKIE_NAME', async (lang) => { const res = await get('/get-started', { headers: { 'accept-language': 'en', Cookie: `${USER_LANGUAGE_COOKIE_NAME}=${lang}`, }, followRedirects: false, }) expect(res.statusCode).toBe(302) expect(res.headers.location).toBe(`/${lang}/get-started`) expect(res.headers['cache-control']).toContain('public') expect(res.headers['cache-control']).toMatch(/max-age=\d+/) expect(res.headers['set-cookie']).toBeUndefined() }) test.each([ ['/jp', '/ja'], ['/br', '/pt'], ['/zh-CN', '/zh'], ['/kr', '/ko'], ])('redirects %s to %s', async (from, to_) => { const res = await get(from) expect(res.statusCode).toBe(301) expect(res.headers['cache-control']).toMatch(/max-age=\d+/) expect(res.headers.location).toBe(to_) }) })