stub #30

Merged
maxime.sapountzis merged 2 commits from stub into master 1 year ago

@ -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

@ -0,0 +1,120 @@
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<UserDbContext>()
.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();
}
}
}

@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\EntityFramework\Entities.csproj" />
<ProjectReference Include="..\Model\Model.csproj" />
<ProjectReference Include="..\StubbedContextLib\StubbedContextLib.csproj" />
</ItemGroup>
</Project>
Loading…
Cancel
Save