import { simulateLatency } from '../serviceUtils';

/**
 * Mock de autenticação para desenvolvimento offline.
 * Simula respostas do endpoint /auth_pralog do backend.
 */
export const authMock = {
  /**
   * Simula autenticação bem-sucedida.
   * @param {string} email - Email do usuário
   * @param {string} password - Senha do usuário
   * @returns {Promise} Resposta simulada com token e dados do usuário
   */
  authenticate: async (email, password) => {
    // Validação básica
    if (!email || !password) {
      throw new Error('Email e senha são obrigatórios');
    }

    // Simula senha incorreta
    if (password !== 'admin123') {
      await simulateLatency(null, 800);
      throw {
        response: {
          status: 401,
          data: {
            message: 'Credenciais inválidas. Use "admin123" para testes.'
          }
        }
      };
    }

    // Simula resposta de sucesso
    const mockResponse = {
      token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiZW1haWwiOiJ0ZXN0ZUBwcmFsb2cuY29tIiwiaWF0IjoxNjQwOTk1MjAwfQ.mock_token_signature',
      user: {
        id: 1,
        name: 'Usuário Teste',
        email: email,
        role: 'admin',
        permissions: ['financeiro', 'fleet', 'rh']
      }
    };

    return simulateLatency(mockResponse, 1200);
  }
};
