Pregunta

Tengo un método que toma un DotNetOpenAuth (conocido oficialmente como DotNetOpenId) < código> respuesta objeto. Mi método extrae los datos reclamados, comprueba si este usuario existe en nuestro sistema, yadda yadda yadda ... y cuando termina, devuelve la instancia del usuario autorizado.

Ahora ... ¿cómo puedo usar moq para simular este objeto de respuesta, para probar mi método de autenticación ( 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. ..
}

Marco de burla: moq
Idioma: .NET C # 3.5 sp1
Objeto de respuesta: tomado del marco DotNetOpenAuth

¿Fue útil?

Solución

No estoy familiarizado con Moq en particular, pero el objeto de respuesta es un tipo que implementa DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationResponse , por lo que se puede burlar fácilmente creando una clase que implemente la misma interfaz y está preparado para devolver los mismos tipos de valores.

... Acabo de descargar Moq y se burló de una Respuesta de Autentificación como esta:

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);

Obviamente, en lugar de enviar el resultado a Console.WriteLine , desearía pasar el objeto resp al método que está probando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top