public void OnRequest() { var settings = new PesudoStaticSettings(); using (Application.OverrideIoc()) { var configManagerMock = Substitute.For <GenericConfigManager>(); configManagerMock.GetData <PesudoStaticSettings>().Returns(settings); Application.Ioc.Unregister <GenericConfigManager>(); Application.Ioc.RegisterInstance(configManagerMock); var testUrl = new Func <string, string>(url => { string parsedUrl = null; var handlerMock = Substitute.For <IHttpRequestHandler>(); handlerMock.When(h => h.OnRequest()).Do(callInfo => { if (parsedUrl == null) { var request = HttpManager.CurrentContext.Request; parsedUrl = request.Path + request.QueryString; } }); Application.Ioc.Unregister <IHttpRequestHandler>(); Application.Ioc.RegisterInstance(handlerMock); Application.Ioc.RegisterMany <PesudoStaticHandler>(ReuseType.Singleton); using (var context = HttpManager.OverrideContext(url, "GET")) { var handlers = Application.Ioc.ResolveMany <IHttpRequestHandler>().Reverse(); foreach (var handler in handlers) { handler.OnRequest(); } } return(parsedUrl); }); Assert.Equals(testUrl("/"), "/"); Assert.Equals(testUrl("/login.html"), "/login"); Assert.Equals(testUrl("/user/login.html"), "/user/login"); Assert.Equals(testUrl("/example/view-1.html"), "/example/view?id=1"); Assert.Equals(testUrl("/example/view-abc.html"), "/example/view?id=abc"); Assert.Equals(testUrl("/example/view-key-asd.html"), "/example/view?key=asd"); var result = testUrl("/example/view-name-john.html?key=%26"); Assert.IsTrueWith( (result == "/example/view?name=john&key=%26" || result == "/example/view?key=%26&name=john"), result); result = testUrl("/example/view-name-john-age-50.html"); Assert.IsTrueWith( (result == "/example/view?name=john&age=50" || result == "/example/view?age=50&name=john"), result); Assert.Equals(testUrl("/test-param-nums-error.html"), "/test-param-nums-error.html"); } }
public void Filter() { var settings = new PesudoStaticSettings(); settings.IncludeUrlPaths.Add("/include/me"); settings.ExcludeUrlPaths.Add("/exclude/me"); using (Application.OverrideIoc()) { var filter = new PesudoStaticUrlFilter(); var configManagerMock = Substitute.For <GenericConfigManager>(); configManagerMock.GetData <PesudoStaticSettings>().Returns(settings); Application.Ioc.Unregister <GenericConfigManager>(); Application.Ioc.RegisterInstance(configManagerMock); var testUrl = new Func <string, string>(url => { filter.Filter(ref url); return(url); }); Assert.Equals(testUrl(""), ""); Assert.Equals(testUrl("/"), "/"); Assert.Equals(testUrl("#abc"), "#abc"); Assert.Equals(testUrl("http://localhost/"), "http://localhost/"); Assert.Equals(testUrl("ftp://localhost/"), "ftp://localhost/"); Assert.Equals(testUrl("/test/abc.jpg"), "/test/abc.jpg"); Assert.Equals(testUrl("/test/abc/"), "/test/abc/"); Assert.Equals(testUrl("/test/abc/a-b?id=1"), "/test/abc/a-b?id=1"); Assert.Equals(testUrl("/test/a-bc/ab?id=1"), "/test/a-bc/ab-1.html"); Assert.Equals(testUrl("/exclude/me"), "/exclude/me"); settings.PesudoStaticPolicy = PesudoStaticPolicies.WhiteListPolicy; Assert.Equals(testUrl("/include/me"), "/include/me.html"); Assert.Equals(testUrl("/otherwise"), "/otherwise"); settings.PesudoStaticPolicy = PesudoStaticPolicies.BlackListPolicy; settings.EnablePesudoStatic = false; Assert.Equals(testUrl("/no_enabled"), "/no_enabled"); settings.EnablePesudoStatic = true; Assert.Equals(testUrl("/enabled"), "/enabled.html"); Assert.Equals(testUrl("login"), "login.html"); Assert.Equals(testUrl("/example/view?id=1"), "/example/view-1.html"); Assert.Equals(testUrl("/example/view?Id=1"), "/example/view-Id-1.html"); var result = testUrl("/example/view?tag=123&key=asd"); Assert.IsTrueWith( (result == "/example/view-tag-123-key-asd.html" || result == "/example/view-key-asd-tag-123.html"), result); Assert.Equals(testUrl("view?name=john&key=1-1"), "view-name-john.html?key=1-1"); Assert.Equals(testUrl("view?name=john&key=%26"), "view-name-john.html?key=%26"); } }
public void Filter() { var settings = new PesudoStaticSettings(); settings.IncludeUrlPaths.Add("/include/me"); settings.ExcludeUrlPaths.Add("/exclude/me"); using (Application.OverrideIoc()) { var filter = new PesudoStaticUrlFilter(); Application.Ioc.Unregister <GenericConfigManager>(); Application.Ioc.RegisterInstance <GenericConfigManager>( new PesudoStaticHandlerTest.GenericConfigManagerMock(settings)); var testUrl = new Func <string, string>(url => { filter.Filter(ref url); return(url); }); Assert.Equals(testUrl(""), ""); Assert.Equals(testUrl("/"), "/"); Assert.Equals(testUrl("#abc"), "#abc"); Assert.Equals(testUrl("http://localhost/"), "http://localhost/"); Assert.Equals(testUrl("ftp://localhost/"), "ftp://localhost/"); Assert.Equals(testUrl("/test/abc.jpg"), "/test/abc.jpg"); Assert.Equals(testUrl("/test/abc/"), "/test/abc/"); Assert.Equals(testUrl("/test/abc/a.b?id=1"), "/test/abc/a.b?id=1"); Assert.Equals(testUrl("/test/a-bc/ab?id=1"), "/test/a-bc/ab.1.html"); Assert.Equals(testUrl("/exclude/me"), "/exclude/me"); settings.PesudoStaticPolicy = PesudoStaticPolicies.WhiteListPolicy; Assert.Equals(testUrl("/include/me"), "/include/me.html"); Assert.Equals(testUrl("/otherwise"), "/otherwise"); settings.PesudoStaticPolicy = PesudoStaticPolicies.BlackListPolicy; settings.EnablePesudoStatic = false; Assert.Equals(testUrl("/no_enabled"), "/no_enabled"); settings.EnablePesudoStatic = true; Assert.Equals(testUrl("/enabled"), "/enabled.html"); Assert.Equals(testUrl("login"), "login.html"); Assert.Equals(testUrl("/example/view?id=1"), "/example/view.1.html"); Assert.Equals(testUrl("/example/view?Id=1"), "/example/view.Id.1.html"); var result = testUrl("/example/view?tag=123&key=asd"); Assert.IsTrueWith( (result == "/example/view.tag.123.key.asd.html" || result == "/example/view.key.asd.tag.123.html"), result); Assert.Equals(testUrl("view?name=john&key=1.1"), "view.name.john.html?key=1.1"); Assert.Equals(testUrl("view?name=john&key=%26"), "view.name.john.html?key=%26"); } }
public void OnRequest() { var settings = new PesudoStaticSettings(); using (Application.OverrideIoc()) { var configManagerMock = Substitute.For <GenericConfigManager>(); configManagerMock.GetData <PesudoStaticSettings>().Returns(settings); Application.Ioc.Unregister <GenericConfigManager>(); Application.Ioc.RegisterInstance(configManagerMock); var testUrl = new Func <string, string>(url => { string parsedUrl = null; var wrapper = new PesudoStaticHandlerWrapper(); using (HttpManager.OverrideContext(url, HttpMethods.GET)) { wrapper.WrapHandlerAction(() => { var request = HttpManager.CurrentContext.Request; parsedUrl = request.Path + request.QueryString; })(); } return(parsedUrl); }); Assert.Equals(testUrl("/"), "/"); Assert.Equals(testUrl("/login.html"), "/login"); Assert.Equals(testUrl("/user/login.html"), "/user/login"); Assert.Equals(testUrl("/example/view.1.html"), "/example/view?id=1"); Assert.Equals(testUrl("/example/view.abc.html"), "/example/view?id=abc"); Assert.Equals(testUrl("/example/view.key.asd.html"), "/example/view?key=asd"); var result = testUrl("/example/view.name.john.html?key=%26"); Assert.IsTrueWith( (result == "/example/view?name=john&key=%26" || result == "/example/view?key=%26&name=john"), result); result = testUrl("/example/view.name.john.age.50.html"); Assert.IsTrueWith( (result == "/example/view?name=john&age=50" || result == "/example/view?age=50&name=john"), result); Assert.Equals(testUrl("/test.param.nums.error.html"), "/test.param.nums.error.html"); } }
public GenericConfigManagerMock(PesudoStaticSettings settings) { _settings = settings; }