pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/httputil/httputil_test.go (about) 1 package httputil 2 3 // ////////////////////////////////////////////////////////////////////////////////// // 4 // // 5 // Copyright (c) 2022 ESSENTIAL KAOS // 6 // Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0> // 7 // // 8 // ////////////////////////////////////////////////////////////////////////////////// // 9 10 import ( 11 "net/http" 12 "testing" 13 14 . "pkg.re/essentialkaos/check.v1" 15 ) 16 17 // ////////////////////////////////////////////////////////////////////////////////// // 18 19 func Test(t *testing.T) { TestingT(t) } 20 21 type HTTPUtilSuite struct{} 22 23 // ////////////////////////////////////////////////////////////////////////////////// // 24 25 var _ = Suite(&HTTPUtilSuite{}) 26 27 // ////////////////////////////////////////////////////////////////////////////////// // 28 29 func (s *HTTPUtilSuite) TestRequestParsing(c *C) { 30 req1, _ := http.NewRequest("GET", "http://127.0.0.1/hello", nil) 31 req2, _ := http.NewRequest("GET", "http://domain.com/hello", nil) 32 req3, _ := http.NewRequest("GET", "https://127.0.0.1:8080", nil) 33 req4, _ := http.NewRequest("GET", "https://domain.com:8080", nil) 34 req5, _ := http.NewRequest("GET", "", nil) 35 36 c.Assert(req1, NotNil) 37 c.Assert(req2, NotNil) 38 c.Assert(req3, NotNil) 39 c.Assert(req4, NotNil) 40 c.Assert(req5, NotNil) 41 42 c.Assert(GetRequestHost(req1), Equals, "127.0.0.1") 43 c.Assert(GetRequestHost(req2), Equals, "domain.com") 44 c.Assert(GetRequestHost(req3), Equals, "127.0.0.1") 45 c.Assert(GetRequestHost(req4), Equals, "domain.com") 46 c.Assert(GetRequestHost(req5), Equals, "") 47 48 c.Assert(GetRequestPort(req1), Equals, "80") 49 c.Assert(GetRequestPort(req2), Equals, "80") 50 c.Assert(GetRequestPort(req3), Equals, "8080") 51 c.Assert(GetRequestPort(req4), Equals, "8080") 52 c.Assert(GetRequestPort(req5), Equals, "") 53 54 c.Assert(GetPortByScheme("http"), Equals, "80") 55 c.Assert(GetPortByScheme("https"), Equals, "443") 56 c.Assert(GetPortByScheme("ftp"), Equals, "21") 57 c.Assert(GetPortByScheme("unknown"), Equals, "") 58 } 59 60 func (s *HTTPUtilSuite) TestRemoteParsing(c *C) { 61 req1, _ := http.NewRequest("GET", "http://127.0.0.1/hello", nil) 62 req2, _ := http.NewRequest("GET", "http://127.0.0.1/hello", nil) 63 64 req1.RemoteAddr = "" 65 req2.RemoteAddr = "127.0.0.1:12345" 66 67 c.Assert(GetRemoteHost(req1), Equals, "") 68 c.Assert(GetRemotePort(req1), Equals, "") 69 70 c.Assert(GetRemoteHost(req2), Equals, "127.0.0.1") 71 c.Assert(GetRemotePort(req2), Equals, "12345") 72 } 73 74 func (s *HTTPUtilSuite) TestGetDescCode(c *C) { 75 c.Assert(GetDescByCode(100), Equals, "Continue") 76 c.Assert(GetDescByCode(101), Equals, "Switching Protocols") 77 c.Assert(GetDescByCode(200), Equals, "OK") 78 c.Assert(GetDescByCode(201), Equals, "Created") 79 c.Assert(GetDescByCode(202), Equals, "Accepted") 80 c.Assert(GetDescByCode(203), Equals, "Non Authoritative Info") 81 c.Assert(GetDescByCode(204), Equals, "No Content") 82 c.Assert(GetDescByCode(205), Equals, "Reset Content") 83 c.Assert(GetDescByCode(206), Equals, "Partial Content") 84 c.Assert(GetDescByCode(300), Equals, "Multiple Choices") 85 c.Assert(GetDescByCode(301), Equals, "Moved Permanently ") 86 c.Assert(GetDescByCode(302), Equals, "Found") 87 c.Assert(GetDescByCode(303), Equals, "See Other") 88 c.Assert(GetDescByCode(304), Equals, "Not Modified") 89 c.Assert(GetDescByCode(305), Equals, "Use Proxy") 90 c.Assert(GetDescByCode(307), Equals, "Temporary Redirect") 91 c.Assert(GetDescByCode(400), Equals, "Bad Request") 92 c.Assert(GetDescByCode(401), Equals, "Unauthorized") 93 c.Assert(GetDescByCode(402), Equals, "Payment Required") 94 c.Assert(GetDescByCode(403), Equals, "Forbidden") 95 c.Assert(GetDescByCode(404), Equals, "Not Found") 96 c.Assert(GetDescByCode(405), Equals, "Method Not Allowed") 97 c.Assert(GetDescByCode(406), Equals, "Not Acceptable") 98 c.Assert(GetDescByCode(407), Equals, "Proxy Auth Required") 99 c.Assert(GetDescByCode(408), Equals, "Request Timeout") 100 c.Assert(GetDescByCode(409), Equals, "Conflict") 101 c.Assert(GetDescByCode(410), Equals, "Gone") 102 c.Assert(GetDescByCode(411), Equals, "Length Required") 103 c.Assert(GetDescByCode(412), Equals, "Precondition Failed") 104 c.Assert(GetDescByCode(413), Equals, "Request Entity Too Large") 105 c.Assert(GetDescByCode(414), Equals, "Request URI TooLong") 106 c.Assert(GetDescByCode(415), Equals, "Unsupported Media Type") 107 c.Assert(GetDescByCode(416), Equals, "Requested Range Not Satisfiable") 108 c.Assert(GetDescByCode(417), Equals, "Expectation Failed") 109 c.Assert(GetDescByCode(418), Equals, "Teapot") 110 c.Assert(GetDescByCode(500), Equals, "Internal Server Error") 111 c.Assert(GetDescByCode(501), Equals, "Not Implemented") 112 c.Assert(GetDescByCode(502), Equals, "Bad Gateway") 113 c.Assert(GetDescByCode(503), Equals, "Service Unavailable") 114 c.Assert(GetDescByCode(504), Equals, "Gateway Timeout") 115 c.Assert(GetDescByCode(505), Equals, "HTTP Version Not Supported") 116 c.Assert(GetDescByCode(999), Equals, "Unknown") 117 } 118 119 func (s *HTTPUtilSuite) TestURLCheck(c *C) { 120 c.Assert(IsURL("127.0.0.1"), Equals, false) 121 c.Assert(IsURL("127.0.0.1:80"), Equals, false) 122 123 c.Assert(IsURL("ftp://d.pr"), Equals, true) 124 c.Assert(IsURL("ftp://domain.com"), Equals, true) 125 c.Assert(IsURL("http://domain.com"), Equals, true) 126 c.Assert(IsURL("http://domain.com:8080"), Equals, true) 127 c.Assert(IsURL("https://domain.com:8080"), Equals, true) 128 c.Assert(IsURL("http://domain.com:8080/my/super/method?id=123#TEST"), Equals, true) 129 }