I'm working a project where I want to support both HTTP and UNIX+HTTP transports, so I'm making use of the functionality here on the client side.
For server testing, I came up with the following:
// testUNIX creates a *zedhook.Client backed by a UNIX socket HTTP server which
// returns its payload on a channel.
func testUNIX(t *testing.T) (*zedhook.Client, <-chan zedhook.Payload) {
t.Helper()
pC := make(chan zedhook.Payload, 1)
srv := unixtestNewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var p zedhook.Payload
if err := json.NewDecoder(r.Body).Decode(&p); err != nil {
panicf("failed to decode JSON: %v", err)
}
pC <- p
w.WriteHeader(http.StatusNoContent)
}))
t.Cleanup(srv.Close)
c, err := zedhook.NewClient(srv.URL+"/push", nil)
if err != nil {
t.Fatalf("failed to create zedhook client: %v", err)
}
return c, pC
}
The API mimics the one exposed by httptest.NewServer
. Would you accept a PR to add unixtransport.TestServer
or similar? Thanks again!