105 lines
3.2 KiB
Go
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")
|
|
})
|
|
}
|