import { expect, test } from '../fixtures' test('owner can open the app but missing or foreign identity is forbidden', async ({ request, }) => { expect((await request.get('/')).status()).toBe(200) expect( ( await request.get('/', { headers: { 'Tailscale-User-Login': '' } }) ).status(), ).toBe(403) expect( ( await request.get('/', { headers: { 'Tailscale-User-Login': 'other@twitter-lite.invalid' }, }) ).status(), ).toBe(403) }) test('mutations require exact Origin even with same-origin Fetch Metadata', async ({ request, }) => { expect((await request.post('/')).status()).toBe(403) expect( ( await request.post('/', { headers: { Origin: 'https://other.invalid', 'Sec-Fetch-Site': 'same-origin', }, }) ).status(), ).toBe(403) }) test('server functions also reject foreign identity and cross-site calls', async ({ page, request, }) => { const serverRequest = page.waitForRequest((request) => request.url().includes('/_serverFn/'), ) await page.goto('/deck') const url = (await serverRequest).url() expect( ( await request.get(url, { headers: { 'Tailscale-User-Login': 'other@twitter-lite.invalid', 'Sec-Fetch-Site': 'same-origin', }, }) ).status(), ).toBe(403) expect( ( await request.get(url, { headers: { 'Sec-Fetch-Site': 'cross-site' }, }) ).status(), ).toBe(403) })