Implémentation de l'API des demandes de délégations avec validation des tests

develop
Yanaël GRETTE 4 years ago
parent 8f964f255f
commit 59af0e29c8
  1. 18
      EPAServeur.Tests/Controllers/DemandeDelegationApiTests.cs
  2. 133
      EPAServeur/Controllers/DemandesDelegationApi.cs
  3. 2
      EPAServeur/IServices/IDemandeDelegationService.cs
  4. 2
      EPAServeur/Services/DemandeDelegationService.cs

@ -72,7 +72,7 @@ namespace EPAServeur.Tests.Controllers
} }
[Test] [Test]
public void UpdateDemandeDelegation_Refusee() public void UpdateDemandeDelegation()
{ {
DemandesDelegationApiController demandesDelegationApiController = new DemandesDelegationApiController(demandeDelegationService, logger); DemandesDelegationApiController demandesDelegationApiController = new DemandesDelegationApiController(demandeDelegationService, logger);
DemandeDelegationDTO demandeDTO = new DemandeDelegationDTO() DemandeDelegationDTO demandeDTO = new DemandeDelegationDTO()
@ -89,22 +89,6 @@ namespace EPAServeur.Tests.Controllers
Assert.IsInstanceOf<DemandeDelegationDTO>(result.Value); Assert.IsInstanceOf<DemandeDelegationDTO>(result.Value);
} }
[Test]
public void UpdateDemandeDelegation_Validee()
{
DemandesDelegationApiController demandesDelegationApiController = new DemandesDelegationApiController(demandeDelegationService, logger);
DemandeDelegationDTO demandeDTO = new DemandeDelegationDTO()
{
Id = 2,
DateDemande = new DateTime(),
RaisonDemande = "Raison demande",
EtatDemande = EtatDemande.Validee,
};
Task<IActionResult> task = demandesDelegationApiController.UpdateDemandeDelegation(demandeDTO, demandeDTO.Id);
OkObjectResult result = task.Result as OkObjectResult;
Assert.AreEqual(200, result.StatusCode);
Assert.IsInstanceOf(null, result.Value);
}
#endregion #endregion
} }
} }

@ -18,6 +18,11 @@ using IO.Swagger.Attributes;
using IO.Swagger.Security; using IO.Swagger.Security;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using IO.Swagger.DTO; using IO.Swagger.DTO;
using EPAServeur.IServices;
using Microsoft.Extensions.Logging;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using EPAServeur.Exceptions;
namespace IO.Swagger.Controllers namespace IO.Swagger.Controllers
{ {
@ -26,7 +31,24 @@ namespace IO.Swagger.Controllers
/// </summary> /// </summary>
[ApiController] [ApiController]
public class DemandesDelegationApiController : ControllerBase public class DemandesDelegationApiController : ControllerBase
{ {
/// <summary>
/// Services des demandes de délégation
/// </summary>
private readonly IDemandeDelegationService demandeDelegationService;
/// <summary>
/// Logger du contrôleur
/// </summary>
private readonly ILogger<DemandesDelegationApiController> logger;
public DemandesDelegationApiController(IDemandeDelegationService _demandeDelegationService, ILogger<DemandesDelegationApiController> _logger)
{
demandeDelegationService = _demandeDelegationService;
logger = _logger;
}
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
@ -47,8 +69,45 @@ namespace IO.Swagger.Controllers
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "La ressource n&#x27;a pas été trouvée")] [SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "La ressource n&#x27;a pas été trouvée")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")] [SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual IActionResult GetDemandesDelegationReferent([FromRoute][Required]Guid? idReferent) public virtual async Task<IActionResult> GetDemandesDelegationReferent([FromRoute][Required]Guid? idReferent)
{ {
IEnumerable<DemandeDelegationDTO> demandeDelegations;
try
{
demandeDelegations = await demandeDelegationService.RecupererDemandesDelegation(idReferent);
}
catch (ReferentNotFoundException e)
{
ErreurDTO erreur = new ErreurDTO()
{
Code = 404,
Message = e.Message,
};
return NotFound(erreur);
}
catch (DbUpdateException e)
{
logger.LogError(e.Message);
ErreurDTO erreur = new ErreurDTO
{
Code = 500,
Message = "Une erreur est survenue sur le serveur",
};
return StatusCode(erreur.Code.Value, erreur);
}
catch (Exception e)
{
logger.LogError(e.Message);
ErreurDTO erreur = new ErreurDTO
{
Code = 500,
Message = "Une erreur inconnue est survenue sur le serveur",
};
return StatusCode(erreur.Code.Value, erreur);
}
return Ok(demandeDelegations);
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(200, default(List<DemandeDelegationDTO>)); // return StatusCode(200, default(List<DemandeDelegationDTO>));
@ -63,13 +122,6 @@ namespace IO.Swagger.Controllers
//TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ... //TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(500, default(ErreurDTO)); // return StatusCode(500, default(ErreurDTO));
string exampleJson = null;
exampleJson = "[ {\n \"raisonDemande\" : \"raisonDemande\",\n \"raisonRefus\" : \"raisonRefus\",\n \"dateReponse\" : \"2000-01-23T04:56:07.000+00:00\",\n \"id\" : 6,\n \"dateDemande\" : \"2000-01-23T04:56:07.000+00:00\"\n}, {\n \"raisonDemande\" : \"raisonDemande\",\n \"raisonRefus\" : \"raisonRefus\",\n \"dateReponse\" : \"2000-01-23T04:56:07.000+00:00\",\n \"id\" : 6,\n \"dateDemande\" : \"2000-01-23T04:56:07.000+00:00\"\n} ]";
var example = exampleJson != null
? JsonConvert.DeserializeObject<List<DemandeDelegationDTO>>(exampleJson)
: default(List<DemandeDelegationDTO>); //TODO: Change the data returned
return new ObjectResult(example);
} }
/// <summary> /// <summary>
@ -95,8 +147,60 @@ namespace IO.Swagger.Controllers
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "La ressource n&#x27;a pas été trouvée")] [SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "La ressource n&#x27;a pas été trouvée")]
[SwaggerResponse(statusCode: 415, type: typeof(ErreurDTO), description: "L’opération ne peut pas être effectuée car certaines données sont manquantes")] [SwaggerResponse(statusCode: 415, type: typeof(ErreurDTO), description: "L’opération ne peut pas être effectuée car certaines données sont manquantes")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")] [SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual IActionResult UpdateDemandeDelegation([FromBody]DemandeDelegationDTO body, [FromRoute][Required]long? idDemandeDelegation) public virtual async Task<IActionResult> UpdateDemandeDelegation([FromBody]DemandeDelegationDTO body, [FromRoute][Required]long? idDemandeDelegation)
{ {
try
{
body = await demandeDelegationService.UpdateDemandeDelegation(idDemandeDelegation, body);
}
catch (DemandeDelegationIncompatibleException e)
{
ErreurDTO erreur = new ErreurDTO()
{
Code = 415,
Message = e.Message,
};
return StatusCode(erreur.Code.Value, erreur);
}
catch (DemandeDelegationInvalidException e)
{
ErreurDTO erreur = new ErreurDTO()
{
Code = 415,
Message = e.Message,
};
return StatusCode(erreur.Code.Value, erreur);
}
catch (DemandeDelegationNotFoundException e)
{
ErreurDTO erreur = new ErreurDTO()
{
Code = 415,
Message = e.Message,
};
return StatusCode(erreur.Code.Value, erreur);
}
catch (DbUpdateException e)
{
logger.LogError(e.Message);
ErreurDTO erreur = new ErreurDTO
{
Code = 500,
Message = "Une erreur est survenue sur le serveur",
};
return StatusCode(erreur.Code.Value, erreur);
}
catch (Exception e)
{
logger.LogError(e.Message);
ErreurDTO erreur = new ErreurDTO
{
Code = 500,
Message = "Une erreur inconnue est survenue sur le serveur",
};
return StatusCode(erreur.Code.Value, erreur);
}
return Ok(body);
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(200, default(DemandeDelegationDTO)); // return StatusCode(200, default(DemandeDelegationDTO));
@ -114,13 +218,6 @@ namespace IO.Swagger.Controllers
//TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ... //TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(500, default(ErreurDTO)); // return StatusCode(500, default(ErreurDTO));
string exampleJson = null;
exampleJson = "{\n \"raisonDemande\" : \"raisonDemande\",\n \"raisonRefus\" : \"raisonRefus\",\n \"dateReponse\" : \"2000-01-23T04:56:07.000+00:00\",\n \"id\" : 6,\n \"dateDemande\" : \"2000-01-23T04:56:07.000+00:00\"\n}";
var example = exampleJson != null
? JsonConvert.DeserializeObject<DemandeDelegationDTO>(exampleJson)
: default(DemandeDelegationDTO); //TODO: Change the data returned
return new ObjectResult(example);
} }
} }
} }

@ -8,7 +8,7 @@ namespace EPAServeur.IServices
{ {
public interface IDemandeDelegationService public interface IDemandeDelegationService
{ {
public Task<DemandeDelegationDTO> UpdateDemandeDelegation(long id, DemandeDelegationDTO demandeDelegationDTO); public Task<DemandeDelegationDTO> UpdateDemandeDelegation(long? id, DemandeDelegationDTO demandeDelegationDTO);
public Task<IEnumerable<DemandeDelegationDTO>> RecupererDemandesDelegation(Guid? idReferent); public Task<IEnumerable<DemandeDelegationDTO>> RecupererDemandesDelegation(Guid? idReferent);
} }
} }

@ -47,7 +47,7 @@ namespace EPAServeur.Services
} }
public async Task<DemandeDelegationDTO> UpdateDemandeDelegation(long id, DemandeDelegationDTO demandeDelegationDTO) public async Task<DemandeDelegationDTO> UpdateDemandeDelegation(long? id, DemandeDelegationDTO demandeDelegationDTO)
{ {
if (id != demandeDelegationDTO.Id) if (id != demandeDelegationDTO.Id)
throw new DemandeDelegationIncompatibleException("La demande de délégation ne correspond pas avec l'identifiant reçu"); throw new DemandeDelegationIncompatibleException("La demande de délégation ne correspond pas avec l'identifiant reçu");

Loading…
Cancel
Save