Testons notre UserDataLayer comment mocker un SignInManager ?–asp.net core

mocker identity et signinmanager

Avant de continuer nos tests d’intégration, nous avons remarqué que nous allions appeler un DataLayer dédié pour communiquer avec notre base de données et vérifier l’authentification de l’utilisateur. Or pour se connecter, nous allons utiliser le SignInManager d’Identity. Comment tester notre DataLayer avec cette classe ?

 

Découverte d’Identity de asp.net core

Identity existe déjà depuis de nombreuses années, sous .net. La communauté l’a bien évidemment porté sous .net core, puis l’a inclus dans asp.net core.

 

Ce package permet de gérer toute l’authentification dans une application :

 

Nous reviendrons dans un prochain article sur Identity, où nous le découvrirons dans sa totalité.

 

Tester notre DataLayer

Nous souhaitons encapsuler notre appel à la base de données, avec une classe dédiée : UserDataLayer.

Or, si nous mettons en place le principe TDD, nous allons créer notre classe de Test avant notre classe UserDataLayer.

 

Prévoir une méthode de récupération de l’utilisateur

Dans la méthode de notre classe, nous souhaitons rechercher un utilisateur suivant son login (email) et son mot de passe.

 

Pour vérifier le login et le mot de passe, nous utiliserons la classe d’Identity dédiée : SignInManager.

Nous créerons donc une méthode de récupération de l’utilisateur : GetOneAsync.

 

Tester la bonne classe

Or, quand tout sera implémenté, notre classe utilisera un context EntityFramework, pour vérifier le login et mot de passe en base de données.

 

Or, nous ne voulons pas vérifier que le SignInManager fonctionne. Nous souhaitons prouver que notre future classe UserDataLayer fonctionne bien selon les attentes écrites dans nos Tests unitaires.

 

Nous allons donc simuler (Mocker) la classe SignInManager !

 

Utilisation de Mock et de Fake

Nous allons arriver ainsi Ă  simuler la classe SignInManager, qui sera transmise en principe IoC, Ă  notre classe UserDatalayer.

 

Or, la classe SignInManager n’est pas simple à simuler !

Ainsi, nous allons arriver Ă  un mix entre Fake et Mock.

 

Voici le résultat :

Vous noterez :

  • la crĂ©ation de la classe Fake SignInManger
  • la crĂ©ation de la classe Fake UserManager

 

Nous allons ainsi pouvoir créer notre classe de Test pour prouver que le login fonctionne :

Vous noterez :

 

Création de la classe UserDataLayer validant nos tests

Et nous voilà prêt pour concevoir notre classe, notre réelle, pas la classe de Test.

En vrai, avec le principe TDD, nous aurions appliqué le principe Red Green Refactor, itératif.

 

Nous vous livrons ici le résultat de la classe :

 

A très vite pour d’autres astuces et tutoriaux, toujours avec curiosité !

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639