More transport tests

This commit is contained in:
Gabriel Simmer 2022-07-16 12:04:14 +01:00
parent 2ebdac5adf
commit 9dd05c71e3

View file

@ -45,7 +45,9 @@ func TestInvites(t *testing.T) {
}
server := store.Server{
Id: "1",
Id: "1",
Address: "foo",
Owner: user,
Rcon: store.Rcon{
Address: "foo",
Password: "bar",
@ -156,7 +158,7 @@ func TestInvites(t *testing.T) {
st.EXPECT().GetInvite(inv.Token).Return(inv, nil)
handler := transport.New(st, im, mc)
req, err := http.NewRequest("GET", "/api/v1/invite/foo", nil)
req, err := http.NewRequest("GET", "/api/v1/invite/"+inv.Token, nil)
if err != nil {
t.Fatal(err)
}
@ -189,7 +191,7 @@ func TestInvites(t *testing.T) {
st.EXPECT().GetInvite(inv.Token).Return(inv, nil)
handler := transport.New(st, im, mc)
req, err := http.NewRequest("GET", "/api/v1/invite/foo", nil)
req, err := http.NewRequest("GET", "/api/v1/invite/"+inv.Token, nil)
if err != nil {
t.Fatal(err)
}
@ -222,7 +224,7 @@ func TestInvites(t *testing.T) {
st.EXPECT().GetInvite(inv.Token).Return(store.Invite{}, sql.ErrNoRows)
handler := transport.New(st, im, mc)
req, err := http.NewRequest("GET", "/api/v1/invite/foo", nil)
req, err := http.NewRequest("GET", "/api/v1/invite/"+inv.Token, nil)
if err != nil {
t.Fatal(err)
}
@ -245,7 +247,7 @@ func TestInvites(t *testing.T) {
st.EXPECT().GetInvite(inv.Token).Return(inv, nil)
handler := transport.New(st, im, mc)
req, err := http.NewRequest("GET", "/api/v1/invite/foo", nil)
req, err := http.NewRequest("GET", "/api/v1/invite/"+inv.Token, nil)
if err != nil {
t.Fatal(err)
}
@ -277,7 +279,7 @@ func TestInvites(t *testing.T) {
mc.EXPECT().Whitelist(user.DisplayName, server).Return("success", nil)
handler := transport.New(st, im, mc)
req, err := http.NewRequest("POST", "/api/v1/invite/foo/accept", nil)
req, err := http.NewRequest("POST", "/api/v1/invite/"+inv.Token+"/accept", nil)
if err != nil {
t.Fatal(err)
}
@ -306,7 +308,7 @@ func TestInvites(t *testing.T) {
st.EXPECT().GetInvite(inv.Token).Return(store.Invite{}, sql.ErrNoRows)
handler := transport.New(st, im, mc)
req, err := http.NewRequest("POST", "/api/v1/invite/foo/accept", nil)
req, err := http.NewRequest("POST", "/api/v1/invite/"+inv.Token+"/accept", nil)
if err != nil {
t.Fatal(err)
}
@ -330,7 +332,7 @@ func TestInvites(t *testing.T) {
im.EXPECT().RemainingUses(inv).Return(0, nil)
handler := transport.New(st, im, mc)
req, err := http.NewRequest("POST", "/api/v1/invite/foo/accept", nil)
req, err := http.NewRequest("POST", "/api/v1/invite/"+inv.Token+"/accept", nil)
if err != nil {
t.Fatal(err)
}
@ -354,7 +356,7 @@ func TestInvites(t *testing.T) {
st.EXPECT().InviteLog(inv).Return([]store.InviteLog{invLog}, nil)
handler := transport.New(st, im, mc)
req, err := http.NewRequest("GET", "/api/v1/invite/foo/log", nil)
req, err := http.NewRequest("GET", "/api/v1/invite/"+inv.Token+"/log", nil)
if err != nil {
t.Fatal(err)
}
@ -389,7 +391,7 @@ func TestInvites(t *testing.T) {
st.EXPECT().InviteLog(inv).Return([]store.InviteLog{}, nil)
handler := transport.New(st, im, mc)
req, err := http.NewRequest("GET", "/api/v1/invite/foo/log", nil)
req, err := http.NewRequest("GET", "/api/v1/invite/"+inv.Token+"/log", nil)
if err != nil {
t.Fatal(err)
}
@ -414,6 +416,40 @@ func TestInvites(t *testing.T) {
}
})
t.Run("delete an invite", func(t *testing.T) {
st.EXPECT().GetInvite(inv.Token).Return(inv, nil)
st.EXPECT().DeleteInvite(inv).Return(nil)
jsonData, err := json.Marshal(server)
if err != nil {
log.Fatal(err)
}
m := flow.New()
handler := transport.New(st, im, mc)
req, err := http.NewRequest("DELETE", "/api/v1/invite/"+inv.Token, bytes.NewBuffer(jsonData))
if err != nil {
t.Fatal(err)
}
ctx := req.Context()
ctx = context.WithValue(ctx, "user", user)
req = req.WithContext(ctx)
rr := httptest.NewRecorder()
m.HandleFunc("/api/v1/invite/:id", handler.DeleteInvite)
m.ServeHTTP(rr, req)
if status := rr.Code; status != http.StatusOK {
t.Errorf("handler returned wrong status code: got %v want %v",
status, http.StatusNotFound)
}
expected := "deleted"
if rr.Body.String() != expected {
t.Errorf("handler returned unexpected body: got %v want %v",
rr.Body.String(), expected)
}
})
}
func TestUser(t *testing.T) {
@ -514,6 +550,44 @@ func TestServers(t *testing.T) {
}
})
t.Run("fetch an inividual server", func(t *testing.T) {
st.EXPECT().GetServer(server.Id).Return(server, nil)
m := flow.New()
handler := transport.New(st, im, mc)
req, err := http.NewRequest("GET", "/api/v1/server/1", nil)
if err != nil {
t.Fatal(err)
}
ctx := req.Context()
ctx = context.WithValue(ctx, "user", user)
req = req.WithContext(ctx)
rr := httptest.NewRecorder()
m.HandleFunc("/api/v1/server/:id", handler.Server)
m.ServeHTTP(rr, req)
if status := rr.Code; status != http.StatusOK {
t.Errorf("handler returned wrong status code: got %v want %v",
status, http.StatusOK)
}
var body store.Server
err = json.Unmarshal(rr.Body.Bytes(), &body)
if err != nil {
t.Fatal(err)
}
if body.Rcon.Password != "" {
t.Errorf("handler returned rcon password: got %v want %v",
body.Rcon.Password, "\"\"")
}
if body.Address != server.Address {
t.Errorf("handler returned wrong address: got %v want %v",
body.Address, server.Address)
}
})
t.Run("create a server for a user", func(t *testing.T) {
st.EXPECT().SaveServer(gomock.Any()).Return(nil)
@ -548,6 +622,41 @@ func TestServers(t *testing.T) {
}
})
t.Run("delete a server for a user", func(t *testing.T) {
st.EXPECT().GetServer(server.Id).Return(server, nil)
st.EXPECT().DeleteServer(server, user).Return(nil)
jsonData, err := json.Marshal(server)
if err != nil {
log.Fatal(err)
}
m := flow.New()
handler := transport.New(st, im, mc)
req, err := http.NewRequest("DELETE", "/api/v1/server/1", bytes.NewBuffer(jsonData))
if err != nil {
t.Fatal(err)
}
ctx := req.Context()
ctx = context.WithValue(ctx, "user", user)
req = req.WithContext(ctx)
rr := httptest.NewRecorder()
m.HandleFunc("/api/v1/server/:id", handler.Server, "DELETE")
m.ServeHTTP(rr, req)
if status := rr.Code; status != http.StatusOK {
t.Errorf("handler returned wrong status code: got %v want %v",
status, http.StatusOK)
}
if rr.Body.String() != "deleted" {
t.Errorf("handler returned unexpected body: got %v want %v",
rr.Body.String(), "created server")
}
})
t.Run("get invite list for server", func(t *testing.T) {
st.EXPECT().GetServer(server.Id).Return(server, nil)
st.EXPECT().ServerInvites(server).Return([]store.Invite{inv}, nil)