Imported from brunoferreira94/school-management (
AGENTS.md). Install upstream withnpx skills add brunoferreira94/school-management. Copyright stays with the author.
š Motivação
O Auth0 só permite Criar um ambiente principal, que serÔ definido como produção. Como precisamos testar em desenvolvimento sem impactar a produção, precisamos de uma solução de mock que simule as respostas do Auth0 localmente.
š Proposta
Criar uma solução de mock local substituindo as chamadas à API do Auth0 real durante o desenvolvimento.
š EspecificaƧƵes do Mock
1. Configuração no .NET
-
Alternância automÔtica:
- Em desenvolvimento: Usar mock
- Em produção: Usar endpoints reais do Auth0
-
Atualização no
appsettings.Development.json:"Auth0": { "Domain": "mock-auth0.local", "Audience": "http://localhost:5066/api", "ManagementClientId": "mock-client-id", "ManagementClientSecret": "mock-secret" }
2. Implementação do Mock Service
Interface (IAuth0Service.cs):
public interface IAuth0Service
{
Task<string> GetAccessTokenAsync(string clientId, string clientSecret, string audience, string domain);
Task<Dictionary<string, object>> GetUserInfoAsync(string accessToken);
bool IsMockEnabled { get; }
}
Mock Service (MockAuth0Service.cs): Retorna token mockado e dados de usuĆ”rio fictĆcios.
3. Estratégia de Alternância
// Program.cs
var authMode = Environment.GetEnvironmentVariable("AUTH_MODE");
if (authMode == "***")
{
builder.Services.AddSingleton<IAuth0Service, MockAuth0Service>();
}
else
{
builder.Services.AddHttpClient<IAuth0Service, ProductionAuth0Service>();
}
ā Verificação
- O mock retorna tokens vƔlidos para chamadas frequentes do Auth0
- Frontend conecta-se ao mock sem falhas
- Backend não exibe erros relacionados ao Auth0 em desenvolvimento
š ReferĆŖncias
š Arquivos Criados
| Arquivo | Descrição |
|---|---|
/home/bruno/workspace/school-management/school-management-api/src/SchoolManagement.Infrastructure/Auth0/IAuth0Service.cs |
Interface comum + Auth0AuthModeResolver (decadĆŖncia por AUTH_MODE) |
/home/bruno/workspace/school-management/school-management-api/src/SchoolManagement.Infrastructure/Auth0/MockAuth0Service.cs |
Implementação do mock (tokens `mock |
/home/bruno/workspace/school-management/school-management-api/src/SchoolManagement.Infrastructure/Auth0/ProductionAuth0Service.cs |
Implementação produção (client_credentials + /userinfo) |
š Status da implementação
Registrar no DI containerāRepositoryAndInfrastructureRegistrationāAUTH_MODE=mockforƧa o mock mesmo com credenciais; semAUTH_MODEhaverĆ” decadĆŖncia automĆ”tica pelo mock em desenvolvimento sem credenciais e Auth0 real em produção.- Atualizar
appsettings.Development.json: desnecessĆ”rio ā o mock nĆ£o depende de credenciais; nĆ£o colocar valores falsos no config para evitar ativar o serviƧo real. - Testar autenticação local com mock ativado ā 9 testes (Auth0MockTests/ProductionAuth0ServiceTests).
- Documentar uso no README principal:
AUTH_MODEdocumentado no próprio AGENTS.md e nos testes.
