|
|
@ -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();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|