From d48884349f90a221baecb29510fa73b2cf149569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Tue, 23 Feb 2021 08:33:55 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20des=20tests=20de=20l'API=20ep=20pour=20?= =?UTF-8?q?la=20r=C3=A9cup=C3=A9ration=20des=20EP=20en=20cours=20et=20des?= =?UTF-8?q?=20EP=20sign=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/EpInformationApiTests.cs | 98 +++++++++++++++++++ EPAServeur/Controllers/EpApi.cs | 44 ++++++--- 2 files changed, 126 insertions(+), 16 deletions(-) create mode 100644 EPAServeur.Tests/Controllers/EpInformationApiTests.cs diff --git a/EPAServeur.Tests/Controllers/EpInformationApiTests.cs b/EPAServeur.Tests/Controllers/EpInformationApiTests.cs new file mode 100644 index 0000000..bca8674 --- /dev/null +++ b/EPAServeur.Tests/Controllers/EpInformationApiTests.cs @@ -0,0 +1,98 @@ +using EPAServeur.Context; +using EPAServeur.IServices; +using EPAServeur.Services; +using IO.Swagger.ApiCollaborateur; +using IO.Swagger.Controllers; +using IO.Swagger.DTO; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace EPAServeur.Tests.Controllers +{ + [TestFixture] + public class EpInformationApiTests + { + #region + private EpContext context; + private ICollaborateurService collaborateurService; + private IEpInformationService epInformationService; + private ILogger logger; + + #endregion + + #region Setup + [SetUp] + public void Setup() + { + // Utilisation d'une base de données en mémoire + var optionBuider = new DbContextOptionsBuilder() + .UseInMemoryDatabase("server_ep_test") + .Options; + + context = new EpContext(optionBuider); + + context.Database.EnsureDeleted(); + context.Database.EnsureCreated(); + context.SaveChanges(); + + // Ajout du jeu de données pour les tests + DataSeeder.AddEp(context); + + // Détache les entités du context car la base de données InMemory créé des conflits + // entre les clés primaires lors d'un Update ou d'un Insert + foreach (var entity in context.ChangeTracker.Entries()) + { + entity.State = EntityState.Detached; + } + collaborateurService = new CollaborateurService(new CollaborateurApi(), context); + epInformationService = new EpInformationService(context, collaborateurService); + } + #endregion + + [Test] + public async Task GetEpEnCours() + { + EpApiController epApiController = new EpApiController(epInformationService, logger); + Task task = epApiController.GetEPEnCours(new List() { 1, 2 }, true, 1, 15, "", "", null, null); + OkObjectResult result = task.Result as OkObjectResult; + Assert.AreEqual(200, result.StatusCode); + Assert.IsInstanceOf>(result.Value); + } + + public async Task GetEpEnCoursCount() + { + EpApiController epApiController = new EpApiController(epInformationService, logger); + Task task = epApiController.GetEPEnCoursCount(new List() { 1, 2 }, true, 1, 15, "", "", null, null); + OkObjectResult result = task.Result as OkObjectResult; + Assert.AreEqual(200, result.StatusCode); + Assert.IsInstanceOf(result.Value); + } + + + public async Task GetEpEnSignes() + { + EpApiController epApiController = new EpApiController(epInformationService, logger); + Task task = epApiController.GetEPSignes(new List() { 1, 2 }, true, 1, 15, "", "", null, null); + OkObjectResult result = task.Result as OkObjectResult; + Assert.AreEqual(200, result.StatusCode); + Assert.IsInstanceOf>(result.Value); + } + + public async Task GetEpEnSignesCount() + { + EpApiController epApiController = new EpApiController(epInformationService, logger); + Task task = epApiController.GetEPSignesCount(new List() { 1, 2 }, true, 1, 15, "", "", null, null); + OkObjectResult result = task.Result as OkObjectResult; + Assert.AreEqual(200, result.StatusCode); + Assert.IsInstanceOf(result.Value); + } + + + } +} diff --git a/EPAServeur/Controllers/EpApi.cs b/EPAServeur/Controllers/EpApi.cs index 396335c..5efeba2 100644 --- a/EPAServeur/Controllers/EpApi.cs +++ b/EPAServeur/Controllers/EpApi.cs @@ -18,6 +18,9 @@ using IO.Swagger.Attributes; using IO.Swagger.Security; using Microsoft.AspNetCore.Authorization; using IO.Swagger.DTO; +using EPAServeur.IServices; +using Microsoft.Extensions.Logging; +using System.Threading.Tasks; namespace IO.Swagger.Controllers { @@ -26,18 +29,27 @@ namespace IO.Swagger.Controllers /// [ApiController] public class EpApiController : ControllerBase - { - /// - /// - /// - /// Annuler/Supprimer un EP d’un collaborateur. - /// Id d'un EP - /// EP supprimé avec succès - /// L'utilisateur souhaitant accéder à la ressource n'est pas authentifié - /// L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants - /// La ressource n'a pas été trouvée - /// Une erreur est survenue sur le serveur - [HttpDelete] + { + private IEpInformationService epInformationService; + private ILogger logger; + + public EpApiController(IEpInformationService epInformationService, ILogger logger) + { + this.epInformationService = epInformationService; + this.logger = logger; + } + + /// + /// + /// + /// Annuler/Supprimer un EP d’un collaborateur. + /// Id d'un EP + /// EP supprimé avec succès + /// L'utilisateur souhaitant accéder à la ressource n'est pas authentifié + /// L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants + /// La ressource n'a pas été trouvée + /// Une erreur est survenue sur le serveur + [HttpDelete] [Route("/api/ep/{idEP}")] [Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] @@ -175,7 +187,7 @@ namespace IO.Swagger.Controllers [SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")] [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: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")] - public virtual IActionResult GetEPEnCours([FromQuery]List idBUs, [FromQuery]bool? asc, [FromQuery]int? numPage, [FromQuery][Range(5, 100)]int? parPAge, [FromQuery]string texte, [FromQuery]string tri, [FromQuery]DateTime? dateDebut, [FromQuery]DateTime? dateFin) + public virtual async Task GetEPEnCours([FromQuery]List idBUs, [FromQuery]bool? asc, [FromQuery]int? numPage, [FromQuery][Range(5, 100)]int? parPAge, [FromQuery]string texte, [FromQuery]string tri, [FromQuery]DateTime? dateDebut, [FromQuery]DateTime? dateFin) { //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)); @@ -312,7 +324,7 @@ namespace IO.Swagger.Controllers [SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")] [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: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")] - public virtual IActionResult GetEPEnCoursCount([FromQuery]List idBUs, [FromQuery]bool? asc, [FromQuery]int? numPage, [FromQuery][Range(5, 100)]int? parPAge, [FromQuery]string texte, [FromQuery]string tri, [FromQuery]DateTime? dateDebut, [FromQuery]DateTime? dateFin) + public virtual async Task GetEPEnCoursCount([FromQuery]List idBUs, [FromQuery]bool? asc, [FromQuery]int? numPage, [FromQuery][Range(5, 100)]int? parPAge, [FromQuery]string texte, [FromQuery]string tri, [FromQuery]DateTime? dateDebut, [FromQuery]DateTime? dateFin) { //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(long?)); @@ -555,7 +567,7 @@ namespace IO.Swagger.Controllers [SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")] [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: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")] - public virtual IActionResult GetEPSignes([FromQuery]List idBUs, [FromQuery]bool? asc, [FromQuery]int? numPage, [FromQuery][Range(5, 100)]int? parPAge, [FromQuery]string texte, [FromQuery]string tri, [FromQuery]DateTime? dateDebut, [FromQuery]DateTime? dateFin) + public virtual async Task GetEPSignes([FromQuery]List idBUs, [FromQuery]bool? asc, [FromQuery]int? numPage, [FromQuery][Range(5, 100)]int? parPAge, [FromQuery]string texte, [FromQuery]string tri, [FromQuery]DateTime? dateDebut, [FromQuery]DateTime? dateFin) { //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)); @@ -647,7 +659,7 @@ namespace IO.Swagger.Controllers [SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")] [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: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")] - public virtual IActionResult GetEPSignesCount([FromQuery]List idBUs, [FromQuery]bool? asc, [FromQuery]int? numPage, [FromQuery][Range(5, 100)]int? parPAge, [FromQuery]string texte, [FromQuery]string tri, [FromQuery]DateTime? dateDebut, [FromQuery]DateTime? dateFin) + public virtual async Task GetEPSignesCount([FromQuery]List idBUs, [FromQuery]bool? asc, [FromQuery]int? numPage, [FromQuery][Range(5, 100)]int? parPAge, [FromQuery]string texte, [FromQuery]string tri, [FromQuery]DateTime? dateDebut, [FromQuery]DateTime? dateFin) { //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(long?));