package main import ( "testing" ) import "github.com/gavv/httpexpect/v2" func startServer(t *testing.T) *httpexpect.Expect { config := ServerConfig{ Datasource: ":memory:", Port: "8181", Started: make(chan bool), } go start(t.Context(), &config) <-config.Started return httpexpect.Default(t, "http://localhost:8181/api") } func TestGetUsers(t *testing.T) { e := startServer(t) result := e.GET("/users").Expect().Status(200).JSON() result.Array().Length().IsEqual(2) result.Path("$[0].name").InList("Seeseemelk", "Huffle") result.Path("$[1].name").InList("Seeseemelk", "Huffle") } func TestGetUser(t *testing.T) { e := startServer(t) result := e.GET("/user/1").Expect().Status(200).JSON().Object() result.Value("name").IsEqual("Seeseemelk") result.Value("id").IsEqual(1) } func TestGetUserUnknown(t *testing.T) { e := startServer(t) e.GET("/user/999").Expect().Status(404) } func TestGetUserBadId(t *testing.T) { e := startServer(t) e.GET("/user/bad-id").Expect().Status(400) }