gitee.com/sasukebo/go-micro/v4@v4.7.1/api/server/http/http_test.go (about) 1 package http 2 3 import ( 4 "fmt" 5 "gitee.com/sasukebo/go-micro/v4/api/server" 6 "gitee.com/sasukebo/go-micro/v4/api/server/cors" 7 "io" 8 "net/http" 9 "testing" 10 ) 11 12 func TestHTTPServer(t *testing.T) { 13 testResponse := "hello world" 14 15 s := NewServer("localhost:0") 16 17 s.Handle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 18 fmt.Fprint(w, testResponse) 19 })) 20 21 if err := s.Start(); err != nil { 22 t.Fatal(err) 23 } 24 25 rsp, err := http.Get(fmt.Sprintf("http://%s/", s.Address())) 26 if err != nil { 27 t.Fatal(err) 28 } 29 defer rsp.Body.Close() 30 31 b, err := io.ReadAll(rsp.Body) 32 if err != nil { 33 t.Fatal(err) 34 } 35 36 if string(b) != testResponse { 37 t.Fatalf("Unexpected response, got %s, expected %s", string(b), testResponse) 38 } 39 40 if err := s.Stop(); err != nil { 41 t.Fatal(err) 42 } 43 } 44 45 func TestCORSHTTPServer(t *testing.T) { 46 testResponse := "hello world" 47 testAllowOrigin := "*" 48 testAllowCredentials := true 49 testAllowMethods := "GET" 50 testAllowHeaders := "Accept, Content-Type, Content-Length" 51 52 s := NewServer("localhost:0", 53 server.EnableCORS(true), 54 server.CORSConfig(&cors.Config{ 55 AllowCredentials: testAllowCredentials, 56 AllowOrigin: testAllowOrigin, 57 AllowMethods: testAllowMethods, 58 AllowHeaders: testAllowHeaders, 59 }), 60 ) 61 62 s.Handle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 63 fmt.Fprint(w, testResponse) 64 })) 65 66 if err := s.Start(); err != nil { 67 t.Fatal(err) 68 } 69 70 rsp, err := http.Get(fmt.Sprintf("http://%s/", s.Address())) 71 if err != nil { 72 t.Fatal(err) 73 } 74 defer rsp.Body.Close() 75 76 b, err := io.ReadAll(rsp.Body) 77 if err != nil { 78 t.Fatal(err) 79 } 80 81 if string(b) != testResponse { 82 t.Fatalf("Unexpected response, got %s, expected %s", string(b), testResponse) 83 } 84 85 allowCredentials := rsp.Header.Get("Access-Control-Allow-Credentials") 86 getTestCredentialsStr := func() string { 87 if testAllowCredentials == true { 88 return "true" 89 } else { 90 return "false" 91 } 92 } 93 if getTestCredentialsStr() != allowCredentials { 94 t.Fatalf("Unexpected Access-Control-Allow-Credentials, got %s, expected %s", allowCredentials, getTestCredentialsStr()) 95 } 96 97 allowOrigin := rsp.Header.Get("Access-Control-Allow-Origin") 98 if testAllowOrigin != allowOrigin { 99 t.Fatalf("Unexpected Access-Control-Allow-Origins, got %s, expected %s", allowOrigin, testAllowOrigin) 100 } 101 102 allowMethods := rsp.Header.Get("Access-Control-Allow-Methods") 103 if testAllowMethods != allowMethods { 104 t.Fatalf("Unexpected Access-Control-Allow-Methods, got %s, expected %s", allowMethods, testAllowMethods) 105 } 106 allowHeaders := rsp.Header.Get("Access-Control-Allow-Headers") 107 if testAllowHeaders != allowHeaders { 108 t.Fatalf("Unexpected Access-Control-Allow-Headers, got %s, expected %s", allowHeaders, testAllowHeaders) 109 } 110 111 if err := s.Stop(); err != nil { 112 t.Fatal(err) 113 } 114 }