On Thu, 11 Feb 2010 03:16:33 -0600 "Tiaan Geldenhuys" <tag...@gmail.com> wrote:
Hello, > The attached patch is a fix for System.Web.Security.Roles.IsUserInRole to > prevent ASP.NET MVC errors like the one shown at the bottom, which happens > when a user hasn't logged on and requests public pages with sections that > are dynamically removed using role-based access-restrictions. It now > behaves more like .NET that does not throw an exception. Thanks, that part of the patch looks ok. > Writing a test for this fix was a bit of a challenge -- it's no wonder there > is not any working test for the Roles class yet. :) To address this, the > MonoTests.SystemWeb.Framework.WebTest class was updated slightly to make it > possible to write self-contained tests for cases where you might want more > control over the resources that are copied to your hosted web application, > such as when creating Web.config files dynamically. The test for the > current fix also serves as an example of how this can be done. If these > changes are approved, one can expand on this for all the other Roles > methods. Unfortunately, the test can't be implemented this way. I committed your code, but laid out in a slightly different manner. The RoleProvider definition went to Web.config and Web.mono.config resources since overwriting Web.config in the middle of running of the test suite is not acceptable - the configs contain settings other tests rely upon. However, I have decided to commit your changes to WebTest as they may come useful in other scenarios. > > Please review and commit. Committed in r151519 (trunk), r151520 (2.6 branch) and r151521 (2.4 branch - backported without the WebTest changes) > > Thank you, Thanks! marek > Tiaan. > > NOTE: The patch files can be used without changes on both trunk and the 2.6 > branch. > > --------------- > > [System.Web.HttpUnhandledException]: Exception of type > 'System.Web.HttpUnhandledException' was thrown. > at System.Web.UI.Page.ProcessException (System.Exception e) [0x00000] in > <filename unknown>:0 > at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context) > [0x00000] in <filename unknown>:0 > at System.Web.HttpApplication+<Pipeline>c__Iterator5.MoveNext () [0x00000] > in <filename unknown>:0 > at System.Web.HttpApplication.Tick () [0x00000] in <filename unknown>:0 > [System.Web.HttpUnhandledException]: Exception of type > 'System.Web.HttpUnhandledException' was thrown. > at System.Web.UI.Page.ProcessException (System.Exception e) [0x00000] in > <filename unknown>:0 > at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context) > [0x00000] in <filename unknown>:0 > at System.Web.Mvc.ViewPage.RenderView (System.Web.Mvc.ViewContext > viewContext) [0x00000] in <filename unknown>:0 > at System.Web.Mvc.WebFormView.RenderViewPage (System.Web.Mvc.ViewContext > context, System.Web.Mvc.ViewPage page) [0x00000] in <filename unknown>:0 > at System.Web.Mvc.WebFormView.Render (System.Web.Mvc.ViewContext > viewContext, System.IO.TextWriter writer) [0x00000] in <filename unknown>:0 > at System.Web.Mvc.ViewResultBase.ExecuteResult > (System.Web.Mvc.ControllerContext context) [0x00000] in <filename unknown>:0 > > at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult > (System.Web.Mvc.ControllerContext controllerContext, > System.Web.Mvc.ActionResult actionResult) [0x00000] in <filename unknown>:0 > at > System.Web.Mvc.ControllerActionInvoker+<InvokeActionResultWithFilters>c__Ano > nStoreyE.<>m__11 () [0x00000] in <filename unknown>:0 > at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter > (IResultFilter filter, System.Web.Mvc.ResultExecutingContext preContext, > System.Func`1 continuation) [0x00000] in <filename unknown>:0 > [System.ArgumentException]: Username cannot be empty. > at SomeRoleProvider.IsUserInRole (System.String username, System.String > roleName) [0x00000] in <filename unknown>:0 > at System.Web.Security.Roles.IsUserInRole (System.String rolename) > [0x00000] in <filename unknown>:0 > at ASP.views_shared_site_master.__RenderTree (System.Web.UI.HtmlTextWriter > __output, System.Web.UI.Control parameterContainer) [0x00000] in <filename > unknown>:0 > at System.Web.UI.Control.RenderChildren (System.Web.UI.HtmlTextWriter > writer) [0x00000] in <filename unknown>:0 > at System.Web.UI.Control.Render (System.Web.UI.HtmlTextWriter writer) > [0x00000] in <filename unknown>:0 > at System.Web.UI.Control.RenderControl (System.Web.UI.HtmlTextWriter > writer) [0x00000] in <filename unknown>:0 > at System.Web.UI.Control.RenderChildren (System.Web.UI.HtmlTextWriter > writer) [0x00000] in <filename unknown>:0 > at System.Web.UI.Control.Render (System.Web.UI.HtmlTextWriter writer) > [0x00000] in <filename unknown>:0 > at System.Web.UI.Page.Render (System.Web.UI.HtmlTextWriter writer) > [0x00000] in <filename unknown>:0 > at System.Web.Mvc.ViewPage.Render (System.Web.UI.HtmlTextWriter writer) > [0x00000] in <filename unknown>:0 > at System.Web.UI.Control.RenderControl (System.Web.UI.HtmlTextWriter > writer) [0x00000] in <filename unknown>:0 > at System.Web.UI.Page.RenderPage () [0x00000] in <filename unknown>:0 > at System.Web.UI.Page.InternalProcessRequest () [0x00000] in <filename > unknown>:0 > at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context) > [0x00000] in <filename unknown>:0 > > =============== > > > _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list