mirror of
https://github.com/go-micro/go-micro.git
synced 2025-01-05 10:20:53 +02:00
116 lines
2.7 KiB
Go
116 lines
2.7 KiB
Go
package http
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"go-micro.dev/v5/api/server"
|
|
"go-micro.dev/v5/api/server/cors"
|
|
)
|
|
|
|
func TestHTTPServer(t *testing.T) {
|
|
testResponse := "hello world"
|
|
|
|
s := NewServer("localhost:0")
|
|
|
|
s.Handle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprint(w, testResponse)
|
|
}))
|
|
|
|
if err := s.Start(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
rsp, err := http.Get(fmt.Sprintf("http://%s/", s.Address()))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer rsp.Body.Close()
|
|
|
|
b, err := io.ReadAll(rsp.Body)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if string(b) != testResponse {
|
|
t.Fatalf("Unexpected response, got %s, expected %s", string(b), testResponse)
|
|
}
|
|
|
|
if err := s.Stop(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestCORSHTTPServer(t *testing.T) {
|
|
testResponse := "hello world"
|
|
testAllowOrigin := "*"
|
|
testAllowCredentials := true
|
|
testAllowMethods := "GET"
|
|
testAllowHeaders := "Accept, Content-Type, Content-Length"
|
|
|
|
s := NewServer("localhost:0",
|
|
server.EnableCORS(true),
|
|
server.CORSConfig(&cors.Config{
|
|
AllowCredentials: testAllowCredentials,
|
|
AllowOrigin: testAllowOrigin,
|
|
AllowMethods: testAllowMethods,
|
|
AllowHeaders: testAllowHeaders,
|
|
}),
|
|
)
|
|
|
|
s.Handle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprint(w, testResponse)
|
|
}))
|
|
|
|
if err := s.Start(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
rsp, err := http.Get(fmt.Sprintf("http://%s/", s.Address()))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer rsp.Body.Close()
|
|
|
|
b, err := io.ReadAll(rsp.Body)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if string(b) != testResponse {
|
|
t.Fatalf("Unexpected response, got %s, expected %s", string(b), testResponse)
|
|
}
|
|
|
|
allowCredentials := rsp.Header.Get("Access-Control-Allow-Credentials")
|
|
getTestCredentialsStr := func() string {
|
|
if testAllowCredentials == true {
|
|
return "true"
|
|
} else {
|
|
return "false"
|
|
}
|
|
}
|
|
if getTestCredentialsStr() != allowCredentials {
|
|
t.Fatalf("Unexpected Access-Control-Allow-Credentials, got %s, expected %s", allowCredentials, getTestCredentialsStr())
|
|
}
|
|
|
|
allowOrigin := rsp.Header.Get("Access-Control-Allow-Origin")
|
|
if testAllowOrigin != allowOrigin {
|
|
t.Fatalf("Unexpected Access-Control-Allow-Origins, got %s, expected %s", allowOrigin, testAllowOrigin)
|
|
}
|
|
|
|
allowMethods := rsp.Header.Get("Access-Control-Allow-Methods")
|
|
if testAllowMethods != allowMethods {
|
|
t.Fatalf("Unexpected Access-Control-Allow-Methods, got %s, expected %s", allowMethods, testAllowMethods)
|
|
}
|
|
allowHeaders := rsp.Header.Get("Access-Control-Allow-Headers")
|
|
if testAllowHeaders != allowHeaders {
|
|
t.Fatalf("Unexpected Access-Control-Allow-Headers, got %s, expected %s", allowHeaders, testAllowHeaders)
|
|
}
|
|
|
|
if err := s.Stop(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|