import test from 'node:test'; import assert from 'node:assert/strict'; import { isAllowedAnilistExternalUrl, isAllowedAnilistSetupNavigationUrl, } from './anilist-url-guard'; test('allows only AniList https URLs for external opens', () => { assert.equal(isAllowedAnilistExternalUrl('https://anilist.co'), true); assert.equal(isAllowedAnilistExternalUrl('https://www.anilist.co/settings/developer'), true); assert.equal(isAllowedAnilistExternalUrl('http://anilist.co'), false); assert.equal(isAllowedAnilistExternalUrl('https://example.com'), false); assert.equal(isAllowedAnilistExternalUrl('file:///tmp/test'), false); assert.equal(isAllowedAnilistExternalUrl('not a url'), false); }); test('allows only AniList https or data URLs for setup navigation', () => { assert.equal( isAllowedAnilistSetupNavigationUrl('https://anilist.co/api/v2/oauth/authorize'), true, ); assert.equal( isAllowedAnilistSetupNavigationUrl('data:text/html;charset=utf-8,%3Chtml%3E%3C%2Fhtml%3E'), true, ); assert.equal(isAllowedAnilistSetupNavigationUrl('https://example.com/redirect'), false); assert.equal(isAllowedAnilistSetupNavigationUrl('javascript:alert(1)'), false); });