このDotNetOpenAuth応答オブジェクトをmoqするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/820308

  •  03-07-2019
  •  | 
  •  

質問

iには DotNetOpenAuth (正式にはDotNetOpenIdとして知られている)を取り込むメソッドがあります< code> Response オブジェクト。私のメソッドは、要求されたデータを抽出し、このユーザーがシステムに存在するかどうかを確認します。yaddayadda yadda ...そして終了すると、認証されたユーザーインスタンスを返します。

今.. moq を使用してこの応答オブジェクトをモックアップし、認証方法( 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. ..
}

モックフレームワーク:moq
言語:.NET C#3.5 sp1
応答オブジェクト:DotNetOpenAuthフレームワークから取得

役に立ちましたか?

解決

特にMoqに精通していませんが、応答オブジェクトは DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationResponse を実装するタイプです。そのため、同じインターフェースで、同じ種類の値を返すように準備されています。

... Moqをダウンロードし、IAuthenticationResponseをモックアップしました:

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

明らかに、結果を Console.WriteLine に送信するのではなく、テストするメソッドに resp オブジェクトを渡します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top