Question

J'ai une méthode qui intègre un DotNetOpenAuth (officiellement appelé DotNetOpenId) < code> objet de réponse . Ma méthode extrait toutes les données revendiquées, vérifie si cet utilisateur existe dans notre système, yadda yadda yadda ... et, une fois l'opération terminée, renvoie l'instance de l'utilisateur autorisé.

Maintenant .. comment puis-je utiliser moq pour simuler cet objet de réponse, afin de tester ma méthode d'authentification ( AuthenticateUser () )?

switch (response.Status)
{
    case AuthenticationStatus.Authenticated:

    User user = null;
    try
    {
        // Extract the claimed information and 
        // check if this user is valid, etc.
        // Any errors with be thrown as Authentication Errors.
        user = _authenticationService.AuthenticateUser(response) as User;
    }
    catch (AuthenticationException exception)
    {
        ViewData.ModelState.AddModelError("AuthenticationError", exception);
    }

    .. other code, like forms auth, other response.status' etc. ..
}

Cadre moqueur: moq
Langue: .NET C # 3.5 sp1
Objet de réponse: extrait du framework DotNetOpenAuth

Était-ce utile?

La solution

Je ne connais pas particulièrement Moq, mais l'objet response est un type qui implémente DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationResponse . Il est donc facile de le simuler en créant une classe implémentant le même interface et est prêt à renvoyer les mêmes types de valeurs.

... vient de télécharger Moq et de simuler un IAuthenticationResponse comme suit:

var response = new Mock<IAuthenticationResponse>(MockBehavior.Loose);
response.SetupGet(r => r.ClaimedIdentifier)
        .Returns("http://blog.nerdbank.net/");
response.SetupGet(r => r.Status)
        .Returns(AuthenticationStatus.Authenticated);
response.SetupGet(r => r.FriendlyIdentifierForDisplay)
        .Returns("blog.nerdbank.net");

IAuthenticationResponse resp = response.Object;
Console.WriteLine(resp.ClaimedIdentifier);

Évidemment, au lieu d'envoyer le résultat à Console.WriteLine , vous souhaitez transmettre l'objet resp à la méthode que vous testez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top