ASP.NET MVCを使用してWebページの認証を単体テストするにはどうすればよいですか?
-
02-07-2019 - |
質問
そのプロファイルの所有者のみがアクセスできるプロファイル ページがあるとします。このプロフィール ページは次の場所にあります。
ユーザー/プロフィール/{ユーザーID}
ここで、他のユーザーによるこのページへのアクセスを防ぐために、現在のセッションの ID をチェックするように UserController クラスの Profile 関数を構造化できると想像します。
HttpContext.Current.User.Identity.Name
ID が URL の ID と一致する場合は、続行します。それ以外の場合は、何らかのエラー ページにリダイレクトされます。
私の質問は、このようなものをどのように単体テストするかということです。チェックを行うには、コントローラーの HttpContext の代わりにある種の依存関係注入を使用する必要があると思いますが、それを行うための最良の方法が何かは不明です。アドバイスがあれば助かります。
解決 2
結局、Kazi Manzur の「UserNameFilter」を使用することになりました。 ブログ投稿. 。魅力的に動作し、単体テストも簡単です。
他のヒント
上のリンクは良いリンクです。また、プログラムで User.Identity.Name 値をチェックする代わりに、この記事で説明されているように Authorize 属性を使用する必要があることも付け加えておきます。
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx
おそらく、コントローラーコンテキストにフェイクを使用することでそれを行うことができます。この記事をチェックしてください: http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx
ここで、偽の HttpContext を使用したモックが登場します。