< Summary

Information
Class: FAU.API.Controllers.TestController
Assembly: FAU.API
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Controllers/TestController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 44
Coverable lines: 44
Total lines: 113
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 8
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
Public()100%210%
Protected()0%2040%
AdminOnly()0%620%
MultiRole()0%620%
Auditoria()100%210%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Controllers/TestController.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.AspNetCore.Mvc;
 3using FAU.Logica.DTOs;
 4using FAU.Logica.Services;
 5
 6namespace FAU.API.Controllers;
 7
 8[ApiController]
 9[Route("api/[controller]")]
 10public class TestController : ControllerBase
 11{
 12    private readonly ILogger<TestController> _logger;
 13
 14    private readonly IAuditoriaService _auditoriaService;
 15
 016    public TestController(ILogger<TestController> logger, IAuditoriaService auditoriaService)
 17    {
 018        _logger = logger;
 019        _auditoriaService = auditoriaService;
 020    }
 21
 22    /// <summary>
 23    /// Endpoint público de prueba (sin autenticación)
 24    /// </summary>
 25    [HttpGet("public")]
 26    [AllowAnonymous]
 27    public IActionResult Public()
 28    {
 029        return Ok(ApiResponse<string>.SuccessResult(
 030            "Este es un endpoint público - accesible sin autenticación",
 031            "Respuesta exitosa"));
 32    }
 33
 34    /// <summary>
 35    /// Endpoint protegido de prueba (requiere autenticación)
 36    /// </summary>
 37    [HttpGet("protected")]
 38    [Authorize]
 39    public IActionResult Protected()
 40    {
 041        var username = User.Identity?.Name;
 042        var roles = User.Claims
 043            .Where(c => c.Type == System.Security.Claims.ClaimTypes.Role)
 044            .Select(c => c.Value)
 045            .ToList();
 46
 047        var responseData = new
 048        {
 049            Message = "Este es un endpoint protegido - requiere autenticación",
 050            Username = username,
 051            Roles = roles,
 052            UserId = User.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value
 053        };
 54
 055        return Ok(ApiResponse<object>.SuccessResult(responseData, "Autenticado correctamente"));
 56    }
 57
 58    /// <summary>
 59    /// Endpoint solo para administradores
 60    /// </summary>
 61    [HttpGet("admin-only")]
 62    [Authorize(Roles = "Administrador")]
 63    public IActionResult AdminOnly()
 64    {
 065        var username = User.Identity?.Name;
 66
 067        var responseData = new
 068        {
 069            Message = "Este endpoint solo es accesible por administradores",
 070            Username = username,
 071            AccessLevel = "Administrador"
 072        };
 73
 074        return Ok(ApiResponse<object>.SuccessResult(responseData, "Acceso de administrador confirmado"));
 75    }
 76
 77    /// <summary>
 78    /// Endpoint con múltiples roles permitidos
 79    /// </summary>
 80    [HttpGet("multi-role")]
 81    [Authorize(Roles = "Administrador,Usuario")]
 82    public IActionResult MultiRole()
 83    {
 084        var username = User.Identity?.Name;
 085        var roles = User.Claims
 086            .Where(c => c.Type == System.Security.Claims.ClaimTypes.Role)
 087            .Select(c => c.Value)
 088            .ToList();
 89
 090        var responseData = new
 091        {
 092            Message = "Este endpoint es accesible por Administradores y Usuarios",
 093            Username = username,
 094            Roles = roles
 095        };
 96
 097        return Ok(ApiResponse<object>.SuccessResult(responseData, "Acceso autorizado"));
 98    }
 99
 100    /// <summary>
 101    /// Endpoint Auditoria de prueba (sin autenticación)
 102    /// </summary>
 103    [HttpGet("Auditoria")]
 104    [AllowAnonymous]
 105    public IActionResult Auditoria()
 106    {
 0107        _auditoriaService.LogAuditoria(1, 1, 1, "some host like 1.2.3.4");
 0108        return Ok(ApiResponse<string>.SuccessResult(
 0109            "Este es un endpoint de auditoria - accesible sin autenticación",
 0110            "Respuesta exitosa"));
 111    }
 112}
 113