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  }