私はDotNetOpenAuth CTPライブラリを使用してoauthプロバイダを実装しています。そこで私はmvc3アプリケーションを作成しました。このアプリケーションには、サードパーティのアプリケーションを認証する目的で3つのメソッドを持つOAuthコントローラがあります。コントローラには、ライブラリが特定のタスクを完了するために必要なすべてのロジックをカプセル化するIOAuthServiceがありますが、サービスメソッドはコンストラクタが保護されたDotNetOpenOAuthオブジェクトを返します。ユニットテストdotnetopenauth ctp
私は自分のOAuthController内のメソッドの動作をテストしたいと思います。私はサービスメソッドをモックしようとしていますが、これを行うことはできませんでした。私はmoqライブラリにどのようなオブジェクトの型を返してもらいたいと思います。これらのオブジェクトのコンストラクタにアクセスすることができないので、私のコントローラメソッドでテストを実行することができません。
コントローラ:
public class OAuthController : Controller
{
private readonly IOAuthService _oAuthService;
public OAuthController(IOAuthService oAuthService)
{
_oAuthService = oAuthService;
}
[Authorize, AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Authorize()
{
ClientApplication requestingClient;
var request = _oAuthService.ReadAuthorizationRequest();
if (request == null)
{
throw new HttpException((int)HttpStatusCode.BadRequest, "Missing authorization request.");
}
var response = _oAuthService.RequestClientAuthorization(GetIdentity().Name, out requestingClient, request);
if (response != null)
{
return response.AsActionResult();
}
var model = new AuthorizeClientApplicationViewModel
{
ClientApplication = requestingClient.Name,
Scope = request.Scope,
AuthorizationRequest = request,
};
return View(model);
}
public virtual IIdentity GetIdentity()
{
return User.Identity;
}
}
私は、サードパーティ製のアプリは何の権限を持っていない時はいつでも、ビューは、アプリを承認する彼の許可を求めるユーザーにポップアップ表示されますことをテストします。 FOTこの私はモックする必要があります:
- _oAuthService.RequestClientAuthorization
私の試験方法の設定は、次にようになります。
var oAuthService = new Mock<IOAuthService>();
oAuthService.Setup(a => a.RequestClientAuthorization(userName, out client, pendingRequest)).Returns(new OutgoingWebResponse()); // DotNetOpenAuth doesn't allow me to do the **new OutgoingWebResponse**
PD:私は唯一の1を書いたこの質問のためにコントローラーのメソッドは3つあり、シナリオも同じです。
それは私がそれを試してみることができます! – Daniel