Files

56 lines
1.2 KiB
Go

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")
}
}