Mini-projet : PHPUnit
Étape 0 : GitHub
Créez un repository GitHub public avec un README et appelez-le bre04-phpunit.
Étape 1 : Post et PostTest
Vous allez créer une classe Post.
Les attributs privés
$titleest une string$contentest une string$slugest une string$privateest un booleen
Constructeur
Le constructeur prends tous les champs en paramètre et les initialise :
Par défaut
$privateestfalse.
Règles de validation
$titlene peut pas être vide$slugne peut pas être vide et ne contient que des caractères URL safe$contentne peut pas être vide
Getters et Setters
Tous les attributs ont des getters et setters publics.
Test
Rédigez le test unitaire pour la classe Post.
Étape 2 : User et UserTest
Vous allez créer une classe User.
Les attributs privés
$firstNameest une string$lastNameest une string$emailest une string$passwordest une string$rolesest un tableau (de string)
Constructeur
Le constructeur prends tous les champs en paramètre et les initialise :
Par défaut
$rolescontient une seule string :"ANONYMOUS".
Règles de validation
$firstNamene peut pas être vide$lastNamene peut pas être vide$emaildoit être une adresse email valide$passworddoit faire 8 caractères au minimu, contenir au moins un chiffre, une majuscule et un caractère spécial$rolesdoit au minimum contenir"ANONYMOUS", les autres rôles possibles sont"USER"et"ADMIN", si unUsera"USER"et/ou"ADMIN"il ne peut plus être"ANONYMOUS"
Getters et Setters
Tous les attributs ont des getters et setters publics.
Méthodes publiques
addRole(string $newRole) : arrayajoute un rôle au tableau des rôles et retourne le tableauremoveRole(string $role) : arrayretire un rôle au tableau des rôles et retourne le tableau
Test
Rédigez le test unitaire pour la classe User.
Étape 3 : Guard
Vous allez créer une classe Guard.
Méthodes publiques
giveAccess(Post $post, User $user) : User- Si le Post est privé et que le User est ANONYMOUS > une exception est levée indiquant que l'utilisateur ne peut pas être anonymeSi le Post est privé et que le User est USER > le User devient ADMINSi le Post est privé et que le User est ADMIN > rien ne se passeSi le Post est public et que le User est ANONYMOUS > le User devient USERSi le post est public et que le User est USER ou ADMIN > rien ne se passe
removeAccess(Post $post, User $user) : User- Si le Post est privé et que le User est ANONYMOUS : > rien ne se passeSi le Post est privé et que le User est USER : > le User devient ANONYMOUSSi le Post est privé et que le User est ADMIN : > le User devient USERSi le Post est public et que le User est ANONYMOUS > rien ne se passeSi le post est public et que le User est USER > le User devient ANONYMOUSSi le post est public et que le User est ADMIN > Le User devient USER
Test
Rédigez le test unitaire pour la classe Guard.