func TestLoginResponse_WrongPassword(t *testing.T) { code := message.LoginResponseCodes["wrong_password"] testMessage(t, message.Types["login_response"], func(w io.Writer) error { return builder.SendLoginResp(w, code, 0, time.Now()) }, func(conn *message.Conn, t *testing.T) { c, _, _ := handler.ReadLoginResponse(conn) if c != code { t.Fatal("Sent code", code, "but received", c) } }) }
func TestLoginResponse_Ok(t *testing.T) { code := message.LoginResponseCodes["ok"] tick := message.Tick(42) time := time.Unix(70817303, 868000) testMessage(t, message.Types["login_response"], func(w io.Writer) error { return builder.SendLoginResp(w, code, tick, time) }, func(conn *message.Conn, t *testing.T) { receivedCode, receivedTick, receivedTime := handler.ReadLoginResponse(conn) if receivedCode != code { t.Fatal("Sent code", code, "but received", receivedCode) } if receivedTick != tick { t.Fatal("Sent tick", tick, "but received", receivedTick) } if !receivedTime.Equal(time) { t.Fatal("Sent time", time, "but received", receivedTime) } }) }
code := ReadExit(conn) log.Println("Client disconnected with code:", code) if err := conn.Close(); err != nil { return err } return nil }, message.Types["login"]: func(ctx *message.Context, conn *message.Conn) error { username, password := ReadLogin(conn) // TODO: do not use time.Now(), use the time at which the current tick has begun code := ctx.Auth.Login(conn.Id, username, password) err := conn.Write(func(w io.Writer) error { return builder.SendLoginResp(w, code, ctx.Clock.GetRelativeTick(), ctx.Clock.GetTickTime()) }) if err != nil { return err } log.Println("Client requested login:"******"ok"] { return nil } conn.State = message.LoggedIn // Get entity session := ctx.Auth.GetSession(conn.Id)