import { describe, expect, it } from 'vitest';

import { nextAuthSuccessState, safeInternalPath } from '../../src/frontend/auth/auth-model.js';

describe('authentication next path', () => {
  it('restores a filtered internal deep link after login', () => {
    expect(nextAuthSuccessState('/api/login', {}, '/activity?status=failed&page=2').redirectTo)
      .toBe('/activity?status=failed&page=2');
  });

  it.each([
    'https://attacker.example/path',
    '//attacker.example/path',
    '/\\attacker.example/path',
    '/login',
    '/api/events',
    'javascript:alert(1)'
  ])('rejects unsafe destination %s', (value) => {
    expect(safeInternalPath(value, '/overview')).toBe('/overview');
  });
});
