Files
gocryptotrader/communications/telegram/telegram_test.go
Adrian Gallagher a5b638bfb7 GHA: Add additional checks for common issues (#1922)
* GHA, tests: Add additional checks for common issues

These checks include:
- Ensuring that all testify funcs use their formatted variants (e.g., `assert.Equalf(t, expected, actual)` instead of `assert.Equal(t, expected, actual)`).
- Replacing `%s` with %q
- Enforcing consistent usage of should/must wording for testify assert/require messages

* Add support for checking backticked string format specifiers and fix issues

* tests: Fix error comparisons

* tests: Replace errors.Is(err, nil) usage with testify and automate check

* refactor: Rename ExtractPort to ExtractPortOrDefault

* tests: Replace assert with require for error handling in multiple test files

* tests: Replace assert with require for error handling and improve assertions in data tests

* tests: Fix typo in assertion message for StreamVol test

* OKX: Fix GetOpenInterestAndVolumeStrike test with instrument selection and improved assertions

* OKX: Revert intentional error check

* Improve error message for expiry time check in GetOpenInterestAndVolumeStrike test
2025-05-28 12:26:51 +10:00

102 lines
2.4 KiB
Go

package telegram
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/thrasher-corp/gocryptotrader/communications/base"
"github.com/thrasher-corp/gocryptotrader/config"
)
const (
testErrNotFound = "Not Found"
)
func TestSetup(t *testing.T) {
t.Parallel()
cfg := &config.Config{Communications: base.CommunicationsConfig{
TelegramConfig: base.TelegramConfig{
Name: "Telegram",
Enabled: false,
Verbose: false,
VerificationToken: "testest",
AuthorisedClients: map[string]int64{"sender": 0},
},
}}
commsCfg := cfg.GetCommunicationsConfig()
var T Telegram
T.Setup(&commsCfg)
if T.Name != "Telegram" || T.Enabled || T.Token != "testest" || T.Verbose || len(T.AuthorisedClients) != 1 {
t.Error("telegram Setup() error, unexpected setup values",
T.Name,
T.Enabled,
T.Token,
T.Verbose)
}
}
func TestConnect(t *testing.T) {
t.Parallel()
var T Telegram
if err := T.Connect(); err == nil {
t.Error("expected error")
}
}
func TestPushEvent(t *testing.T) {
t.Parallel()
var T Telegram
err := T.PushEvent(base.Event{})
assert.ErrorIs(t, err, ErrNotConnected)
T.Connected = true
T.AuthorisedClients = map[string]int64{"sender": 0}
err = T.PushEvent(base.Event{})
assert.NoError(t, err, "PushEvent should not error")
T.AuthorisedClients = map[string]int64{"sender": 1337}
err = T.PushEvent(base.Event{})
assert.ErrorContains(t, err, testErrNotFound)
}
func TestHandleMessages(t *testing.T) {
t.Parallel()
var T Telegram
for _, c := range []string{cmdHelp, cmdStart, cmdStatus, "Not a command"} {
assert.ErrorContainsf(t, T.HandleMessages(c, 1337), testErrNotFound,
"HandleMessages with command %q should error correctly", c)
}
}
func TestGetUpdates(t *testing.T) {
t.Parallel()
var T Telegram
if _, err := T.GetUpdates(); err != nil {
t.Error("telegram GetUpdates() error", err)
}
}
func TestTestConnection(t *testing.T) {
t.Parallel()
var T Telegram
if err := T.TestConnection(); err.Error() != testErrNotFound {
t.Errorf("received %s, expected: %s", err, testErrNotFound)
}
}
func TestSendMessage(t *testing.T) {
t.Parallel()
var T Telegram
err := T.SendMessage("Test message", 1337)
assert.ErrorContains(t, err, testErrNotFound, "SendMessage should error correctly")
}
func TestSendHTTPRequest(t *testing.T) {
t.Parallel()
var T Telegram
err := T.SendHTTPRequest("0.0.0.0", nil, nil)
if err == nil {
t.Error("telegram SendHTTPRequest() error")
}
}