このDotNetOpenAuth応答オブジェクトをmoqするにはどうすればよいですか?
-
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
オブジェクトを渡します。
所属していません StackOverflow