import { describe, it, expect } from 'vitest';
import { readFileSync } from 'fs';
import { existsSync } from 'fs';

describe('Documentation - Security and API Keys', () => {
  // SECURITY.md tests
  it('SECURITY.md exists and contains "Reporting Security Vulnerabilities"', () => {
    expect(existsSync('./SECURITY.md')).toBe(true);
    const content = readFileSync('./SECURITY.md', 'utf-8');
    expect(content).toContain('Reporting Security Vulnerabilities');
  });

  it('SECURITY.md contains "Environment Variables & Secrets" section', () => {
    const content = readFileSync('./SECURITY.md', 'utf-8');
    expect(content).toContain('Environment Variables & Secrets');
  });

  it('SECURITY.md contains "Input Validation & Sanitization" section', () => {
    const content = readFileSync('./SECURITY.md', 'utf-8');
    expect(content).toContain('Input Validation & Sanitization');
  });

  it('SECURITY.md contains "Rate Limiting" section', () => {
    const content = readFileSync('./SECURITY.md', 'utf-8');
    expect(content).toContain('Rate Limiting');
  });

  it('SECURITY.md contains "Database Security" section', () => {
    const content = readFileSync('./SECURITY.md', 'utf-8');
    expect(content).toContain('Database Security');
  });

  // docs/API_KEYS.md tests
  it('docs/API_KEYS.md exists and contains "IGDB" section', () => {
    expect(existsSync('./docs/API_KEYS.md')).toBe(true);
    const content = readFileSync('./docs/API_KEYS.md', 'utf-8');
    expect(content).toContain('IGDB');
  });

  it('docs/API_KEYS.md contains "RAWG" section', () => {
    const content = readFileSync('./docs/API_KEYS.md', 'utf-8');
    expect(content).toContain('RAWG');
  });

  it('docs/API_KEYS.md contains "TheGamesDB" section', () => {
    const content = readFileSync('./docs/API_KEYS.md', 'utf-8');
    expect(content).toContain('TheGamesDB');
  });

  it('docs/API_KEYS.md contains step-by-step instructions', () => {
    const content = readFileSync('./docs/API_KEYS.md', 'utf-8');
    expect(content).toMatch(/steps?|step-by-step|guide/i);
  });

  // README.md tests
  it('README.md contains link to SECURITY.md', () => {
    const content = readFileSync('./README.md', 'utf-8');
    expect(content).toMatch(/SECURITY\.md|security/i);
  });

  it('README.md contains link to docs/API_KEYS.md', () => {
    const content = readFileSync('./README.md', 'utf-8');
    expect(content).toMatch(/API_KEYS\.md|api.*key|obtaining.*key/i);
  });

  it('README.md mentions .env.example template', () => {
    const content = readFileSync('./README.md', 'utf-8');
    expect(content).toMatch(/\.env|environment.*variable/i);
  });
});
