customer/internal/initialize/config_test.go
2024-11-26 18:28:42 +03:00

121 lines
4.1 KiB
Go

package initialize_test
import (
"testing"
"time"
"gitea.pena/PenaSide/customer/internal/initialize"
"gitea.pena/PenaSide/customer/internal/models"
"github.com/golang-jwt/jwt/v5"
"github.com/stretchr/testify/assert"
"penahub.gitlab.yandexcloud.net/backend/penahub_common/mongo"
)
func TestConfiguration(t *testing.T) {
t.Run("Успешная инициализация конфигурации", func(t *testing.T) {
defaultConfiguration := setDefaultTestingENV(t)
assert.NotPanics(t, func() {
configuration, err := initialize.Configuration("")
assert.NoError(t, err)
assert.Equal(t, defaultConfiguration, configuration)
})
})
t.Run("Ошибка при наличии кривого url", func(t *testing.T) {
setDefaultTestingENV(t)
t.Setenv("AUTH_MICROSERVICE_USER_URL", "url")
assert.NotPanics(t, func() {
configuration, err := initialize.Configuration("")
assert.Error(t, err)
assert.Nil(t, configuration)
})
})
t.Run("Ошибка при отсутствии обязательного env", func(t *testing.T) {
assert.NotPanics(t, func() {
configuration, err := initialize.Configuration("")
assert.Error(t, err)
assert.Nil(t, configuration)
})
})
}
func setDefaultTestingENV(t *testing.T) *models.Config {
t.Helper()
defaultAuthURL := "http://www.auth.ru/user"
defaultHubAdminURL := "http://www.hubadmin.ru/tariff"
defaultCurrencyURL := "http://www.currency.ru/change"
defaultConfiguration := models.Config{
ClientHttpHost: "localhost",
ClientHttpPort: "8080",
AdminHttpHost: "localhost",
AdminHttpPort: "8081",
GrpcHost: "localhost",
GrpcPort: "8081",
GrpcDomen: "domen",
AuthMicroservice: defaultAuthURL,
KafkaTopic: "topic",
KafkaBrokers: []string{"localhost:8080", "localhost:8081"},
HubadminMicroservice: defaultHubAdminURL,
CurrencyMicroservice: defaultCurrencyURL,
DiscountMicroservice: "domen",
PaymentMicroservice: "domen",
VerificationMicroservice: "domen",
TemplategenMicroserviceURL: "domen",
JwtCfg: models.JWTConfiguration{
PrivateKey: "jwt private key",
PublicKey: "jwt public key",
Issuer: "issuer",
Audience: "audience",
Algorithm: *jwt.SigningMethodRS256,
ExpiresIn: 15 * time.Minute,
},
Database: mongo.Configuration{
Host: "localhost",
Port: "27017",
User: "user",
Password: "pass",
Auth: "db",
DatabaseName: "db",
},
}
t.Setenv("GRPC_HOST", defaultConfiguration.GrpcHost)
t.Setenv("GRPC_PORT", defaultConfiguration.GrpcPort)
t.Setenv("GRPC_DOMEN", defaultConfiguration.GrpcDomen)
t.Setenv("JWT_PUBLIC_KEY", defaultConfiguration.JwtCfg.PublicKey)
t.Setenv("JWT_PRIVATE_KEY", defaultConfiguration.JwtCfg.PrivateKey)
t.Setenv("JWT_ISSUER", defaultConfiguration.JwtCfg.Issuer)
t.Setenv("JWT_AUDIENCE", defaultConfiguration.JwtCfg.Audience)
t.Setenv("KAFKA_BROKERS", "localhost:8080,localhost:8081")
t.Setenv("KAFKA_TOPIC_TARIFF", defaultConfiguration.KafkaTopic)
t.Setenv("AUTH_MICROSERVICE_URL", defaultConfiguration.AuthMicroservice)
t.Setenv("HUBADMIN_MICROSERVICE_URL", defaultConfiguration.HubadminMicroservice)
t.Setenv("CURRENCY_MICROSERVICE_URL", defaultConfiguration.CurrencyMicroservice)
t.Setenv("DISCOUNT_MICROSERVICE_GRPC_HOST", defaultConfiguration.DiscountMicroservice)
t.Setenv("PAYMENT_MICROSERVICE_GRPC_HOST", defaultConfiguration.PaymentMicroservice)
t.Setenv("VERIFICATION_MICROSERVICE_URL", defaultConfiguration.VerificationMicroservice)
t.Setenv("TEMPLATEGEN_MICROSERVICE_URL", defaultConfiguration.TemplategenMicroserviceURL)
t.Setenv("MONGO_HOST", defaultConfiguration.Database.Host)
t.Setenv("MONGO_PORT", defaultConfiguration.Database.Port)
t.Setenv("MONGO_USER", defaultConfiguration.Database.User)
t.Setenv("MONGO_PASSWORD", defaultConfiguration.Database.Password)
t.Setenv("MONGO_AUTH", defaultConfiguration.Database.Auth)
t.Setenv("MONGO_DB_NAME", defaultConfiguration.Database.DatabaseName)
return &defaultConfiguration
}