예제 #1
0
            public void Can_get_and_set_body()
            {
                request = new CgiRequest(ENV_Simple);
                request.SetBody("hello world!");

                Assert.That(request.Body, Is.EqualTo("hello world!"));
            }
예제 #2
0
            public void Uri_gets_QueryString_from_QUERY_STRING()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.QueryString, Is.EqualTo(""));

                request = new CgiRequest(ENV_with_QueryString);
                Assert.That(request.QueryString, Is.EqualTo("hi=there"));
            }
예제 #3
0
파일: Cgi.cs 프로젝트: remitaylor/knack
        public static void Run(IApplication application)
        {
            string requestInput   = Console.In.ReadToEnd();
            IDictionary variables = Environment.GetEnvironmentVariables();
            CgiRequest request    = new CgiRequest(variables, requestInput);
            IResponse response    = Application.Invoke(application, request);
            string output         = GetResponseText(response);

            Console.Write(output);
        }
예제 #4
0
            public void owin_server_name_gets_set_to_SERVER_NAME()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.Host, Is.EqualTo("localhost"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary <string, string> {
                    { "SERVER_NAME", "google.com" }
                }));
                Assert.That(request.Host, Is.EqualTo("google.com"));
            }
예제 #5
0
            public void owin_base_path_gets_set_to_SCRIPT_NAME()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.BasePath, Is.EqualTo("/cgi-runner.cgi"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary <string, string> {
                    { "SCRIPT_NAME", "/hi/there.cgi" }
                }));
                Assert.That(request.BasePath, Is.EqualTo("/hi/there.cgi"));
            }
예제 #6
0
            public void owin_request_protocol_gets_set_to_SERVER_PROTOCOL()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.Protocol, Is.EqualTo("HTTP/1.1"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary <string, string> {
                    { "SERVER_PROTOCOL", "HTTP/1.0" }
                }));
                Assert.That(request.Protocol, Is.EqualTo("HTTP/1.0"));
            }
예제 #7
0
            public void owin_server_port_gets_set_to_SERVER_PORT()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.Port, Is.EqualTo(3000));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary <string, string> {
                    { "SERVER_PORT", "1234" }
                }));
                Assert.That(request.Port, Is.EqualTo(1234));
            }
예제 #8
0
            public void owin_url_scheme_gets_set_using_scheme_seen_in_REQUEST_URI()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.Scheme, Is.EqualTo("http"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary <string, string> {
                    { "REQUEST_URI", "https://localhost/foo.cgi/" }
                }));
                Assert.That(request.Scheme, Is.EqualTo("https"));
            }
예제 #9
0
            public void owin_remote_endpoint_gets_set_using_REMOTE_ADDR_and_SERVER_PORT()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.IPEndPoint.ToString(), Is.EqualTo("127.0.0.1:3000"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary <string, string> {
                    { "REMOTE_ADDR", "192.168.0.1" }, { "SERVER_PORT", "443" }
                }));
                Assert.That(request.IPEndPoint.ToString(), Is.EqualTo("192.168.0.1:443"));
            }
예제 #10
0
            public void ContentType_gets_set_by_CONTENT_TYPE_header()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.ContentType, Is.Null);

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary <string, string> {
                    { "CONTENT_TYPE", "application/json" }
                }));
                Assert.That(request.ContentType, Is.EqualTo("application/json"));
            }
예제 #11
0
            public void Method_gets_set_using_REQUEST_METHOD()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.Method, Is.EqualTo("GET"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary <string, string> {
                    { "REQUEST_METHOD", "POST" }
                }));
                Assert.That(request.Method, Is.EqualTo("POST"));
            }
예제 #12
0
            public void x_www_form_urlencoded_POST_variables_are_parsed_properly()
            {
                request = new CgiRequest(GetEnvironmentVariables(new Dictionary <string, string> {
                    { "REQUEST_METHOD", "POST" },
                    { "CONTENT_TYPE", "application/x-www-form-urlencoded" }
                }), "name=Rover&breed=GoldenRetriever");

                Assert.That(request.POST["name"], Is.EqualTo("Rover"));
                Assert.That(request.POST["breed"], Is.EqualTo("GoldenRetriever"));
                Assert.That(request.POST["didntPostThis"], Is.Null);
            }
예제 #13
0
            public void All_environment_variables_become_headers()
            {
                request = new CgiRequest(ENV_Simple);

                Assert.That(request.GetHeader("REMOTE_HOST"), Is.EqualTo("localhost"));
                Assert.That(request.GetHeader("QUERY_STRING"), Is.EqualTo(""));
                Assert.That(request.GetHeader("SCRIPT_NAME"), Is.EqualTo("/cgi-runner.cgi"));
                Assert.That(request.GetHeader("REQUEST_METHOD"), Is.EqualTo("GET"));
                Assert.That(request.GetHeader("REQUEST_URI"), Is.EqualTo("http://localhost:3000/cgi-runner.cgi/"));
                Assert.That(request.GetHeader("SERVER_NAME"), Is.EqualTo("localhost"));
                Assert.That(request.GetHeader("SERVER_PORT"), Is.EqualTo("3000"));
                Assert.That(request.GetHeader("HTTP_USER_AGENT"), Is.EqualTo("curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"));
            }
예제 #14
0
 public void Can_initialize_CgiRequest_with_body_content()
 {
     request = new CgiRequest(ENV_Simple, "hi");
     Assert.That(request.Body, Is.EqualTo("hi"));
 }
예제 #15
0
            public void owin_remote_endpoint_gets_set_using_REMOTE_ADDR_and_SERVER_PORT()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.IPEndPoint.ToString(), Is.EqualTo("127.0.0.1:3000"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary<string, string> { { "REMOTE_ADDR", "192.168.0.1" }, { "SERVER_PORT", "443" } }));
                Assert.That(request.IPEndPoint.ToString(), Is.EqualTo("192.168.0.1:443"));
            }
예제 #16
0
            public void owin_base_path_gets_set_to_SCRIPT_NAME()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.BasePath, Is.EqualTo("/cgi-runner.cgi"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary<string, string> { { "SCRIPT_NAME", "/hi/there.cgi" } }));
                Assert.That(request.BasePath, Is.EqualTo("/hi/there.cgi"));
            }
예제 #17
0
            public void owin_server_name_gets_set_to_SERVER_NAME()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.Host, Is.EqualTo("localhost"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary<string, string> { { "SERVER_NAME", "google.com" } }));
                Assert.That(request.Host, Is.EqualTo("google.com"));
            }
예제 #18
0
            public void owin_request_protocol_gets_set_to_SERVER_PROTOCOL()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.Protocol, Is.EqualTo("HTTP/1.1"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary<string, string> { { "SERVER_PROTOCOL", "HTTP/1.0" } }));
                Assert.That(request.Protocol, Is.EqualTo("HTTP/1.0"));
            }
예제 #19
0
            public void owin_url_scheme_gets_set_using_scheme_seen_in_REQUEST_URI()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.Scheme, Is.EqualTo("http"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary<string, string> { { "REQUEST_URI", "https://localhost/foo.cgi/" } }));
                Assert.That(request.Scheme, Is.EqualTo("https"));
            }
예제 #20
0
            public void owin_server_port_gets_set_to_SERVER_PORT()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.Port, Is.EqualTo(3000));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary<string, string> { { "SERVER_PORT", "1234" } }));
                Assert.That(request.Port, Is.EqualTo(1234));
            }
예제 #21
0
            public void x_www_form_urlencoded_POST_variables_are_parsed_properly()
            {
                request = new CgiRequest(GetEnvironmentVariables(new Dictionary<string, string>{
                            {"REQUEST_METHOD","POST"},
                            {"CONTENT_TYPE","application/x-www-form-urlencoded"}
                            }), "name=Rover&breed=GoldenRetriever");

                Assert.That(request.POST["name"], Is.EqualTo("Rover"));
                Assert.That(request.POST["breed"], Is.EqualTo("GoldenRetriever"));
                Assert.That(request.POST["didntPostThis"], Is.Null);
            }
예제 #22
0
            public void Method_gets_set_using_REQUEST_METHOD()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.Method, Is.EqualTo("GET"));

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary<string, string> { { "REQUEST_METHOD", "POST" } }));
                Assert.That(request.Method, Is.EqualTo("POST"));
            }
예제 #23
0
 public void Uri_includes_query_strings_from_QUERY_STRING()
 {
     request = new CgiRequest(ENV_with_QueryString);
     Assert.That(request.Uri, Is.EqualTo("/foo/bar?hi=there"));
 }
예제 #24
0
            public void ContentType_gets_set_by_CONTENT_TYPE_header()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.ContentType, Is.Null);

                request = new CgiRequest(GetEnvironmentVariables(new Dictionary<string, string> { { "CONTENT_TYPE", "application/json" } }));
                Assert.That(request.ContentType, Is.EqualTo("application/json"));
            }
예제 #25
0
 public void Can_initialize_CgiRequest_with_body_content()
 {
     request = new CgiRequest(ENV_Simple, "hi");
     Assert.That(request.Body, Is.EqualTo("hi"));
 }
예제 #26
0
            public void Uri_gets_QueryString_from_QUERY_STRING()
            {
                request = new CgiRequest(ENV_Simple);
                Assert.That(request.QueryString, Is.EqualTo(""));

                request = new CgiRequest(ENV_with_QueryString);
                Assert.That(request.QueryString, Is.EqualTo("hi=there"));
            }
예제 #27
0
 public void Uri_gets_set_using_PATH_INFO()
 {
     request = new CgiRequest(ENV_Simple);
     Assert.That(request.Uri, Is.EqualTo("/"));
 }
예제 #28
0
 public void Uri_includes_query_strings_from_QUERY_STRING()
 {
     request = new CgiRequest(ENV_with_QueryString);
     Assert.That(request.Uri, Is.EqualTo("/foo/bar?hi=there"));
 }
예제 #29
0
            public void All_environment_variables_become_headers()
            {
                request = new CgiRequest(ENV_Simple);

                Assert.That(request.GetHeader("REMOTE_HOST"), Is.EqualTo("localhost"));
                Assert.That(request.GetHeader("QUERY_STRING"), Is.EqualTo(""));
                Assert.That(request.GetHeader("SCRIPT_NAME"), Is.EqualTo("/cgi-runner.cgi"));
                Assert.That(request.GetHeader("REQUEST_METHOD"), Is.EqualTo("GET"));
                Assert.That(request.GetHeader("REQUEST_URI"), Is.EqualTo("http://localhost:3000/cgi-runner.cgi/"));
                Assert.That(request.GetHeader("SERVER_NAME"), Is.EqualTo("localhost"));
                Assert.That(request.GetHeader("SERVER_PORT"), Is.EqualTo("3000"));
                Assert.That(request.GetHeader("HTTP_USER_AGENT"), Is.EqualTo("curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"));
            }
예제 #30
0
 public void Before()
 {
     request = null;
 }
예제 #31
0
 public void Before()
 {
     request = null;
 }
예제 #32
0
 public void Uri_gets_set_using_PATH_INFO()
 {
     request = new CgiRequest(ENV_Simple);
     Assert.That(request.Uri, Is.EqualTo("/"));
 }
예제 #33
0
            public void Can_get_and_set_body()
            {
                request = new CgiRequest(ENV_Simple);
                request.SetBody("hello world!");

                Assert.That(request.Body, Is.EqualTo("hello world!"));
            }