Créez un repository GitHub public avec un README et appelez-le bre03-phpunit
.
Vous allez créer une classe Post
.
$title
est une string$content
est une string$slug
est une string$private
est un booleenLe constructeur prends tous les champs en paramètre et les initialise :
$private
est false
.$title
ne peut pas être vide$slug
ne peut pas être vide et ne contient que des caractères URL safe$content
ne peut pas être videTous les attributs ont des getters et setters publics.
Rédigez le test unitaire pour la classe Post
.
Vous allez créer une classe User
.
$firstName
est une string$lastName
est une string$email
est une string$password
est une string$roles
est un tableau (de string)Le constructeur prends tous les champs en paramètre et les initialise :
$roles
contient une seule string : "ANONYMOUS"
.$firstName
ne peut pas être vide$lastName
ne peut pas être vide$email
doit être une adresse email valide$password
doit faire 8 caractères au minimu, contenir au moins un chiffre, une majuscule et un caractère spécial$roles
doit au minimum contenir "ANONYMOUS"
, les autres rôles possibles sont "USER"
et "ADMIN"
, si un User
a "USER"
et/ou "ADMIN"
il ne peut plus être "ANONYMOUS"
Tous les attributs ont des getters et setters publics.
addRole(string $newRole) : array
ajoute un rôle au tableau des rôles et retourne le tableauremoveRole(string $role) : array
retire un rôle au tableau des rôles et retourne le tableauRédigez le test unitaire pour la classe User
.
Vous allez créer une classe Guard
.
giveAccess(Post $post, User $user) : User
removeAccess(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 anonyme
Si le Post est privé et que le User est USER : le User devient ADMIN
Si le Post est privé et que le User est ADMIN : rien ne se passe
Si le Post est public et que le User est ANONYMOUS Le User devient USER
Si le post est public et que le User est USER ou ADMIN Rien ne se passe
Si le Post est privé et que le User est ANONYMOUS : rien ne se passe
Si le Post est privé et que le User est USER : le User devient ANONYMOUS
Si le Post est privé et que le User est ADMIN : le User devient USER
Si le Post est public et que le User est ANONYMOUS Rien ne se passe
Si le post est public et que le User est USER Le User devient ANONYMOUS
Si le post est public et que le User est ADMIN Le User devient USER
Rédigez le test unitaire pour la classe Guard
.