Example #1
0
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)
		}
	})
}
Example #2
0
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)
		}
	})
}
Example #3
0
		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)