SimulateRequest() 공개 메소드

Sets up the HttpContext objects to simulate a GET request.
Simulates a request to http://localhost/
public SimulateRequest ( ) : HttpSimulator
리턴 HttpSimulator
예제 #1
0
 public void CanGetLocalPathCorrectly(string url, string appPath, string expectedLocalPath)
 {
     HttpSimulator simulator = new HttpSimulator(appPath, @"c:\inetpub\wwwroot\AppPath\");
     simulator.SimulateRequest(new Uri(url));
     Assert.AreEqual(expectedLocalPath, HttpContext.Current.Request.Path);
     Assert.AreEqual(expectedLocalPath, HttpContext.Current.Request.Url.LocalPath);
 }
예제 #2
0
 public void CanDispose()
 {
     using (HttpSimulator simulator = new HttpSimulator())
     {
         simulator.SimulateRequest();
         Assert.IsNotNull(HttpContext.Current);
     }
     Assert.IsNull(HttpContext.Current);
 }
예제 #3
0
        public void CanGetReferer()
        {
            HttpSimulator simulator = new HttpSimulator();
            simulator.SetReferer(new Uri("http://example.com/Blah.aspx")).SimulateRequest();
            Assert.AreEqual(new Uri("http://example.com/Blah.aspx"), HttpContext.Current.Request.UrlReferrer);

            simulator = new HttpSimulator();
            simulator.SimulateRequest().SetReferer(new Uri("http://x.example.com/Blah.aspx"));
            Assert.AreEqual(new Uri("http://x.example.com/Blah.aspx"), HttpContext.Current.Request.UrlReferrer);
        }
예제 #4
0
        public void CanGetQueryString()
        {
            HttpSimulator simulator = new HttpSimulator();
            simulator.SimulateRequest(new Uri("http://localhost/Test.aspx?param1=value1&param2=value2&param3=value3"));
            for (int i = 1; i <= 3; i++)
                Assert.AreEqual("value" + i, HttpContext.Current.Request.QueryString["param" + i], "Could not find query string field 'param{0}'", i);

            simulator.SimulateRequest(new Uri("http://localhost/Test.aspx?param1=new-value1&param2=new-value2&param3=new-value3&param4=new-value4"));
            for (int i = 1; i <= 4; i++)
                Assert.AreEqual("new-value" + i, HttpContext.Current.Request.QueryString["param" + i], "Could not find query string field 'param{0}'", i);

            simulator.SimulateRequest(new Uri("http://localhost/Test.aspx?"));
            Assert.AreEqual(string.Empty, HttpContext.Current.Request.QueryString.ToString());
            Assert.AreEqual(0, HttpContext.Current.Request.QueryString.Count);

            simulator.SimulateRequest(new Uri("http://localhost/Test.aspx"));
            Assert.AreEqual(string.Empty, HttpContext.Current.Request.QueryString.ToString());
            Assert.AreEqual(0, HttpContext.Current.Request.QueryString.Count);

            simulator.SimulateRequest(new Uri("http://localhost/Test.aspx?param-name"));
            Assert.AreEqual("param-name", HttpContext.Current.Request.QueryString.ToString());
            Assert.AreEqual(1, HttpContext.Current.Request.QueryString.Count);
            Assert.IsNull(HttpContext.Current.Request.QueryString["param-name"]);
        }
예제 #5
0
        public void Users()
        {
            using (var httpSimulator = new HttpSimulator())
            {
                httpSimulator.SimulateRequest();
                AccountController controller = new AccountController(DependencyResolver.Current.GetService<IQueryBuilder>());
                ViewResult result = controller.Users() as ViewResult;

                Assert.IsInstanceOfType(result.Model, typeof(IEnumerable<User>));
                var users = result.Model as IEnumerable<User>;

                Assert.AreEqual(users.Count(), _users.Count());
                Assert.AreEqual(users.First().Id, 1);
                Assert.AreEqual(users.Last().Id, 10);
            }
        }
        public void FormValueDoesNotExistTest()
        {
            const string FormValue = "RandomFormValue";

            var configurationSection = new MaskedValuesConfigurationSection();
            configurationSection.RemoveAspxAuth = false;
            configurationSection.ReplacementText = "OBSCURED";
            configurationSection.FormVariables.Add(new MaskedItemElement(FormValue));

            using (HttpSimulator simulator = new HttpSimulator("/", @"c:\inetpub\"))
            {
                simulator.SimulateRequest(new Uri("http://localhost/"), HttpVerb.GET);

                var error = new Error(new HttpRequestValidationException(), HttpContext.Current);

                Assert.IsNull(error.Form[FormValue]);
            }
        }
        public void TestServerVariable()
        {
            const string ServerVariable = "REMOTE_USER";

            var configurationSection = new MaskedValuesConfigurationSection();
            configurationSection.RemoveAspxAuth = false;
            configurationSection.ReplacementText = "OBSCURED";
            configurationSection.ServerVariables.Add(new MaskedItemElement(ServerVariable));

            using (HttpSimulator simulator = new HttpSimulator("/", @"c:\inetpub\"))
            {
                simulator.SimulateRequest(new Uri("http://localhost/"));

                var error = new Error(new HttpRequestValidationException(), HttpContext.Current);

                Assert.IsNotNull(HttpContext.Current.Request.ServerVariables[ServerVariable]);

                ErrorHelper.Obscure(error, configurationSection);

                Assert.AreEqual(configurationSection.ReplacementText, error.ServerVariables[ServerVariable]);
            }
        }
예제 #8
0
        /// <summary>
        /// Determines whether this instance [can map path] the specified virtual path.
        /// </summary>
        /// <param name="virtualPath">The virtual path.</param>
        /// <param name="appPath">The app path.</param>
        /// <param name="expectedMapPath">The expected map path.</param>
        public void CanMapPath(string virtualPath, string appPath, string expectedMapPath)
        {
            var url = new Uri("http://localhost/Test/Test.aspx");
            var simulator = new HttpSimulator(appPath, @"c:\inetpub\wwwroot\");
            simulator.SimulateRequest(url);

            //Create a virtual path object.
            var vpath = ReflectionHelper.Instantiate("System.Web.VirtualPath, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", new[] { typeof(string) }, virtualPath);
            Assert.IsNotNull(vpath);

            var environment = HttpSimulatorTester.CallGetEnvironment();

            var vpathString = ReflectionHelper.InvokeProperty<string>(vpath, "VirtualPathString");
            var appVirtPath = ReflectionHelper.GetPrivateInstanceFieldValue<object>("_appVirtualPath", environment);
            Assert.IsNotNull(appVirtPath);
            Console.WriteLine("VPATH: " + vpath);
            Console.WriteLine("App-VPATH: " + appVirtPath);

            Console.WriteLine("vpath.VirtualPathString == '{0}'", vpathString);

            var mapping = ReflectionHelper.InvokeNonPublicMethod<string>(typeof(HostingEnvironment), "GetVirtualPathToFileMapping", vpath);
            Console.WriteLine("GetVirtualPathToFileMapping: --->{0}<---", (mapping ?? "{NULL}"));

            var o = ReflectionHelper.GetPrivateInstanceFieldValue<object>("_configMapPath", environment);
            Console.WriteLine("_configMapPath: {0}", o ?? "{null}");


            var mappedPath = ReflectionHelper.InvokeNonPublicMethod<string>(environment, "MapPathActual", vpath, false);
            Console.WriteLine("MAPPED: " + mappedPath);
            Assert.AreEqual(expectedMapPath, HttpContext.Current.Request.MapPath(virtualPath));
        }
예제 #9
0
        /// <summary>
        /// Determines whether this instance [can simulate request] the specified URL.
        /// </summary>
        /// <param name="url">The URL.</param>
        /// <param name="appPath">The app path.</param>
        /// <param name="physicalPath">The physical path.</param>
        /// <param name="expectedHost">The expected host.</param>
        /// <param name="expectedPort">The expected port.</param>
        /// <param name="expectedAppPath">The expected app path.</param>
        /// <param name="expectedLocalPath">The expected local path.</param>
        /// <param name="expectedPhysicalPath">The expected physical path.</param>
        public void CanSimulateRequest(string url, string appPath, string physicalPath, string expectedHost, int expectedPort, string expectedAppPath, string expectedLocalPath, string expectedPhysicalPath)
        {
            var simulator = new HttpSimulator(appPath, physicalPath);
            simulator.SimulateRequest(new Uri(url));

            Assert.AreEqual(expectedHost, HttpContext.Current.Request.Url.Host);
            Assert.AreEqual(expectedPort, HttpContext.Current.Request.Url.Port);
            Assert.AreEqual(expectedAppPath, HttpContext.Current.Request.ApplicationPath);
            Assert.AreEqual(expectedPhysicalPath, HttpContext.Current.Request.PhysicalApplicationPath);
            Assert.AreEqual(expectedLocalPath, HttpContext.Current.Request.Url.LocalPath);
        }
예제 #10
0
 public void CanGetResponse()
 {
     var simulator = new HttpSimulator();
     simulator.SimulateRequest();
     HttpContext.Current.Response.Write("Hello World!");
     HttpContext.Current.Response.Flush();
     Assert.AreEqual("Hello World!", simulator.ResponseText);
 }
예제 #11
0
        public void CanSimulateFormPost()
        {
            using (var simulator = new HttpSimulator())
            {
                var form = new NameValueCollection {{"Test1", "Value1"}, {"Test2", "Value2"}};
                simulator.SimulateRequest(new Uri("http://localhost/Test.aspx"), form);

                Assert.AreEqual("Value1", HttpContext.Current.Request.Form["Test1"]);
                Assert.AreEqual("Value2", HttpContext.Current.Request.Form["Test2"]);
            }

            using (var simulator = new HttpSimulator())
            {
                simulator.SetFormVariable("Test1", "Value1")
                         .SetFormVariable("Test2", "Value2")
                         .SimulateRequest(new Uri("http://localhost/Test.aspx"));

                Assert.AreEqual("Value1", HttpContext.Current.Request.Form["Test1"]);
                Assert.AreEqual("Value2", HttpContext.Current.Request.Form["Test2"]);
            }
        }
예제 #12
0
        /// <summary>
        /// Determines whether this instance [can set app physical path correctly] the specified URL.
        /// </summary>
        /// <param name="url">The URL.</param>
        /// <param name="appPath">The app path.</param>
        /// <param name="appPhysicalPath">The app physical path.</param>
        /// <param name="expectedPhysicalAppPath">The expected physical app path.</param>
        /// <param name="expectedPhysicalPath">The expected physical path.</param>
        public void CanSetAppPhysicalPathCorrectly(string url, string appPath, string appPhysicalPath, string expectedPhysicalAppPath, string expectedPhysicalPath)
        {
            var simulator = new HttpSimulator(appPath, appPhysicalPath);
            Assert.AreEqual(expectedPhysicalAppPath, simulator.PhysicalApplicationPath);
            simulator.SimulateRequest(new Uri(url), HttpVerb.GET);

            Assert.AreEqual(expectedPhysicalPath, simulator.PhysicalPath);
            Assert.AreEqual(expectedPhysicalAppPath, HttpRuntime.AppDomainAppPath);
            Assert.AreEqual(expectedPhysicalAppPath, HostingEnvironment.ApplicationPhysicalPath);
            Assert.AreEqual(expectedPhysicalPath, HttpContext.Current.Request.PhysicalPath);
        }
예제 #13
0
 /// <summary>
 /// Determines whether this instance [can set application path correctly] the specified URL.
 /// </summary>
 /// <param name="url">The URL.</param>
 /// <param name="appPath">The app path.</param>
 /// <param name="expectedAppPath">The expected app path.</param>
 public void CanSetApplicationPathCorrectly(string url, string appPath, string expectedAppPath)
 {
     var simulator = new HttpSimulator(appPath, @"c:\inetpub\wwwroot\site1\test");
     Assert.AreEqual(expectedAppPath, simulator.ApplicationPath);
     simulator.SimulateRequest(new Uri(url));
     Assert.AreEqual(expectedAppPath, HttpContext.Current.Request.ApplicationPath);
     Assert.AreEqual(expectedAppPath, HttpRuntime.AppDomainAppVirtualPath);
     Assert.AreEqual(expectedAppPath, HostingEnvironment.ApplicationVirtualPath);
 }