feat: 实现 test/harness 集成测试启动器
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package harness_test
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"git.asio.asia/nixevol/NixMsg/test/harness"
|
||||
)
|
||||
|
||||
func TestAdminClientMutatingHeader(t *testing.T) {
|
||||
t.Parallel()
|
||||
var sawRequestHdr, sawAuth bool
|
||||
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Header.Get("X-Nixmsg-Request") == "1" {
|
||||
sawRequestHdr = true
|
||||
}
|
||||
if r.Header.Get("Authorization") != "" {
|
||||
sawAuth = true
|
||||
}
|
||||
w.WriteHeader(http.StatusOK)
|
||||
_, _ = w.Write([]byte(`{}`))
|
||||
}))
|
||||
defer srv.Close()
|
||||
|
||||
c, err := harness.NewAdminClient(srv.URL)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
resp, err := c.PostJSON("/api/admin/login", []byte(`{"password":"x"}`))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, _ = io.Copy(io.Discard, resp.Body)
|
||||
_ = resp.Body.Close()
|
||||
if !sawRequestHdr {
|
||||
t.Fatal("expected X-Nixmsg-Request on POST")
|
||||
}
|
||||
|
||||
sawRequestHdr = false
|
||||
c.APIToken = "nxm_test"
|
||||
resp, err = c.PostJSON("/api/admin/endpoints", []byte(`{}`))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, _ = io.Copy(io.Discard, resp.Body)
|
||||
_ = resp.Body.Close()
|
||||
if sawRequestHdr {
|
||||
t.Fatal("API token mode should not set X-Nixmsg-Request")
|
||||
}
|
||||
if !sawAuth {
|
||||
t.Fatal("expected Authorization bearer")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user