diff --git a/API_SQLuedo/API_SQLuedo.sln b/API_SQLuedo/API_SQLuedo.sln index 61850b6..a98b673 100644 --- a/API_SQLuedo/API_SQLuedo.sln +++ b/API_SQLuedo/API_SQLuedo.sln @@ -25,6 +25,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Model", "Model\Model.csproj EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared\Shared.csproj", "{9DC1D2DF-AC2B-4CF5-BB30-2FB6533BFF76}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestConsoleEf", "TestConsoleEf\TestConsoleEf.csproj", "{37378C7E-074C-4863-BFD0-60802303FEEB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -75,6 +77,10 @@ Global {9DC1D2DF-AC2B-4CF5-BB30-2FB6533BFF76}.Debug|Any CPU.Build.0 = Debug|Any CPU {9DC1D2DF-AC2B-4CF5-BB30-2FB6533BFF76}.Release|Any CPU.ActiveCfg = Release|Any CPU {9DC1D2DF-AC2B-4CF5-BB30-2FB6533BFF76}.Release|Any CPU.Build.0 = Release|Any CPU + {37378C7E-074C-4863-BFD0-60802303FEEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {37378C7E-074C-4863-BFD0-60802303FEEB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {37378C7E-074C-4863-BFD0-60802303FEEB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {37378C7E-074C-4863-BFD0-60802303FEEB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/API_SQLuedo/TestConsoleEf/Program.cs b/API_SQLuedo/TestConsoleEf/Program.cs new file mode 100644 index 0000000..eb2863e --- /dev/null +++ b/API_SQLuedo/TestConsoleEf/Program.cs @@ -0,0 +1,121 @@ +using System.Security.Cryptography; +using DbContextLib; +using Entities; +using Microsoft.AspNetCore.Cryptography.KeyDerivation; +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using StubbedContextLib; + +var connection = new SqliteConnection("DataSource=:memory:"); +connection.Open(); +var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + +using ILoggerFactory factory = new LoggerFactory(); + +using (var db = new StubbedContext(options)) +{ + await db.Database.EnsureCreatedAsync(); + + // Test sur les users + var users = db.Users; + + // Affichage de tous les users + Console.WriteLine("Affichage des noms des utilisateurs"); + foreach (var user in users) + { + Console.WriteLine(user.Username); + } + + // Affichage des users filtrés + Console.WriteLine("\nAffichage des utilisateurs contenant e"); + var filteredUsers = users.Where(u => u.Username.Contains("e")); + foreach (var user in filteredUsers) + { + Console.WriteLine(user.Username); + } + + // Affichage des users triés + Console.WriteLine("\nAffichage des utilisateurs triés selon leur nom"); + var orderedUsers = users.OrderBy(u => u.Username); + foreach (var user in orderedUsers) + { + Console.WriteLine(user.Username); + } + + // Ajout d'un utilisateur + Console.WriteLine("\nAjout du nouvel utilisateur"); + var newUser = new UserEntity("le nouveau du groupe", Convert.ToBase64String(KeyDerivation.Pbkdf2( + password: "motdepasse", + salt: RandomNumberGenerator.GetBytes(128 / 8), + prf: KeyDerivationPrf.HMACSHA256, + iterationCount: 100000, + numBytesRequested: 256 / 8)), "Efff.fffff@etu.uca.fr", true); + if (!users.Any(u => u.Username == newUser.Username)) + { + users.Add(newUser); + await db.SaveChangesAsync(); + } +} + +using (var db = new StubbedContext(options)) +{ + var users = db.Users; + // Affichage du nouvel utilisateur + Console.WriteLine("\nAffichage du nouvel utilisateur"); + var u = await users.FirstOrDefaultAsync(u => u.Username == "le nouveau du groupe"); + foreach (var pptt in typeof(UserEntity).GetProperties().Where((p => p.CanWrite && p.Name != nameof(UserEntity.Id)))) + { + Console.WriteLine(pptt.GetValue(u)); + } + + if (u != null) + { + // Suppression du nouvel utilisateur + Console.WriteLine("\nSuppression du nouvel utilisateur"); + db.Users.Remove(u); + await db.SaveChangesAsync(); + } +} + +using (var db = new StubbedContext(options)) +{ + var users = db.Users; + // Affichage des utilisateurs après suppression + Console.WriteLine("\nAffichage des utilisateurs après suppression"); + foreach (var user in users) + { + Console.WriteLine(user.Username); + } + + // Modification d'un utilisateur + Console.WriteLine("\nModification de l'utilisateur clement"); + var userToModify = await users.FirstOrDefaultAsync(u => u.Username == "clement"); + if (userToModify != null) + { + userToModify.Username = "clement modifié"; + await db.SaveChangesAsync(); + } +} + +using (var db = new StubbedContext(options)) +{ + var users = db.Users; + // Affichage des utilisateurs après modification + var userToModify = await users.FirstOrDefaultAsync(u => u.Username == "clement modifié"); + if (userToModify != null) + { + Console.WriteLine("\nAffichage de l'utilisateur après modification"); + Console.WriteLine(userToModify.Username); + // Rollback + userToModify = await users.FirstOrDefaultAsync(u => u.Username == "clement modifié"); + if (userToModify != null) + { + userToModify.Username = "clement"; + await db.SaveChangesAsync(); + } + } +} + diff --git a/API_SQLuedo/TestConsoleEf/TestConsoleEf.csproj b/API_SQLuedo/TestConsoleEf/TestConsoleEf.csproj new file mode 100644 index 0000000..485b731 --- /dev/null +++ b/API_SQLuedo/TestConsoleEf/TestConsoleEf.csproj @@ -0,0 +1,16 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + +