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