Files
supabase/apps/www/middleware.test.ts
T

88 lines
2.8 KiB
TypeScript

import { NextRequest } from 'next/server'
import { describe, expect, it } from 'vitest'
import { FIRST_REFERRER_COOKIE_NAME } from 'common/first-referrer-cookie'
import { middleware } from './middleware'
function makeRequest(
url: string,
{ referer, hasCookie }: { referer?: string; hasCookie?: boolean } = {}
): NextRequest {
const req = new NextRequest(new URL(url, 'https://supabase.com'), {
headers: referer ? { referer } : {},
})
if (hasCookie) {
req.cookies.set(FIRST_REFERRER_COOKIE_NAME, 'existing')
}
return req
}
describe('www middleware', () => {
describe('cookie stamping on www paths', () => {
it('stamps cookie for external referrer on www path', () => {
const req = makeRequest('/pricing', { referer: 'https://google.com' })
const res = middleware(req)
expect(res.cookies.get(FIRST_REFERRER_COOKIE_NAME)).toBeDefined()
})
it('does not stamp cookie for internal referrer', () => {
const req = makeRequest('/pricing', { referer: 'https://supabase.com/docs' })
const res = middleware(req)
expect(res.cookies.get(FIRST_REFERRER_COOKIE_NAME)).toBeUndefined()
})
})
describe('cookie stamping on /dashboard paths', () => {
it('stamps cookie for external referrer', () => {
const req = makeRequest('/dashboard/project/123', { referer: 'https://google.com' })
const res = middleware(req)
expect(res.cookies.get(FIRST_REFERRER_COOKIE_NAME)).toBeDefined()
})
it('does not stamp cookie for internal referrer', () => {
const req = makeRequest('/dashboard/project/123', {
referer: 'https://supabase.com/pricing',
})
const res = middleware(req)
expect(res.cookies.get(FIRST_REFERRER_COOKIE_NAME)).toBeUndefined()
})
it('does not stamp cookie for direct navigation (no referrer)', () => {
const req = makeRequest('/dashboard/project/123')
const res = middleware(req)
expect(res.cookies.get(FIRST_REFERRER_COOKIE_NAME)).toBeUndefined()
})
})
describe('cookie stamping on /docs paths', () => {
it('stamps cookie for external referrer', () => {
const req = makeRequest('/docs/guides/auth', { referer: 'https://google.com' })
const res = middleware(req)
expect(res.cookies.get(FIRST_REFERRER_COOKIE_NAME)).toBeDefined()
})
it('does not stamp cookie for internal referrer', () => {
const req = makeRequest('/docs/guides/auth', {
referer: 'https://supabase.com/pricing',
})
const res = middleware(req)
expect(res.cookies.get(FIRST_REFERRER_COOKIE_NAME)).toBeUndefined()
})
it('does not stamp cookie for direct navigation (no referrer)', () => {
const req = makeRequest('/docs/guides/auth')
const res = middleware(req)
expect(res.cookies.get(FIRST_REFERRER_COOKIE_NAME)).toBeUndefined()
})
})
})