From 40662b1340fe07f45a6a1e6ba72a1143590a753d Mon Sep 17 00:00:00 2001 From: tonyfages Date: Sun, 7 Apr 2024 13:20:56 +0200 Subject: [PATCH] =?UTF-8?q?Add=20some=20Tests=20=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.idea/.idea.VeraxShield/.idea/.gitignore | 15 +++++ .../.idea.VeraxShield/.idea/indexLayout.xml | 8 +++ .../.idea/.idea.VeraxShield/.idea/vcs.xml | 6 ++ VeraxShield/TestVeraxShield/GlobalUsings.cs | 1 + .../ModeleAppUtilisateurTests.cs | 47 +++++++++++++ .../TestVeraxShield/ModeleCurrentUserTests.cs | 57 ++++++++++++++++ .../TestVeraxShield/ModeleUtilisateurTests.cs | 66 +++++++++++++++++++ .../TestVeraxShield/TestVeraxShield.csproj | 45 +++++++++++++ .../TestVeraxShield/UtlisateurFactoryTests.cs | 35 ++++++++++ VeraxShield/VeraxShield.sln | 6 ++ ...Utilisateur.cs => ModeleAppUtilisateur.cs} | 62 ++++++++--------- 11 files changed, 317 insertions(+), 31 deletions(-) create mode 100644 VeraxShield/.idea/.idea.VeraxShield/.idea/.gitignore create mode 100644 VeraxShield/.idea/.idea.VeraxShield/.idea/indexLayout.xml create mode 100644 VeraxShield/.idea/.idea.VeraxShield/.idea/vcs.xml create mode 100644 VeraxShield/TestVeraxShield/GlobalUsings.cs create mode 100644 VeraxShield/TestVeraxShield/ModeleAppUtilisateurTests.cs create mode 100644 VeraxShield/TestVeraxShield/ModeleCurrentUserTests.cs create mode 100644 VeraxShield/TestVeraxShield/ModeleUtilisateurTests.cs create mode 100644 VeraxShield/TestVeraxShield/TestVeraxShield.csproj create mode 100644 VeraxShield/TestVeraxShield/UtlisateurFactoryTests.cs rename VeraxShield/VeraxShield/modele/authentification/{AppUtilisateur.cs => ModeleAppUtilisateur.cs} (79%) diff --git a/VeraxShield/.idea/.idea.VeraxShield/.idea/.gitignore b/VeraxShield/.idea/.idea.VeraxShield/.idea/.gitignore new file mode 100644 index 0000000..10eddc8 --- /dev/null +++ b/VeraxShield/.idea/.idea.VeraxShield/.idea/.gitignore @@ -0,0 +1,15 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/.idea.VeraxShield.iml +/contentModel.xml +/modules.xml +/projectSettingsUpdater.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# GitHub Copilot persisted chat sessions +/copilot/chatSessions diff --git a/VeraxShield/.idea/.idea.VeraxShield/.idea/indexLayout.xml b/VeraxShield/.idea/.idea.VeraxShield/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/VeraxShield/.idea/.idea.VeraxShield/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/VeraxShield/.idea/.idea.VeraxShield/.idea/vcs.xml b/VeraxShield/.idea/.idea.VeraxShield/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/VeraxShield/.idea/.idea.VeraxShield/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/VeraxShield/TestVeraxShield/GlobalUsings.cs b/VeraxShield/TestVeraxShield/GlobalUsings.cs new file mode 100644 index 0000000..8c927eb --- /dev/null +++ b/VeraxShield/TestVeraxShield/GlobalUsings.cs @@ -0,0 +1 @@ +global using Xunit; \ No newline at end of file diff --git a/VeraxShield/TestVeraxShield/ModeleAppUtilisateurTests.cs b/VeraxShield/TestVeraxShield/ModeleAppUtilisateurTests.cs new file mode 100644 index 0000000..23fc0a0 --- /dev/null +++ b/VeraxShield/TestVeraxShield/ModeleAppUtilisateurTests.cs @@ -0,0 +1,47 @@ +namespace TestVeraxShield; + +public class ModeleAppUtilisateurTests +{ + + [Fact] + public void Constructeur_DoitInitialiserProprietes() + { + // Arrange & Act + var utilisateur = new ModeleAppUtilisateur("pseudoTest", "NomTest", "PrenomTest", "email@test.com", "motdepasse", "RoleTest"); + + // Assert + Assert.Equal("pseudoTest", utilisateur.Pseudo); + Assert.Equal("NomTest", utilisateur.Nom); + Assert.Equal("PrenomTest", utilisateur.Prenom); + Assert.Equal("email@test.com", utilisateur.Mail); + Assert.Equal("motdepasse", utilisateur.MotDePasse); + Assert.Contains("RoleTest", utilisateur.Roles); + } + + [Fact] + public void AjouterRole_DoItAjouterNouveauRole() + { + // Arrange + var utilisateur = new ModeleAppUtilisateur("pseudoTest", "NomTest", "PrenomTest", "email@test.com", "motdepasse", "RoleTest"); + + // Act + utilisateur.ajouterRole("NouveauRole"); + + // Assert + Assert.Contains("NouveauRole", utilisateur.Roles); + } + + [Fact] + public void SupprimerRole_DoItSupprimerRoleExistant() + { + // Arrange + var utilisateur = new ModeleAppUtilisateur("pseudoTest", "NomTest", "PrenomTest", "email@test.com", "motdepasse", "RoleTest"); + utilisateur.ajouterRole("NouveauRole"); + + // Act + utilisateur.supprimerRole("RoleTest"); + + // Assert + Assert.DoesNotContain("RoleTest", utilisateur.Roles); + } +} \ No newline at end of file diff --git a/VeraxShield/TestVeraxShield/ModeleCurrentUserTests.cs b/VeraxShield/TestVeraxShield/ModeleCurrentUserTests.cs new file mode 100644 index 0000000..e6d7975 --- /dev/null +++ b/VeraxShield/TestVeraxShield/ModeleCurrentUserTests.cs @@ -0,0 +1,57 @@ +namespace TestVeraxShield; + +public class ModeleCurrentUserTests +{ + [Fact] + public void InitializesCorrectly() + { + var utilisateur = new UtilisateurCourant(); + + Assert.Null(utilisateur.Claims); + Assert.False(utilisateur.EstAuthentifie); + Assert.Null(utilisateur.Pseudo); + } + + [Fact] + public void AddsAndUpdatesClaimsCorrectly() + { + var utilisateur = new UtilisateurCourant { Claims = new Dictionary() }; + utilisateur.Claims.Add("role", "user"); + + Assert.Equal("user", utilisateur.Claims["role"]); + + utilisateur.Claims["role"] = "admin"; + Assert.Equal("admin", utilisateur.Claims["role"]); + } + + [Fact] + public void RemovesClaimsCorrectly() + { + var utilisateur = new UtilisateurCourant { Claims = new Dictionary() }; + utilisateur.Claims.Add("role", "user"); + utilisateur.Claims.Remove("role"); + + Assert.False(utilisateur.Claims.ContainsKey("role")); + } + + [Fact] + public void TogglesAuthenticationState() + { + var utilisateur = new UtilisateurCourant(); + utilisateur.EstAuthentifie = true; + + Assert.True(utilisateur.EstAuthentifie); + + utilisateur.EstAuthentifie = false; + Assert.False(utilisateur.EstAuthentifie); + } + + [Fact] + public void UpdatesPseudoCorrectly() + { + var utilisateur = new UtilisateurCourant(); + utilisateur.Pseudo = "TestUser"; + + Assert.Equal("TestUser", utilisateur.Pseudo); + } +} \ No newline at end of file diff --git a/VeraxShield/TestVeraxShield/ModeleUtilisateurTests.cs b/VeraxShield/TestVeraxShield/ModeleUtilisateurTests.cs new file mode 100644 index 0000000..508190f --- /dev/null +++ b/VeraxShield/TestVeraxShield/ModeleUtilisateurTests.cs @@ -0,0 +1,66 @@ +using VeraxShield.modele.utilisateurs; + +namespace TestVeraxShield; + +public class ModeleUtilisateurTests +{ + [Fact] + public void ConstructorAssignsPropertiesCorrectly() + { + // Arrange + string expectedPseudo = "TestPseudo"; + string expectedNom = "TestNom"; + string expectedPrenom = "TestPrenom"; + string expectedRole = "TestRole"; + string expectedMdp = "TestMdp"; + string expectedMail = "test@mail.com"; + bool expectedIsBan = true; + + // Act + Utilisateur utilisateur = new Utilisateur(expectedPseudo, expectedNom, expectedPrenom, expectedRole, expectedMdp, expectedMail, expectedIsBan); + + // Assert + Assert.Equal(expectedPseudo, utilisateur.Pseudo); + Assert.Equal(expectedNom, utilisateur.Nom); + Assert.Equal(expectedPrenom, utilisateur.Prenom); + Assert.Equal(expectedRole, utilisateur.Role); + Assert.Equal(expectedMdp, utilisateur.Mdp); + Assert.Equal(expectedMail, utilisateur.Mail); + Assert.Equal(expectedIsBan, utilisateur.IsBan); + } + + [Theory] + [InlineData("NewPseudo", "NewNom", "NewPrenom", "NewRole", "NewMdp", "new@mail.com", false)] + [InlineData("AnotherPseudo", "AnotherNom", "AnotherPrenom", "AnotherRole", "AnotherMdp", "another@mail.com", true)] + public void PropertiesUpdateCorrectly(string pseudo, string nom, string prenom, string role, string mdp, string mail, bool isBan) + { + // Arrange + Utilisateur utilisateur = new Utilisateur(pseudo, nom, prenom, role, mdp, mail, isBan); + + // Act - changing values to test setter + string updatedPseudo = pseudo + "Update"; + string updatedNom = nom + "Update"; + string updatedPrenom = prenom + "Update"; + string updatedRole = role + "Update"; + string updatedMdp = mdp + "Update"; + string updatedMail = "updated@" + mail; + bool updatedIsBan = !isBan; + + utilisateur.Pseudo = updatedPseudo; + utilisateur.Nom = updatedNom; + utilisateur.Prenom = updatedPrenom; + utilisateur.Role = updatedRole; + utilisateur.Mdp = updatedMdp; + utilisateur.Mail = updatedMail; + utilisateur.IsBan = updatedIsBan; + + // Assert + Assert.Equal(updatedPseudo, utilisateur.Pseudo); + Assert.Equal(updatedNom, utilisateur.Nom); + Assert.Equal(updatedPrenom, utilisateur.Prenom); + Assert.Equal(updatedRole, utilisateur.Role); + Assert.Equal(updatedMdp, utilisateur.Mdp); + Assert.Equal(updatedMail, utilisateur.Mail); + Assert.Equal(updatedIsBan, utilisateur.IsBan); + } +} diff --git a/VeraxShield/TestVeraxShield/TestVeraxShield.csproj b/VeraxShield/TestVeraxShield/TestVeraxShield.csproj new file mode 100644 index 0000000..14bbc31 --- /dev/null +++ b/VeraxShield/TestVeraxShield/TestVeraxShield.csproj @@ -0,0 +1,45 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + + + + + + + + + + diff --git a/VeraxShield/TestVeraxShield/UtlisateurFactoryTests.cs b/VeraxShield/TestVeraxShield/UtlisateurFactoryTests.cs new file mode 100644 index 0000000..c238ad8 --- /dev/null +++ b/VeraxShield/TestVeraxShield/UtlisateurFactoryTests.cs @@ -0,0 +1,35 @@ +namespace TestVeraxShield.factoriesTests; + +using Xunit; +using VeraxShield.factories; +using VeraxShield.composants.formulaires.modeles; +using VeraxShield.modele.utilisateurs; + +public class UtilisateursFactoryTests +{ + [Fact] + public void ConvertsToUtilisateur_WithNewPasswordHashing() + { + // Arrange + var modele = new FormulaireAjoutModele { Mdp = "newPassword", /* other properties */ }; + + // Act + var utilisateur = UtilisateursFactory.toUtilisateur(modele); + + // Assert + Assert.NotEqual("newPassword", utilisateur.Mdp); + } + + [Fact] + public void ConvertsToModele_FromUtilisateur() + { + // Arrange + var utilisateur = new Utilisateur("pseudo", "nom", "prenom", "role", "mdp", "mail", false); + + // Act + var modele = UtilisateursFactory.toModele(utilisateur); + + // Assert + } + +} diff --git a/VeraxShield/VeraxShield.sln b/VeraxShield/VeraxShield.sln index a6e072d..53b1f56 100644 --- a/VeraxShield/VeraxShield.sln +++ b/VeraxShield/VeraxShield.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 17.8.34322.80 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VeraxShield", "VeraxShield\VeraxShield.csproj", "{40D16910-ADA7-496E-BA48-AA9D6FF1E502}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestVeraxShield", "TestVeraxShield\TestVeraxShield.csproj", "{7924C3CD-C50B-41D1-8A93-C4E0AF0F1B3C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,10 @@ Global {40D16910-ADA7-496E-BA48-AA9D6FF1E502}.Debug|Any CPU.Build.0 = Debug|Any CPU {40D16910-ADA7-496E-BA48-AA9D6FF1E502}.Release|Any CPU.ActiveCfg = Release|Any CPU {40D16910-ADA7-496E-BA48-AA9D6FF1E502}.Release|Any CPU.Build.0 = Release|Any CPU + {7924C3CD-C50B-41D1-8A93-C4E0AF0F1B3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7924C3CD-C50B-41D1-8A93-C4E0AF0F1B3C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7924C3CD-C50B-41D1-8A93-C4E0AF0F1B3C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7924C3CD-C50B-41D1-8A93-C4E0AF0F1B3C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/VeraxShield/VeraxShield/modele/authentification/AppUtilisateur.cs b/VeraxShield/VeraxShield/modele/authentification/ModeleAppUtilisateur.cs similarity index 79% rename from VeraxShield/VeraxShield/modele/authentification/AppUtilisateur.cs rename to VeraxShield/VeraxShield/modele/authentification/ModeleAppUtilisateur.cs index 662f348..742bc82 100644 --- a/VeraxShield/VeraxShield/modele/authentification/AppUtilisateur.cs +++ b/VeraxShield/VeraxShield/modele/authentification/ModeleAppUtilisateur.cs @@ -1,32 +1,32 @@ -public class AppUtilisateur -{ - public string MotDePasse { get; set; } - public List Roles { get; set; } - public string Pseudo { get; set; } - public string Prenom { get; set; } - public string Nom { get; set; } - public string Mail { get; set; } - - - public AppUtilisateur(string pseudo,string nom, string prenom, string mail, string mdp, String premierRole) - { - this.MotDePasse = mdp; - this.Pseudo = pseudo; - this.Mail = mail; - this.Prenom = prenom; - this.Nom = nom; - - this.Roles = new List(); - this.Roles.Add(premierRole); - } - - public void ajouterRole(string nouveauRole) - { - this.Roles.Add(nouveauRole); - } - - public void supprimerRole(string ancienRole) - { - this.Roles.Remove(ancienRole); - } +public class ModeleAppUtilisateur +{ + public string MotDePasse { get; set; } + public List Roles { get; set; } + public string Pseudo { get; set; } + public string Prenom { get; set; } + public string Nom { get; set; } + public string Mail { get; set; } + + + public ModeleAppUtilisateur(string pseudo,string nom, string prenom, string mail, string mdp, String premierRole) + { + this.MotDePasse = mdp; + this.Pseudo = pseudo; + this.Mail = mail; + this.Prenom = prenom; + this.Nom = nom; + + this.Roles = new List(); + this.Roles.Add(premierRole); + } + + public void ajouterRole(string nouveauRole) + { + this.Roles.Add(nouveauRole); + } + + public void supprimerRole(string ancienRole) + { + this.Roles.Remove(ancienRole); + } } \ No newline at end of file