test unhappy swap

master
Bel LaPointe 2023-03-27 08:23:37 -06:00
parent c744704b63
commit e2d7c4a908
2 changed files with 33 additions and 6 deletions

View File

@ -168,8 +168,8 @@ func (v01 *V01) serveGM(w http.ResponseWriter, r *http.Request) {
v01.serveGMShuffle(w, r)
v01.cfg.Quiet = false
case "/gm/rpc/swap":
if err := v01.serveGMSwap(r, r.URL.Query().Get("a"), r.URL.Query().Get("b")); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
if errCode, err := v01.serveGMSwap(r, r.URL.Query().Get("a"), r.URL.Query().Get("b")); err != nil {
http.Error(w, err.Error(), errCode)
return
}
v01.cfg.Quiet = false
@ -226,7 +226,7 @@ func (v01 *V01) serveGMShuffle(w http.ResponseWriter, r *http.Request) {
v01.servePutBroadcastValue(strings.Join(msg, ", "))
}
func (v01 *V01) serveGMSwap(r *http.Request, nameA, nameB string) error {
func (v01 *V01) serveGMSwap(r *http.Request, nameA, nameB string) (int, error) {
getUserNameFor := func(like string) string {
for k, v := range v01.cfg.Users {
if k == like || v.Alias == like {
@ -238,15 +238,15 @@ func (v01 *V01) serveGMSwap(r *http.Request, nameA, nameB string) error {
userA := getUserNameFor(nameA)
userB := getUserNameFor(nameB)
if userA == "" || userB == "" {
return errors.New("who dat?")
return http.StatusBadRequest, errors.New("who dat?")
}
if userA == userB {
return errors.New("/spiderman-pointing")
return http.StatusConflict, errors.New("/spiderman-pointing")
}
a := v01.cfg.Users[userA]
b := v01.cfg.Users[userB]
a.Player, b.Player = b.Player, a.Player
v01.cfg.Users[userA] = a
v01.cfg.Users[userB] = b
return nil
return http.StatusOK, nil
}

View File

@ -209,6 +209,33 @@ func TestServeGM(t *testing.T) {
})
t.Run("swap", func(t *testing.T) {
t.Run("self", func(t *testing.T) {
v01 := NewV01(ctx, nil)
v01.cfg.Quiet = true
v01.cfg.Users = map[string]configUser{
"bel": configUser{Player: 1},
}
resp := do(v01, "/gm/rpc/swap?a=bel&b=bel", "")
if resp.Code != http.StatusConflict {
t.Error(resp.Code)
}
if !v01.cfg.Quiet {
t.Error(v01.cfg.Quiet)
}
})
t.Run("who", func(t *testing.T) {
v01 := NewV01(ctx, nil)
v01.cfg.Quiet = true
resp := do(v01, "/gm/rpc/swap?a=bel", "")
if resp.Code != http.StatusBadRequest {
t.Error(resp.Code)
}
if !v01.cfg.Quiet {
t.Error(v01.cfg.Quiet)
}
})
t.Run("happy", func(t *testing.T) {
v01 := NewV01(ctx, nil)
v01.cfg.Quiet = true