package initialize_test import ( "testing" "time" "gitea.pena/PenaSide/common/mongo" "gitea.pena/PenaSide/customer/internal/initialize" "gitea.pena/PenaSide/customer/internal/models" "github.com/golang-jwt/jwt/v5" "github.com/stretchr/testify/assert" ) 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", ExternalCfg: models.ExternalCfg{ 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.ExternalCfg.JwtCfg.PublicKey) t.Setenv("JWT_PRIVATE_KEY", defaultConfiguration.ExternalCfg.JwtCfg.PrivateKey) t.Setenv("JWT_ISSUER", defaultConfiguration.ExternalCfg.JwtCfg.Issuer) t.Setenv("JWT_AUDIENCE", defaultConfiguration.ExternalCfg.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.ExternalCfg.Database.Host) t.Setenv("MONGO_PORT", defaultConfiguration.ExternalCfg.Database.Port) t.Setenv("MONGO_USER", defaultConfiguration.ExternalCfg.Database.User) t.Setenv("MONGO_PASSWORD", defaultConfiguration.ExternalCfg.Database.Password) t.Setenv("MONGO_AUTH", defaultConfiguration.ExternalCfg.Database.Auth) t.Setenv("MONGO_DB_NAME", defaultConfiguration.ExternalCfg.Database.DatabaseName) return &defaultConfiguration }