trashlog/app/validate_test.go
Pasha 9ff5fdb551
All checks were successful
Lint / Lint (push) Successful in 2m16s
upd after review
2024-12-09 12:46:14 +03:00

105 lines
3.2 KiB
Go

package app
import (
"github.com/stretchr/testify/assert"
"os"
"testing"
)
func TestNewOptions(t *testing.T) {
os.Setenv("DEVELOPMENT", "false")
os.Setenv("APP_NAME", "testValidate")
os.Setenv("GRPC_URL", ":7113")
os.Setenv("CLICKHOUSE_URL", "tcp://127.0.0.1:9000?debug=true")
os.Setenv("DB_PATH", "./recover.bolt")
os.Setenv("TELEGRAM_TOKEN", "6712573453:AAFqTOsgwe_j48ZQ1GzWKQDT5Nwr-SAWjz8")
os.Setenv("TELEGRAM_CHANNEL_ID", "1002217604546")
os.Setenv("CLICKHOUSE_TABLE_MAIN_NAME", "test_validator")
os.Setenv("ADMIN_HTTP_URL", "127.0.0.1:8000")
opts := NewOptions()
assert.Equal(t, false, opts.Development)
assert.Equal(t, "testValidate", opts.AppName)
assert.Equal(t, ":7113", opts.GrpcURL)
assert.Equal(t, "tcp://127.0.0.1:9000?debug=true", opts.ClickhouseURL)
assert.Equal(t, "./recover.bolt", opts.DBPath)
assert.Equal(t, "6712573453:AAFqTOsgwe_j48ZQ1GzWKQDT5Nwr-SAWjz8", opts.TelegramToken)
assert.Equal(t, uint64(1002217604546), opts.TelegramChannelID)
assert.Equal(t, "test_validator", opts.ClickhouseTableMainName)
assert.Equal(t, "127.0.0.1:8000", opts.AdminHttpURL)
}
func TestOptions_Validate(t *testing.T) {
optsMain := Options{
GrpcURL: ":7113",
ClickhouseURL: "tcp://127.0.0.1:9000?debug=true",
DBPath: "./recover.bolt",
TelegramToken: "6712573453:AAFqTOsgwe_j48ZQ1GzWKQDT5Nwr-SAWjz8",
TelegramChannelID: 1002217604546,
ClickhouseTableMainName: "test_validator",
AdminHttpURL: "127.0.0.1:8000",
}
t.Run("valid configuration", func(t *testing.T) {
opts := optsMain
err := opts.Validate()
assert.NoError(t, err)
})
t.Run("missing CLICKHOUSE_TABLE_MAIN_NAME", func(t *testing.T) {
opts := optsMain
opts.ClickhouseTableMainName = ""
err := opts.Validate()
assert.EqualError(t, err, "invalid value for DBClickHouseName, some value is empty")
})
t.Run("missing GRPC_URL prefix ':'", func(t *testing.T) {
opts := optsMain
opts.GrpcURL = "7113"
err := opts.Validate()
assert.EqualError(t, err, "GRPC_URL must start with ':'")
})
t.Run("missing ADMIN_HTTP_URL", func(t *testing.T) {
opts := optsMain
opts.AdminHttpURL = ""
err := opts.Validate()
assert.EqualError(t, err, "ADMIN_HTTP_URL not be empty")
})
t.Run("missing CLICKHOUSE_URL", func(t *testing.T) {
opts := optsMain
opts.ClickhouseURL = ""
err := opts.Validate()
assert.EqualError(t, err, "CLICKHOUSE_URL is empty")
})
t.Run("invalid DBPath directory", func(t *testing.T) {
opts := optsMain
opts.DBPath = "/invalid_path/test.db"
err := opts.Validate()
assert.Contains(t, err.Error(), "unable to create temporary file in directory")
})
t.Run("empty Telegram token", func(t *testing.T) {
opts := optsMain
opts.TelegramToken = ""
err := opts.Validate()
assert.EqualError(t, err, "TELEGRAM_TOKEN or TELEGRAM_CHANNEL_ID empty")
})
t.Run("empty Telegram ChatID", func(t *testing.T) {
opts := optsMain
opts.TelegramChannelID = 0
err := opts.Validate()
assert.EqualError(t, err, "TELEGRAM_TOKEN or TELEGRAM_CHANNEL_ID empty")
})
t.Run("invalid CLICKHOUSE_URL - connection error", func(t *testing.T) {
opts := optsMain
opts.ClickhouseURL = "tcp://invalid:9000?debug=true"
err := opts.Validate()
assert.Contains(t, err.Error(), "clickhouse ping error")
})
}