130 lines
4.5 KiB
Go
130 lines
4.5 KiB
Go
package rpc
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/iamxvbaba/td/tg"
|
|
"github.com/iamxvbaba/td/tgerr"
|
|
)
|
|
|
|
func TestMessagesGetEmojiGameInfoUnavailable(t *testing.T) {
|
|
ctx := context.Background()
|
|
f := newInlineBotRPCTestFixture(t)
|
|
|
|
got, err := f.router.onMessagesGetEmojiGameInfo(WithUserID(ctx, f.owner.ID))
|
|
if err != nil {
|
|
t.Fatalf("get emoji game info: %v", err)
|
|
}
|
|
if _, ok := got.(*tg.MessagesEmojiGameUnavailable); !ok {
|
|
t.Fatalf("emoji game info = %T, want *tg.MessagesEmojiGameUnavailable", got)
|
|
}
|
|
}
|
|
|
|
func TestMessagesGameScoreRPCsRequireBot(t *testing.T) {
|
|
ctx := context.Background()
|
|
f := newInlineBotRPCTestFixture(t)
|
|
userCtx := WithUserID(ctx, f.owner.ID)
|
|
inlineID := validInputBotInlineMessageID(f.owner.ID)
|
|
|
|
if _, err := f.router.onMessagesGetGameHighScores(userCtx, &tg.MessagesGetGameHighScoresRequest{
|
|
Peer: inputPeerUser(f.peer),
|
|
ID: 1,
|
|
UserID: inputUser(f.owner),
|
|
}); !tgerr.Is(err, "USER_BOT_REQUIRED") {
|
|
t.Fatalf("get game high scores err = %v, want USER_BOT_REQUIRED", err)
|
|
}
|
|
if _, err := f.router.onMessagesGetInlineGameHighScores(userCtx, &tg.MessagesGetInlineGameHighScoresRequest{
|
|
ID: inlineID,
|
|
UserID: inputUser(f.owner),
|
|
}); !tgerr.Is(err, "USER_BOT_REQUIRED") {
|
|
t.Fatalf("get inline game high scores err = %v, want USER_BOT_REQUIRED", err)
|
|
}
|
|
if _, err := f.router.onMessagesSetGameScore(userCtx, &tg.MessagesSetGameScoreRequest{
|
|
Peer: inputPeerUser(f.peer),
|
|
ID: 1,
|
|
UserID: inputUser(f.owner),
|
|
Score: 10,
|
|
}); !tgerr.Is(err, "USER_BOT_REQUIRED") {
|
|
t.Fatalf("set game score err = %v, want USER_BOT_REQUIRED", err)
|
|
}
|
|
if ok, err := f.router.onMessagesSetInlineGameScore(userCtx, &tg.MessagesSetInlineGameScoreRequest{
|
|
ID: inlineID,
|
|
UserID: inputUser(f.owner),
|
|
Score: 10,
|
|
}); ok || !tgerr.Is(err, "USER_BOT_REQUIRED") {
|
|
t.Fatalf("set inline game score = %v,%v, want false,USER_BOT_REQUIRED", ok, err)
|
|
}
|
|
}
|
|
|
|
func TestMessagesGameScoreRPCsRejectWithoutGameModel(t *testing.T) {
|
|
ctx := context.Background()
|
|
f := newInlineBotRPCTestFixture(t)
|
|
botCtx := WithUserID(ctx, f.bot.ID)
|
|
|
|
if _, err := f.router.onMessagesGetGameHighScores(botCtx, &tg.MessagesGetGameHighScoresRequest{
|
|
Peer: inputPeerUser(f.peer),
|
|
ID: 1,
|
|
UserID: inputUser(f.owner),
|
|
}); !tgerr.Is(err, "MESSAGE_ID_INVALID") {
|
|
t.Fatalf("get game high scores err = %v, want MESSAGE_ID_INVALID", err)
|
|
}
|
|
if _, err := f.router.onMessagesSetGameScore(botCtx, &tg.MessagesSetGameScoreRequest{
|
|
Peer: inputPeerUser(f.peer),
|
|
ID: 1,
|
|
UserID: inputUser(f.owner),
|
|
Score: 10,
|
|
}); !tgerr.Is(err, "MESSAGE_ID_INVALID") {
|
|
t.Fatalf("set game score err = %v, want MESSAGE_ID_INVALID", err)
|
|
}
|
|
if _, err := f.router.onMessagesSetGameScore(botCtx, &tg.MessagesSetGameScoreRequest{
|
|
Peer: inputPeerUser(f.peer),
|
|
ID: 1,
|
|
UserID: inputUser(f.owner),
|
|
Score: -1,
|
|
}); !tgerr.Is(err, "SCORE_INVALID") {
|
|
t.Fatalf("set negative game score err = %v, want SCORE_INVALID", err)
|
|
}
|
|
}
|
|
|
|
func TestMessagesInlineGameScoreRPCsRejectWithoutGameModel(t *testing.T) {
|
|
ctx := context.Background()
|
|
f := newInlineBotRPCTestFixture(t)
|
|
botCtx := WithUserID(ctx, f.bot.ID)
|
|
inlineID := validInputBotInlineMessageID(f.owner.ID)
|
|
|
|
if _, err := f.router.onMessagesGetInlineGameHighScores(botCtx, &tg.MessagesGetInlineGameHighScoresRequest{
|
|
ID: inlineID,
|
|
UserID: inputUser(f.owner),
|
|
}); !tgerr.Is(err, "MESSAGE_ID_INVALID") {
|
|
t.Fatalf("get inline game high scores err = %v, want MESSAGE_ID_INVALID", err)
|
|
}
|
|
if ok, err := f.router.onMessagesSetInlineGameScore(botCtx, &tg.MessagesSetInlineGameScoreRequest{
|
|
ID: inlineID,
|
|
UserID: inputUser(f.owner),
|
|
Score: 10,
|
|
}); ok || !tgerr.Is(err, "MESSAGE_ID_INVALID") {
|
|
t.Fatalf("set inline game score = %v,%v, want false,MESSAGE_ID_INVALID", ok, err)
|
|
}
|
|
if ok, err := f.router.onMessagesSetInlineGameScore(botCtx, &tg.MessagesSetInlineGameScoreRequest{
|
|
ID: inlineID,
|
|
UserID: inputUser(f.owner),
|
|
Score: -1,
|
|
}); ok || !tgerr.Is(err, "SCORE_INVALID") {
|
|
t.Fatalf("set negative inline game score = %v,%v, want false,SCORE_INVALID", ok, err)
|
|
}
|
|
if _, err := f.router.onMessagesGetInlineGameHighScores(botCtx, &tg.MessagesGetInlineGameHighScoresRequest{
|
|
UserID: inputUser(f.owner),
|
|
}); !tgerr.Is(err, "MESSAGE_ID_INVALID") {
|
|
t.Fatalf("get inline game high scores nil id err = %v, want MESSAGE_ID_INVALID", err)
|
|
}
|
|
}
|
|
|
|
func validInputBotInlineMessageID(ownerID int64) tg.InputBotInlineMessageIDClass {
|
|
return &tg.InputBotInlineMessageID64{
|
|
DCID: 2,
|
|
OwnerID: ownerID,
|
|
ID: 1,
|
|
AccessHash: 12345,
|
|
}
|
|
}
|