From 83903a96bdf2630f1dc8465e71a001a0b6452738 Mon Sep 17 00:00:00 2001 From: Nestisse Date: Tue, 26 Mar 2024 17:08:42 +0100 Subject: [PATCH 1/9] =?UTF-8?q?Ajout=20du=20d=C3=A9ploiement=20pour=20la?= =?UTF-8?q?=20base=20de=20donn=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index d9da154..d9cdc1a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -40,4 +40,19 @@ steps: - reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport" - dotnet publish API_SQLuedo.sln -c Release --no-restore -o CI_PROJECT_DIR/build/release - dotnet sonarscanner end /d:sonar.login=$${sonar_token} - depends_on: [ build ] \ No newline at end of file + depends_on: [ build ] + + - name: deploy-sqluedo-db + image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest + environment: + IMAGENAME: postgres:16.2 + CONTAINERNAME: sqluedo-db + COMMAND: create + OVERWRITE: true + CODEFIRST_CLIENTDRONE_ENV_POSTGRES_USER: + from_secret: db_username + CODEFIRST_CLIENTDRONE_ENV_POSTGRES_PASSWORD: + from_secret: db_password + CODEFIRST_CLIENTDRONE_ENV_POSTGRES_DB: + from_secret: db_database + ADMINS: erwanmenager,maximesapountzis,johnnyratton,victorgaborit,clementchieu \ No newline at end of file From aeede41dadb35b83a800615fad7bbf601aa6ba9e Mon Sep 17 00:00:00 2001 From: Nestisse Date: Tue, 26 Mar 2024 17:10:23 +0100 Subject: [PATCH 2/9] Passage du container en private --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index d9cdc1a..134b1f8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -49,6 +49,7 @@ steps: CONTAINERNAME: sqluedo-db COMMAND: create OVERWRITE: true + PRIVATE: true CODEFIRST_CLIENTDRONE_ENV_POSTGRES_USER: from_secret: db_username CODEFIRST_CLIENTDRONE_ENV_POSTGRES_PASSWORD: From 4ba856e7d3a7da74052c1d436f3c2c6eedd99746 Mon Sep 17 00:00:00 2001 From: Nestisse Date: Tue, 26 Mar 2024 17:33:41 +0100 Subject: [PATCH 3/9] =?UTF-8?q?Retour=20=C3=A0=20l'ancien=20connection=20s?= =?UTF-8?q?tring=20en=20pr=C3=A9vision=20de=20la=20nouvelle=20avec=20la=20?= =?UTF-8?q?variable=20d'environnement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API_SQLuedo/DbContextLib/UserDbContext.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/API_SQLuedo/DbContextLib/UserDbContext.cs b/API_SQLuedo/DbContextLib/UserDbContext.cs index 4ae7447..8c84706 100644 --- a/API_SQLuedo/DbContextLib/UserDbContext.cs +++ b/API_SQLuedo/DbContextLib/UserDbContext.cs @@ -26,11 +26,8 @@ namespace DbContextLib base.OnConfiguring(optionsBuilder); if (!optionsBuilder.IsConfigured) { - string host = Environment.GetEnvironmentVariable("DB_HOST") ?? "localhost"; - string database = Environment.GetEnvironmentVariable("DB_DATABASE") ?? "SQLuedo"; - string username = Environment.GetEnvironmentVariable("DB_USERNAME") ?? "admin"; - string password = Environment.GetEnvironmentVariable("DB_PASSWORD") ?? "motdepasse"; - optionsBuilder.UseNpgsql($"Host={host};Database={database};Username={username};Password={password}"); + //optionsBuilder.UseNpgsql(Environment.GetEnvironmentVariable("CONNECTION_STRING", EnvironmentVariableTarget.Process)); + optionsBuilder.UseNpgsql("Host=localhost;Database=SQLuedo;Username=admin;Password=motdepasse"); } } From d03d695e6885e84d97849d0a767fb8d81a35ba16 Mon Sep 17 00:00:00 2001 From: Victor GABORIT Date: Wed, 27 Mar 2024 13:24:02 +0100 Subject: [PATCH 4/9] changement de UserEntity ajout de unique sur les chanps email et username --- API_SQLuedo/EntityFramework/UserEntity.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/API_SQLuedo/EntityFramework/UserEntity.cs b/API_SQLuedo/EntityFramework/UserEntity.cs index aa2527f..ecbabcc 100644 --- a/API_SQLuedo/EntityFramework/UserEntity.cs +++ b/API_SQLuedo/EntityFramework/UserEntity.cs @@ -1,8 +1,11 @@ using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.EntityFrameworkCore; namespace Entities; [Table("User")] +[Index(nameof(Username), IsUnique = true)] +[Index(nameof(Email), IsUnique = true)] public class UserEntity { public int Id { get; set; } From 8e8e55542b62173217ddbc3881e9287b4e01f9e0 Mon Sep 17 00:00:00 2001 From: Victor GABORIT Date: Wed, 27 Mar 2024 14:51:48 +0100 Subject: [PATCH 5/9] =?UTF-8?q?ajout=20de=20methode=20pour=20verfier=20si?= =?UTF-8?q?=20l'email=20ou=20le=20username=20est=20d=C3=A9j=C3=A0=20en=20b?= =?UTF-8?q?ase=20de=20donn=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API_SQLuedo/API/Controllers/UserController.cs | 10 ++++++++++ API_SQLuedo/API/Service/UserDataServiceAPI.cs | 4 ++++ API_SQLuedo/DbDataManager/Service/UserDataService.cs | 12 ++++++++++++ API_SQLuedo/Shared/IUserService.cs | 2 ++ 4 files changed, 28 insertions(+) diff --git a/API_SQLuedo/API/Controllers/UserController.cs b/API_SQLuedo/API/Controllers/UserController.cs index 0d8a3cc..c2442a7 100644 --- a/API_SQLuedo/API/Controllers/UserController.cs +++ b/API_SQLuedo/API/Controllers/UserController.cs @@ -157,6 +157,16 @@ namespace API.Controllers return BadRequest(); } + if (userService.IsEmailTaken(dto.Email)) + { + return BadRequest("Email déjà utilisé"); + } + + if (userService.IsUsernameTaken(dto.Username)) + { + return BadRequest("Username déjà utilisé"); + } + // return Ok(userService.CreateUser(username, password, email, isAdmin)); logger.LogInformation( "[INFORMATION] Un utilisateur a été créé : username - {username}, password - {password}, email - {email}, isAdmin - {isAdmin}", diff --git a/API_SQLuedo/API/Service/UserDataServiceAPI.cs b/API_SQLuedo/API/Service/UserDataServiceAPI.cs index 273e5f0..1102048 100644 --- a/API_SQLuedo/API/Service/UserDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/UserDataServiceAPI.cs @@ -38,4 +38,8 @@ public class UserDataServiceApi(IUserService userService) : IUserSer public UserDto CreateUser(string username, string password, string email, bool isAdmin) => userService.CreateUser(username, password, email, isAdmin).FromEntityToDto(); + + public bool IsEmailTaken(string email) => userService.IsEmailTaken(email); + + public bool IsUsernameTaken(string username) => userService.IsUsernameTaken(username); } \ No newline at end of file diff --git a/API_SQLuedo/DbDataManager/Service/UserDataService.cs b/API_SQLuedo/DbDataManager/Service/UserDataService.cs index 4676d15..ac3b606 100644 --- a/API_SQLuedo/DbDataManager/Service/UserDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/UserDataService.cs @@ -179,4 +179,16 @@ public class UserDataService : IUserService DbContext.SaveChangesAsync(); return newUserEntity; } + + public bool IsEmailTaken(string email) + { + var isEmail = DbContext.Users.Any(u => u.Email == email); + return isEmail; + } + + public bool IsUsernameTaken(string username) + { + var isUsername = DbContext.Users.Any(u => u.Username == username); + return isUsername; + } } \ No newline at end of file diff --git a/API_SQLuedo/Shared/IUserService.cs b/API_SQLuedo/Shared/IUserService.cs index 06051a9..4c4b10c 100644 --- a/API_SQLuedo/Shared/IUserService.cs +++ b/API_SQLuedo/Shared/IUserService.cs @@ -14,5 +14,7 @@ namespace Shared public bool DeleteUserByUsername(string username); public TUser UpdateUser(int id, TUser user); public TUser CreateUser(string username, string password, string email, bool isAdmin); + public bool IsEmailTaken(string email); + public bool IsUsernameTaken(string username); } } \ No newline at end of file From abe138e4e4bac2337dd29d1b82d2f36925021e2f Mon Sep 17 00:00:00 2001 From: Victor GABORIT Date: Wed, 27 Mar 2024 15:26:03 +0100 Subject: [PATCH 6/9] resolution d'erreur pas rapport au tests EF --- .../Service/TestBlackListDataService.cs | 46 +++++------ .../TestEF/Service/TestUserDataService.cs | 80 +++++++++---------- 2 files changed, 63 insertions(+), 63 deletions(-) diff --git a/API_SQLuedo/TestEF/Service/TestBlackListDataService.cs b/API_SQLuedo/TestEF/Service/TestBlackListDataService.cs index e4bbe1c..91b4114 100644 --- a/API_SQLuedo/TestEF/Service/TestBlackListDataService.cs +++ b/API_SQLuedo/TestEF/Service/TestBlackListDataService.cs @@ -26,24 +26,24 @@ public class TestBlackListDataService [Fact] public void BanUser_Success() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test101", Email = "example101@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test102", Email = "example102@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test103", Email = "example103@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); - var banResult = _blackListDataService.BanUser("Test1"); + var banResult = _blackListDataService.BanUser("Test101"); Assert.True(banResult); } [Fact] public void GetNbBannedUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example1@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example2@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example3@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test61", Email = "example61@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test62", Email = "example62@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test63", Email = "example63@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); - var banResult1 = _blackListDataService.BanUser("Test1"); - var banResult2 = _blackListDataService.BanUser("Test2"); - var banResult3 = _blackListDataService.BanUser("Test3"); + var banResult1 = _blackListDataService.BanUser("Test61"); + var banResult2 = _blackListDataService.BanUser("Test62"); + var banResult3 = _blackListDataService.BanUser("Test63"); Assert.True(banResult1); Assert.True(banResult2); Assert.True(banResult3); @@ -53,9 +53,9 @@ public class TestBlackListDataService [Fact] public void BanUser_Fail() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test71", Email = "example71@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test72", Email = "example72@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test73", Email = "example73@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); var banResult = _blackListDataService.BanUser("Test42"); Assert.False(banResult); @@ -64,24 +64,24 @@ public class TestBlackListDataService [Fact] public void IsBanned_Success() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example1@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test81", Email = "example81@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test82", Email = "example82@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test83", Email = "example83@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); - var banResult = _blackListDataService.BanUser("Test1"); + var banResult = _blackListDataService.BanUser("Test81"); Assert.True(banResult); - Assert.NotNull(_blackListDataService.GetUserBannedByEmail("example1@email.com")); + Assert.NotNull(_blackListDataService.GetUserBannedByEmail("example81@email.com")); } [Fact] public void UnbanUser_Success() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example1@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test91", Email = "example91@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test92", Email = "example92@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test93", Email = "example93@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); - var banResult = _blackListDataService.BanUser("Test1"); + var banResult = _blackListDataService.BanUser("Test91"); Assert.True(banResult); - Assert.True(_blackListDataService.UnbanUser("example1@email.com")); + Assert.True(_blackListDataService.UnbanUser("example91@email.com")); } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/Service/TestUserDataService.cs b/API_SQLuedo/TestEF/Service/TestUserDataService.cs index 0908398..863a10c 100644 --- a/API_SQLuedo/TestEF/Service/TestUserDataService.cs +++ b/API_SQLuedo/TestEF/Service/TestUserDataService.cs @@ -27,9 +27,9 @@ public class TestUserDataService [Fact] public void GetUsers_ReturnsCorrectNumberOfUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test10", Email = "example1@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test12", Email = "example2@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test13", Email = "example3@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); var result = _userDataService.GetUsers(1, 2, UserOrderCriteria.None); Assert.Equal(2, result.Count()); @@ -38,9 +38,9 @@ public class TestUserDataService [Fact] public void GetNotAdminUsers_ReturnsCorrectNumberOfUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test14", Email = "example4@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test15", Email = "example5@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test16", Email = "example6@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); var result = _userDataService.GetNotAdminUsers(1, 2, UserOrderCriteria.None); Assert.Equal(1, result.Count()); @@ -49,9 +49,9 @@ public class TestUserDataService [Fact] public void GetNotAdminUsers_BadPage_ReturnsCorrectNumberOfUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test17", Email = "example7@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test18", Email = "example8@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test19", Email = "example9@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); var result = _userDataService.GetNotAdminUsers(-42, 2, UserOrderCriteria.None); Assert.Equal(1, result.Count()); @@ -60,9 +60,9 @@ public class TestUserDataService [Fact] public void GetNotAdminUsers_BadNumber_ReturnsCorrectNumberOfUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test20", Email = "example10@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test21", Email = "example11@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test22", Email = "example12@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); var result = _userDataService.GetNotAdminUsers(1, -42, UserOrderCriteria.None); Assert.Equal(1, result.Count()); @@ -71,9 +71,9 @@ public class TestUserDataService [Fact] public void GetNotAdminUsers_OrderedById_ReturnsCorrectNumberOfUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test23", Email = "example13@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test24", Email = "example14@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test51", Email = "example15@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); var result = _userDataService.GetNotAdminUsers(1, 2, UserOrderCriteria.ById); Assert.Equal(1, result.Count()); @@ -82,9 +82,9 @@ public class TestUserDataService [Fact] public void GetNotAdminUsers_OrderedByUsername_ReturnsCorrectNumberOfUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test25", Email = "example16@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test26", Email = "example17@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test27", Email = "example18@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); var result = _userDataService.GetNotAdminUsers(1, 2, UserOrderCriteria.ByUsername); Assert.Equal(1, result.Count()); @@ -93,9 +93,9 @@ public class TestUserDataService [Fact] public void GetNotAdminUsers_OrderedByEmail_ReturnsCorrectNumberOfUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test52", Email = "example45@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test53", Email = "example46@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test54", Email = "example17@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); var result = _userDataService.GetNotAdminUsers(1, 2, UserOrderCriteria.ByEmail); Assert.Equal(1, result.Count()); @@ -104,9 +104,9 @@ public class TestUserDataService [Fact] public void GetNotAdminUsers_OrderedByIsAdmin_ReturnsCorrectNumberOfUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test28", Email = "example19@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test29", Email = "example20@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test30", Email = "example21@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); var result = _userDataService.GetNotAdminUsers(1, 2, UserOrderCriteria.ByIsAdmin); Assert.Equal(1, result.Count()); @@ -115,9 +115,9 @@ public class TestUserDataService [Fact] public void GetNumberOfUsers_ReturnsCorrectNumberOfUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); - _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test31", Email = "example22@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test32", Email = "example23@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test33", Email = "example24@email.com", Password = "password", IsAdmin = true }); _dbContext.SaveChanges(); var result = _userDataService.GetNumberOfUsers(); Assert.Equal(3, result); @@ -126,29 +126,29 @@ public class TestUserDataService [Fact] public void GetUserById_ReturnsCorrectUser() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test34", Email = "example25@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test35", Email = "example26@email.com", Password = "password", IsAdmin = false }); _dbContext.SaveChanges(); var result = _userDataService.GetUserById(1); - Assert.Equal("Test1", result.Username); + Assert.Equal("Test34", result.Username); } [Fact] public void GetUserByUsername_ReturnsCorrectUser() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test36", Email = "example27@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test37", Email = "example28@email.com", Password = "password", IsAdmin = false }); _dbContext.SaveChanges(); - var result = _userDataService.GetUserByUsername("Test1"); + var result = _userDataService.GetUserByUsername("Test36"); Assert.Equal(1, result.Id); } [Fact] public void GetUserByEmail_ReturnsCorrectUser() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test38", Email = "example29@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test39", Email = "example30@email.com", Password = "password", IsAdmin = false }); _dbContext.SaveChanges(); - var result = _userDataService.GetUserByEmail("example@email.com"); + var result = _userDataService.GetUserByEmail("example29@email.com"); Assert.Equal(1, result.Id); } @@ -196,8 +196,8 @@ public class TestUserDataService [Fact] public void GetUsers_WithBadPage_ReturnsClassicUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test40", Email = "example31@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test41", Email = "example32@email.com", Password = "password", IsAdmin = false }); _dbContext.SaveChanges(); var result = _userDataService.GetUsers(-1, 2, UserOrderCriteria.None); @@ -208,8 +208,8 @@ public class TestUserDataService [Fact] public void GetUsers_WithBadNumber_ReturnsClassicUsers() { - _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); - _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test43", Email = "example33@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test44", Email = "example34@email.com", Password = "password", IsAdmin = false }); _dbContext.SaveChanges(); var result = _userDataService.GetUsers(1, -42, UserOrderCriteria.None); From 8e0c19eea845394284aa0aad0bda7656e2d17c80 Mon Sep 17 00:00:00 2001 From: clchieu Date: Wed, 27 Mar 2024 16:33:35 +0100 Subject: [PATCH 7/9] Modification mot de passe --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 134b1f8..95ed74b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -56,4 +56,4 @@ steps: from_secret: db_password CODEFIRST_CLIENTDRONE_ENV_POSTGRES_DB: from_secret: db_database - ADMINS: erwanmenager,maximesapountzis,johnnyratton,victorgaborit,clementchieu \ No newline at end of file + ADMINS: erwanmenager,maximesapountzis,johnnyratton,victorgaborit,clementchieu \ No newline at end of file From 823701a57ec4ef4ee646ece67e7e7ab5cc164550 Mon Sep 17 00:00:00 2001 From: Victor GABORIT Date: Wed, 27 Mar 2024 17:50:41 +0100 Subject: [PATCH 8/9] ajout des pour CreateUser avec un username existant et un email existant --- API_SQLuedo/TestAPI/UserUnitTest.cs | 30 +++++++++++++++++++ .../TestEF/Service/TestUserDataService.cs | 20 +++++++++++++ 2 files changed, 50 insertions(+) diff --git a/API_SQLuedo/TestAPI/UserUnitTest.cs b/API_SQLuedo/TestAPI/UserUnitTest.cs index 39345d0..abdfbfb 100644 --- a/API_SQLuedo/TestAPI/UserUnitTest.cs +++ b/API_SQLuedo/TestAPI/UserUnitTest.cs @@ -285,6 +285,36 @@ public class UserUnitTest Assert.Equal(400, bdObjectResult.StatusCode); } } + [Fact] + public void CreateUserWithExistingEmail() + { + GetUsersData(); + _userService.Setup(x => x.CreateUser("Nom", "Passssss", "adressemail@gmail.com", true)) + .Returns(new UserDto("Nom", "Passssss", "adressemail@gmail.com", true)); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.CreateUser(new UserDto(null, "Passssss", "adressemail@gmail.com", true)); + + if (userResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } + [Fact] + public void CreateUserWithExistingUsername() + { + GetUsersData(); + _userService.Setup(x => x.CreateUser("Useruser", "Passssss", "heudfk@hdye.com", true)) + .Returns(new UserDto("Useruser", "Passssss", "heudfk@hdye.com", true)); + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.CreateUser(new UserDto("Useruser", "Passssss", "heudfk@hdye.com", true)); + + if (userResult is BadRequestResult bdObjectResult) + { + Assert.Equal(400, bdObjectResult.StatusCode); + } + } [Fact] public void UpdateUserSuccess() diff --git a/API_SQLuedo/TestEF/Service/TestUserDataService.cs b/API_SQLuedo/TestEF/Service/TestUserDataService.cs index 863a10c..9f4638c 100644 --- a/API_SQLuedo/TestEF/Service/TestUserDataService.cs +++ b/API_SQLuedo/TestEF/Service/TestUserDataService.cs @@ -253,6 +253,26 @@ public class TestUserDataService Assert.False(result); } + [Fact] + public void isEmailTaken_ReturnFalse() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test81", Email = "example81@email.com", Password = "password", IsAdmin = true }); + _dbContext.SaveChanges(); + + var result = _userDataService.IsEmailTaken("example895@email.com"); + + Assert.False(result); + } + [Fact] + public void isEmailTaken_ReturnTrue() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test82", Email = "example82@email.com", Password = "password", IsAdmin = true }); + _dbContext.SaveChanges(); + + var result = _userDataService.IsEmailTaken("example82@email.com"); + + Assert.True(result); + } [Fact] public void DeleteUserByUsername_WithoutExisting_ReturnsFalse() From e906584989b13f344004b3f0bd06fe323394d9b0 Mon Sep 17 00:00:00 2001 From: Victor GABORIT Date: Thu, 28 Mar 2024 10:19:53 +0100 Subject: [PATCH 9/9] changement des codes du verbe POST de User pour traiter les erreur dans la partie client --- API_SQLuedo/API/Controllers/UserController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/API_SQLuedo/API/Controllers/UserController.cs b/API_SQLuedo/API/Controllers/UserController.cs index c2442a7..1c1a6d4 100644 --- a/API_SQLuedo/API/Controllers/UserController.cs +++ b/API_SQLuedo/API/Controllers/UserController.cs @@ -159,12 +159,12 @@ namespace API.Controllers if (userService.IsEmailTaken(dto.Email)) { - return BadRequest("Email déjà utilisé"); + return StatusCode(409, "Email déjà utilisé"); } if (userService.IsUsernameTaken(dto.Username)) { - return BadRequest("Username déjà utilisé"); + return StatusCode(410, "Username déjà utilisé"); } // return Ok(userService.CreateUser(username, password, email, isAdmin));