FindByEmailAsync renvoie null alors que l’utilisateur existe bien en base de test–asp.net core et Identity

Corrigeons nos tests d'intégration

Nous sommes toujours dans notre phase de test d’intégration. Après créer la base de données de test (une base en mémoire), nous avons souhaité valider l’appel de connexion avec login et mot de passe.
Or, nous avons rencontré un roc : malgré notre utilisateur insérer en base manuellement : le test ne passait jamais !

 

Rappel du contexte

Nous en sommes à valider notre connexion avec Login et Mot de passe. L’idée ici, est de valider de bout en bout l’appel (test e2e).

Voici le code mise en place :

Et du côté de notre DataLayer :

Et malgré tout ça, notre retour est toujours NotSucceeded. Pourquoi ?

 

La faute Ă  UserManager

Testons d’abord l’appel Entities suivant :

 

carbon - 2019-05-27T100320.553
Devinez quoi ? On a bien un utilisateur de retourner dans testUser ! Piste intéressante, n’est ce pas ? Smile

 

Puis, continuons avec un test depuis le UserManager, et non le SignInManager :

carbon - 2019-05-27T100334.621

Et là, comme par “magie”, nous n’avons aucun utilisateur de retourner dans dataUser. Comment se fait-ce ? (parce que Cul répondrez vous ! Smile with tongue out)

 

Il se passe quelques chose dans le UserManager, assurément !

Venez avec moi, allons jeter un coup d’oeil, soyons curieux-euses, dans le code source d’Identity.

 

Il utilise la méthode NormalizeEmail ! Le malin, il ne nous l’avait pas dit …

 

Alors testons avec ce code, en complétant notre utilisateur de Fake en base de données :

carbon - 2019-05-27T101108.939

Et …. et … ça ne fonctionne toujours pas ! Sacre bleu !

 

Il nous manque un point : la normalization de notre Email et de notre UserName !

 

Et nous voilĂ  avec ce code :

Et … et … ça fonctionne : Hurray !! Smile

 

Aller plus loin avec ILookupNormalizer

On peut aller plus loin avec une classe qui implémente ILookupNormalizer (il en existe une de base qui est injectée avec Identity).

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