test unhappy swap
parent
c744704b63
commit
e2d7c4a908
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue