Skip to content

Commit

Permalink
Improve test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
ryukinix committed Jul 27, 2020
1 parent a1d451e commit 641d00c
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 8 deletions.
21 changes: 13 additions & 8 deletions troll_shield.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ type TrollShieldBot interface {
GetChatMember(telegram.ChatConfigWithUser) (telegram.ChatMember, error)
KickChatMember(telegram.KickChatMemberConfig) (telegram.APIResponse, error)
Send(telegram.Chattable) (telegram.Message, error)
LeaveChat(telegram.ChatConfig) (telegram.APIResponse, error)
GetUpdatesChan(telegram.UpdateConfig) (telegram.UpdatesChannel, error)
}

// blacklist groups, member from that groups will be kicked automatically
Expand Down Expand Up @@ -68,7 +70,7 @@ func getUserName(user telegram.User) string {
return username
}

func getUpdates(bot *telegram.BotAPI) telegram.UpdatesChannel {
func getUpdates(bot TrollShieldBot) telegram.UpdatesChannel {
u := telegram.NewUpdate(0)
u.Timeout = 60
updates, err := bot.GetUpdatesChan(u)
Expand Down Expand Up @@ -194,14 +196,14 @@ func setupBot(envVar string) (*telegram.BotAPI, error) {
return bot, nil
}

func setupBots() (*telegram.BotAPI, *telegram.BotAPI) {
func setupBots() (*telegram.BotAPI, *telegram.BotAPI, error) {
var bot, botHidden *telegram.BotAPI
var err error

log.Println("Setup the main bot")
bot, err = setupBot("TELEGRAM_BOT_TOKEN")
if err != nil {
log.Fatalf("Bot setup failed: %v", err)
return nil, nil, err
}

log.Println("Setup the hidden bot")
Expand All @@ -211,22 +213,25 @@ func setupBots() (*telegram.BotAPI, *telegram.BotAPI) {
botHidden = bot
}

return bot, botHidden
return bot, botHidden, nil
}

func leaveChat(bot *telegram.BotAPI, update *telegram.Update, trollGroup string) {
func leaveChat(bot TrollShieldBot, update *telegram.Update, trollGroup string) {
reply(bot, update, "Nesse grupo há trolls. Dou-me a liberdade de ir embora. Adeus.")
r, err := bot.LeaveChat(telegram.ChatConfig{ChatID: update.Message.Chat.ID})
if !r.Ok || err != nil {
log.Printf("%v tried to exit from %v, but failed with: %v",
bot.Self.UserName, trollGroup, err,
log.Printf("Bot tried to exit from %v, but failed with: %v",
trollGroup, err,
)
}
}

func main() {
setupLogging()
bot, botHidden := setupBots()
bot, botHidden, err := setupBots()
if err != nil {
log.Fatal(err.Error())
}

for update := range getUpdates(bot) {
if messageEvent(&update) {
Expand Down
54 changes: 54 additions & 0 deletions troll_shield_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package main

import (
"errors"
"os"
"testing"

telegram "github.com/go-telegram-bot-api/telegram-bot-api"
Expand Down Expand Up @@ -32,6 +33,19 @@ func (bot *BotMockup) Send(c telegram.Chattable) (telegram.Message, error) {
return telegram.Message{}, nil
}

func (bot *BotMockup) LeaveChat(c telegram.ChatConfig) (telegram.APIResponse, error) {
switch c.ChatID {
case 1:
return telegram.APIResponse{Ok: true}, nil
default:
return telegram.APIResponse{Ok: false}, errors.New("user not found")
}
}

func (bot *BotMockup) GetUpdatesChan(c telegram.UpdateConfig) (telegram.UpdatesChannel, error) {
return make(chan telegram.Update, 1), nil
}

func TestGetUserName(t *testing.T) {
user1 := telegram.User{
FirstName: "Rolisvaldo",
Expand Down Expand Up @@ -135,3 +149,43 @@ func TestWelcomeMessage(t *testing.T) {
user := telegram.User{}
welcomeMessage(&botnilson, &update, user)
}

func TestSetupBot(t *testing.T) {
envVar := "TELEGRAM_BOT_TOKEN"
if err := os.Setenv(envVar, "123"); err != nil {
t.Errorf("Setup env var TELEGRAM_BOT_TOKEN error: %v", err)
}

if _, err := setupBot(envVar); err == nil {
t.Errorf("Invalid token should go fail, got nil error")
}

if _, err := setupBot("???"); err == nil {
t.Errorf("Non-defined env var should go fail, got nil error.")
}
}

func TestSetupBots(t *testing.T) {
if _, _, err := setupBots(); err == nil {
t.Errorf("setupBots fail with invalid tokens.")
}
}

func TestSetupLogging(t *testing.T) {
setupLogging()
}

func TestLeaveChat(t *testing.T) {
bot := BotMockup{}
update := telegram.Update{}
message := telegram.Message{}
chat := telegram.Chat{}
message.Chat = &chat
update.Message = &message
leaveChat(&bot, &update, "trolleira")
}

func TestGetUpdates(t *testing.T) {
bot := BotMockup{}
getUpdates(&bot)
}

0 comments on commit 641d00c

Please sign in to comment.