generated from PenaSide/GolangTemplate
132 lines
4.1 KiB
Go
132 lines
4.1 KiB
Go
package initialize_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/golang-jwt/jwt/v5"
|
|
"github.com/stretchr/testify/assert"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/initialize"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/customer/pkg/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 := models.AuthMicroserviceURL{
|
|
User: "http://www.auth.ru/user",
|
|
}
|
|
|
|
defaultHubAdminURL := models.HubadminMicroserviceURL{
|
|
Tariff: "http://www.hubadmin.ru/tariff",
|
|
}
|
|
|
|
defaultCurrencyURL := models.CurrencyMicroserviceURL{
|
|
Translate: "http://www.currency.ru/change",
|
|
}
|
|
|
|
defaultConfiguration := models.Config{
|
|
HTTP: models.ConfigurationHTTP{
|
|
Host: "localhost",
|
|
Port: "8080",
|
|
},
|
|
GRPC: models.ConfigurationGRPC{
|
|
Host: "localhost",
|
|
Port: "8081",
|
|
Domen: "domen",
|
|
},
|
|
Service: models.ServiceConfiguration{
|
|
AuthMicroservice: models.AuthMicroserviceConfiguration{
|
|
URL: defaultAuthURL,
|
|
},
|
|
HubadminMicroservice: models.HubadminMicroserviceConfiguration{
|
|
URL: defaultHubAdminURL,
|
|
},
|
|
CurrencyMicroservice: models.CurrencyMicroserviceConfiguration{
|
|
URL: defaultCurrencyURL,
|
|
},
|
|
DiscountMicroservice: models.DiscountMicroserviceConfiguration{
|
|
HostGRPC: "domen",
|
|
},
|
|
PaymentMicroservice: models.PaymentMicroserviceConfiguration{
|
|
HostGRPC: "domen",
|
|
},
|
|
JWT: 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.GRPC.Host)
|
|
t.Setenv("GRPC_PORT", defaultConfiguration.GRPC.Port)
|
|
t.Setenv("GRPC_DOMEN", defaultConfiguration.GRPC.Domen)
|
|
|
|
t.Setenv("JWT_PUBLIC_KEY", defaultConfiguration.Service.JWT.PublicKey)
|
|
t.Setenv("JWT_PRIVATE_KEY", defaultConfiguration.Service.JWT.PrivateKey)
|
|
t.Setenv("JWT_ISSUER", defaultConfiguration.Service.JWT.Issuer)
|
|
t.Setenv("JWT_AUDIENCE", defaultConfiguration.Service.JWT.Audience)
|
|
|
|
t.Setenv("AUTH_MICROSERVICE_USER_URL", defaultConfiguration.Service.AuthMicroservice.URL.User)
|
|
t.Setenv("HUBADMIN_MICROSERVICE_TARIFF_URL", defaultConfiguration.Service.HubadminMicroservice.URL.Tariff)
|
|
t.Setenv("CURRENCY_MICROSERVICE_TRANSLATE_URL", defaultConfiguration.Service.CurrencyMicroservice.URL.Translate)
|
|
t.Setenv("DISCOUNT_MICROSERVICE_GRPC_HOST", defaultConfiguration.Service.DiscountMicroservice.HostGRPC)
|
|
t.Setenv("PAYMENT_MICROSERVICE_GRPC_HOST", defaultConfiguration.Service.PaymentMicroservice.HostGRPC)
|
|
|
|
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
|
|
}
|