كيف يمكنك وحدة اختبار ترخيص صفحة الويب باستخدام ASP.NET MVC؟
-
02-07-2019 - |
سؤال
لنفترض أن لديك صفحة ملف شخصي لا يمكن الوصول إليها إلا من خلال مالك هذا الملف الشخصي.هذه الصفحة الشخصية موجودة في:
المستخدم/الملف الشخصي/{userID}
الآن، أتخيل أنه من أجل منع وصول المستخدمين الآخرين إلى هذه الصفحة، يمكنك هيكلة وظيفة ملف تعريف فئة UserController الخاصة بك للتحقق من هوية الجلسة الحالية:
HttpContext.Current.User.Identity.Name
إذا كان المعرف يطابق المعرف الموجود في عنوان url، فيمكنك المتابعة.وإلا فإنك تقوم بإعادة التوجيه إلى نوع ما من صفحة الخطأ.
سؤالي هو كيف يمكنك اختبار وحدة شيء مثل هذا؟أعتقد أنك بحاجة إلى استخدام نوع من حقن التبعية بدلاً من HttpContext في وحدة التحكم لإجراء الفحص، لكنني غير واضح ما هي أفضل طريقة للقيام بذلك.أي نصيحة قد تكون مساعدة.
المحلول 2
انتهى بي الأمر باستخدام "UserNameFilter" الموضح في كازي منظور مشاركة مدونة.يعمل مثل السحر وسهل اختبار الوحدة.
نصائح أخرى
الرابط أعلاه هو فكرة جيدة.أود أيضًا أن أضيف أنه بدلاً من التحقق برمجيًا من قيمة User.Identity.Name، يجب عليك استخدام سمات التفويض كما هو موضح في المقالة:
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 المزيف.