generated from PenaSide/GolangTemplate
test(integration): set verification status
This commit is contained in:
parent
c8f062a175
commit
7b589821e8
@ -50,7 +50,7 @@ RUN apk --no-cache add ca-certificates
|
||||
# Create home directory
|
||||
WORKDIR /app
|
||||
# Copy migration dir
|
||||
COPY --from=build /app/migrations/tests ./migrations
|
||||
COPY --from=build /app/migrations/test ./migrations
|
||||
# Install migrate tool
|
||||
COPY --from=build /bin/golang-migrate /usr/local/bin
|
||||
|
||||
|
27
deployments/test/.env.test
Normal file
27
deployments/test/.env.test
Normal file
@ -0,0 +1,27 @@
|
||||
# HTTP settings
|
||||
HTTP_HOST=0.0.0.0
|
||||
HTTP_PORT=8080
|
||||
|
||||
# MONGO settings
|
||||
MONGO_HOST=localhost
|
||||
MONGO_PORT=27017
|
||||
MONGO_USER=test
|
||||
MONGO_PASSWORD=test
|
||||
MONGO_AUTH=admin
|
||||
MONGO_DB_NAME=admin
|
||||
|
||||
# Auth Microservice settings
|
||||
AUTH_MICROSERVICE_USER_URL=http://localhost:8000/user
|
||||
|
||||
# Hub Admin Microservice settings
|
||||
HUBADMIN_MICROSERVICE_TARIFF_URL=http://localhost:8001/tariff
|
||||
|
||||
# Currency Microservice settings
|
||||
CURRENCY_MICROSERVICE_TRANSLATE_URL=http://localhost:8002/change
|
||||
|
||||
# Admin
|
||||
|
||||
# JWT settings
|
||||
JWT_ISSUER="pena-auth-service"
|
||||
JWT_AUDIENCE="pena"
|
||||
JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyt4XuLovUY7i12K2PIMbQZOKn+wFFKUvxvKQDel049/+VMpHMx1FLolUKuyGp9zi6gOwjHsBPgc9oqr/eaXGQSh7Ult7i9f+Ht563Y0er5UU9Zc5ZPSxf9O75KYD48ruGkqiFoncDqPENK4dtUa7w0OqlN4bwVBbmIsP8B3EDC5Dof+vtiNTSHSXPx+zifKeZGyknp+nyOHVrRDhPjOhzQzCom0MSZA/sJYmps8QZgiPA0k4Z6jTupDymPOIwYeD2C57zSxnAv0AfC3/pZYJbZYH/0TszRzmy052DME3zMnhMK0ikdN4nzYqU0dkkA5kb5GtKDymspHIJ9eWbUuwgtg8Rq/LrVBj1I3UFgs0ibio40k6gqinLKslc5Y1I5mro7J3OSEP5eO/XeDLOLlOJjEqkrx4fviI1cL3m5L6QV905xmcoNZG1+RmOg7D7cZQUf27TXqM381jkbNdktm1JLTcMScxuo3vaRftnIVw70V8P8sIkaKY8S8HU1sQgE2LB9t04oog5u59htx2FHv4B13NEm8tt8Tv1PexpB4UVh7PIualF6SxdFBrKbraYej72wgjXVPQ0eGXtGGD57j8DUEzk7DK2OvIWhehlVqtiRnFdAvdBj2ynHT2/5FJ/Zpd4n5dKGJcQvy1U1qWMs+8M7AHfWyt2+nZ04s48+bK3yMCAwEAAQ==\n-----END PUBLIC KEY-----"
|
@ -7,17 +7,34 @@ services:
|
||||
dockerfile: Dockerfile
|
||||
target: test
|
||||
env_file:
|
||||
- ../../.env.test
|
||||
- .env.test
|
||||
environment:
|
||||
- AUTH_MICROSERVICE_EXHANGE_URL=http://mock:8080/exchange
|
||||
- AUTH_MICROSERVICE_REGISTER_URL=http://mock:8080/register
|
||||
- AUTH_MICROSERVICE_USER_URL=http://mock:8080/user
|
||||
- AMOCRM_USER_INFO_URL=http://mock:8080/api/v4/account
|
||||
- AMOCRM_ACCESS_TOKEN_URL=http://mock:8080/oauth2/access_token
|
||||
- HTTP_HOST=0.0.0.0
|
||||
- HTTP_PORT=8082
|
||||
|
||||
- GRPC_HOST=0.0.0.0
|
||||
- GRPC_PORT=9082
|
||||
- GRPC_DOMEN=customer-app:9082
|
||||
|
||||
- MONGO_HOST=mongo
|
||||
- MONGO_PORT=27017
|
||||
- MONGO_USER=test
|
||||
- MONGO_PASSWORD=test
|
||||
- MONGO_DB_NAME=admin
|
||||
- MONGO_AUTH=admin
|
||||
|
||||
- JWT_ISSUER=issuer
|
||||
- JWT_AUDIENCE=audience
|
||||
|
||||
- AUTH_MICROSERVICE_USER_URL=http://pena-auth-service:8000/user
|
||||
- HUBADMIN_MICROSERVICE_TARIFF_URL=http://hub-admin-service:8010/tariff
|
||||
- CURRENCY_MICROSERVICE_TRANSLATE_URL=http://cbrf-service:8020/translate
|
||||
- DISCOUNT_MICROSERVICE_GRPC_HOST=discount-service:9040
|
||||
- PAYMENT_MICROSERVICE_GRPC_HOST=treasurer-service:9085
|
||||
ports:
|
||||
- 8080:8080
|
||||
- 8082:8082
|
||||
depends_on:
|
||||
- mongo
|
||||
- migration
|
||||
networks:
|
||||
- integration_test
|
||||
@ -31,7 +48,7 @@ services:
|
||||
[
|
||||
"sh",
|
||||
"-c",
|
||||
'migrate -source file://migrations -database "mongodb://$MONGO_USER:$MONGO_PASSWORD@$MONGO_HOST:$MONGO_PORT/$MONGO_AUTH?authSource=$MONGO_AUTH" up',
|
||||
'migrate -source file://migrations -database "mongodb://test:test@mongo:27017/admin?authSource=admin" up',
|
||||
]
|
||||
depends_on:
|
||||
- mongo
|
||||
@ -48,14 +65,5 @@ services:
|
||||
networks:
|
||||
- integration_test
|
||||
|
||||
mock:
|
||||
image: 'wiremock/wiremock:2.35.0'
|
||||
ports:
|
||||
- 8000:8080
|
||||
networks:
|
||||
- integration_test
|
||||
depends_on:
|
||||
- app
|
||||
|
||||
networks:
|
||||
integration_test:
|
@ -7,7 +7,7 @@ var Account = struct {
|
||||
Wallet string
|
||||
Name string
|
||||
Status string
|
||||
Deleted string
|
||||
IsDeleted string
|
||||
CreatedAt string
|
||||
UpdatedAt string
|
||||
DeletedAt string
|
||||
@ -18,7 +18,7 @@ var Account = struct {
|
||||
Wallet: "wallet",
|
||||
Name: "name",
|
||||
Status: "status",
|
||||
Deleted: "deleted",
|
||||
IsDeleted: "isDeleted",
|
||||
CreatedAt: "createdAt",
|
||||
UpdatedAt: "updatedAt",
|
||||
DeletedAt: "deletedAt",
|
||||
|
@ -4,7 +4,7 @@ var Currency = struct {
|
||||
ID string
|
||||
Name string
|
||||
Currencies string
|
||||
Deleted string
|
||||
IsDeleted string
|
||||
CreatedAt string
|
||||
UpdatedAt string
|
||||
DeletedAt string
|
||||
@ -12,7 +12,7 @@ var Currency = struct {
|
||||
ID: "_id",
|
||||
Name: "name",
|
||||
Currencies: "currencies",
|
||||
Deleted: "deleted",
|
||||
IsDeleted: "isDeleted",
|
||||
CreatedAt: "createdAt",
|
||||
UpdatedAt: "updatedAt",
|
||||
DeletedAt: "deletedAt",
|
||||
|
@ -6,7 +6,7 @@ var History = struct {
|
||||
Comment string
|
||||
Subject string
|
||||
Type string
|
||||
Deleted string
|
||||
IsDeleted string
|
||||
CreatedAt string
|
||||
UpdatedAt string
|
||||
DeletedAt string
|
||||
@ -16,7 +16,7 @@ var History = struct {
|
||||
Comment: "comment",
|
||||
Subject: "subject",
|
||||
Type: "type",
|
||||
Deleted: "deleted",
|
||||
IsDeleted: "isDeleted",
|
||||
CreatedAt: "createdAt",
|
||||
UpdatedAt: "updatedAt",
|
||||
DeletedAt: "deletedAt",
|
||||
|
@ -44,8 +44,8 @@ func NewAccountRepository(deps AccountRepositoryDeps) *AccountRepository {
|
||||
|
||||
func (receiver *AccountRepository) FindByUserID(ctx context.Context, id string) (*models.Account, errors.Error) {
|
||||
filter := bson.M{
|
||||
fields.Account.UserID: id,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Account.UserID: id,
|
||||
fields.Account.IsDeleted: false,
|
||||
}
|
||||
|
||||
account, err := mongoWrapper.FindOne[models.Account](ctx, &mongoWrapper.RequestSettings{
|
||||
@ -74,7 +74,7 @@ func (receiver *AccountRepository) FindByUserID(ctx context.Context, id string)
|
||||
}
|
||||
|
||||
func (receiver *AccountRepository) FindMany(ctx context.Context, page, limit int64) ([]models.Account, errors.Error) {
|
||||
filter := bson.M{fields.Account.Deleted: false}
|
||||
filter := bson.M{fields.Account.IsDeleted: false}
|
||||
findOptions := options.Find()
|
||||
|
||||
skip := (page - 1) * limit
|
||||
@ -129,12 +129,12 @@ func (receiver *AccountRepository) Remove(ctx context.Context, id string) (*mode
|
||||
options := options.FindOneAndUpdate().SetReturnDocument(options.After)
|
||||
|
||||
filter := bson.M{
|
||||
fields.Account.UserID: id,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Account.UserID: id,
|
||||
fields.Account.IsDeleted: false,
|
||||
}
|
||||
|
||||
update := bson.M{"$set": bson.M{
|
||||
fields.Account.Deleted: true,
|
||||
fields.Account.IsDeleted: true,
|
||||
fields.Account.DeletedAt: time.Now(),
|
||||
}}
|
||||
|
||||
@ -163,8 +163,8 @@ func (receiver *AccountRepository) Delete(ctx context.Context, id string) (*mode
|
||||
account := models.Account{}
|
||||
|
||||
filter := bson.M{
|
||||
fields.Account.UserID: id,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Account.UserID: id,
|
||||
fields.Account.IsDeleted: false,
|
||||
}
|
||||
|
||||
if err := receiver.mongoDB.FindOneAndDelete(ctx, filter).Decode(&account); err != nil {
|
||||
@ -189,7 +189,7 @@ func (receiver *AccountRepository) Delete(ctx context.Context, id string) (*mode
|
||||
}
|
||||
|
||||
func (receiver *AccountRepository) CountAll(ctx context.Context) (int64, errors.Error) {
|
||||
count, err := receiver.mongoDB.CountDocuments(ctx, bson.M{fields.Account.Deleted: false})
|
||||
count, err := receiver.mongoDB.CountDocuments(ctx, bson.M{fields.Account.IsDeleted: false})
|
||||
if err != nil {
|
||||
receiver.logger.Error("failed to count all documents on <CountAll> of <AccountRepository>", zap.Error(err))
|
||||
|
||||
@ -207,8 +207,8 @@ func (receiver *AccountRepository) AddItemToCart(ctx context.Context, userID, it
|
||||
options := options.FindOneAndUpdate().SetReturnDocument(options.After)
|
||||
|
||||
filter := bson.M{
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.IsDeleted: false,
|
||||
}
|
||||
|
||||
update := bson.M{
|
||||
@ -243,8 +243,8 @@ func (receiver *AccountRepository) RemoveItemFromCart(ctx context.Context, userI
|
||||
options := options.FindOneAndUpdate().SetReturnDocument(options.After)
|
||||
|
||||
filter := bson.M{
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.IsDeleted: false,
|
||||
}
|
||||
|
||||
update := bson.M{
|
||||
@ -279,8 +279,8 @@ func (receiver *AccountRepository) ChangeWallet(ctx context.Context, userID stri
|
||||
options := options.FindOneAndUpdate().SetReturnDocument(options.After)
|
||||
|
||||
filter := bson.M{
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.IsDeleted: false,
|
||||
}
|
||||
|
||||
update := bson.M{"$set": bson.M{
|
||||
@ -315,8 +315,8 @@ func (receiver *AccountRepository) ClearCart(ctx context.Context, userID string)
|
||||
options := options.FindOneAndUpdate().SetReturnDocument(options.After)
|
||||
|
||||
filter := bson.M{
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.IsDeleted: false,
|
||||
}
|
||||
|
||||
update := bson.M{"$set": bson.M{
|
||||
@ -350,8 +350,8 @@ func (receiver *AccountRepository) SetStatus(ctx context.Context, userID string,
|
||||
options := options.FindOneAndUpdate().SetReturnDocument(options.After)
|
||||
|
||||
filter := bson.M{
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.IsDeleted: false,
|
||||
}
|
||||
|
||||
update := bson.M{"$set": bson.M{
|
||||
@ -386,8 +386,8 @@ func (receiver *AccountRepository) UpdateName(ctx context.Context, userID string
|
||||
options := options.FindOneAndUpdate().SetReturnDocument(options.After)
|
||||
|
||||
filter := bson.M{
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Account.UserID: userID,
|
||||
fields.Account.IsDeleted: false,
|
||||
}
|
||||
|
||||
update := bson.M{"$set": bson.M{
|
||||
|
@ -43,8 +43,8 @@ func NewCurrencyRepository(deps CurrencyRepositoryDeps) *CurrencyRepository {
|
||||
|
||||
func (receiver *CurrencyRepository) FindCurrenciesList(ctx context.Context, name string) (*models.CurrencyList, errors.Error) {
|
||||
filter := bson.M{
|
||||
fields.Currency.Name: name,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Currency.Name: name,
|
||||
fields.Currency.IsDeleted: false,
|
||||
}
|
||||
|
||||
currencyList, err := mongoWrapper.FindOne[models.CurrencyList](ctx, &mongoWrapper.RequestSettings{
|
||||
@ -76,8 +76,8 @@ func (receiver *CurrencyRepository) ReplaceCurrencies(ctx context.Context, list
|
||||
currencyList := models.CurrencyList{}
|
||||
|
||||
filter := bson.M{
|
||||
fields.Currency.Name: list.Name,
|
||||
fields.Account.Deleted: false,
|
||||
fields.Currency.Name: list.Name,
|
||||
fields.Currency.IsDeleted: false,
|
||||
}
|
||||
|
||||
update := bson.M{
|
||||
|
@ -62,7 +62,7 @@ func (receiver *HistoryRepository) Insert(ctx context.Context, history *models.H
|
||||
}
|
||||
|
||||
func (receiver *HistoryRepository) FindMany(ctx context.Context, page, limit int64) ([]models.History, errors.Error) {
|
||||
filter := bson.M{fields.Account.Deleted: false}
|
||||
filter := bson.M{fields.Account.IsDeleted: false}
|
||||
findOptions := options.Find()
|
||||
skip := (page - 1) * limit
|
||||
|
||||
@ -92,7 +92,7 @@ func (receiver *HistoryRepository) FindMany(ctx context.Context, page, limit int
|
||||
}
|
||||
|
||||
func (receiver *HistoryRepository) CountAll(ctx context.Context) (int64, errors.Error) {
|
||||
count, err := receiver.mongoDB.CountDocuments(ctx, bson.M{fields.History.Deleted: false})
|
||||
count, err := receiver.mongoDB.CountDocuments(ctx, bson.M{fields.History.IsDeleted: false})
|
||||
if err != nil {
|
||||
receiver.logger.Error("failed to count all documents on <CountAll> of <HistoryRepository>",
|
||||
zap.Error(err),
|
||||
|
@ -373,66 +373,66 @@ var swaggerSpec = []string{
|
||||
"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",
|
||||
"aPw7AAD//x8jBLeBRgAA",
|
||||
"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",
|
||||
"//8Ik+GHckYAAA==",
|
||||
}
|
||||
|
||||
// GetSwagger returns the content of the embedded swagger specification file
|
||||
|
@ -29,6 +29,29 @@ func NewJWT(configuration *models.JWTConfiguration) *JWT {
|
||||
}
|
||||
}
|
||||
|
||||
func (receiver *JWT) Create(id string) (string, error) {
|
||||
privateKey, err := jwt.ParseRSAPrivateKeyFromPEM(receiver.privateKey)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to parse private key on <Create> of <JWT>: %w", err)
|
||||
}
|
||||
|
||||
now := time.Now().UTC()
|
||||
|
||||
claims := jwt.MapClaims{
|
||||
"id": id, // Our userID
|
||||
"exp": now.Add(receiver.expiresIn).Unix(), // The expiration time after which the token must be disregarded.
|
||||
"aud": receiver.audience, // Audience
|
||||
"iss": receiver.issuer, // Issuer
|
||||
}
|
||||
|
||||
token, err := jwt.NewWithClaims(receiver.algorithm, claims).SignedString(privateKey)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to sing on <Create> of <JWT>: %w", err)
|
||||
}
|
||||
|
||||
return token, nil
|
||||
}
|
||||
|
||||
func (receiver *JWT) Validate(tokenString string) (string, error) {
|
||||
key, err := jwt.ParseRSAPublicKeyFromPEM(receiver.publicKey)
|
||||
if err != nil {
|
||||
|
129
internal/utils/jwt_test.go
Normal file
129
internal/utils/jwt_test.go
Normal file
@ -0,0 +1,129 @@
|
||||
package utils_test
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
|
||||
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/utils"
|
||||
)
|
||||
|
||||
func TestJWT(t *testing.T) {
|
||||
type user struct {
|
||||
Name string `json:"name"`
|
||||
Age int `json:"age"`
|
||||
}
|
||||
|
||||
testUser := user{
|
||||
Name: "test",
|
||||
Age: 80,
|
||||
}
|
||||
|
||||
publicKey := `-----BEGIN PUBLIC KEY-----
|
||||
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyt4XuLovUY7i12K2PIMb
|
||||
QZOKn+wFFKUvxvKQDel049/+VMpHMx1FLolUKuyGp9zi6gOwjHsBPgc9oqr/eaXG
|
||||
QSh7Ult7i9f+Ht563Y0er5UU9Zc5ZPSxf9O75KYD48ruGkqiFoncDqPENK4dtUa7
|
||||
w0OqlN4bwVBbmIsP8B3EDC5Dof+vtiNTSHSXPx+zifKeZGyknp+nyOHVrRDhPjOh
|
||||
zQzCom0MSZA/sJYmps8QZgiPA0k4Z6jTupDymPOIwYeD2C57zSxnAv0AfC3/pZYJ
|
||||
bZYH/0TszRzmy052DME3zMnhMK0ikdN4nzYqU0dkkA5kb5GtKDymspHIJ9eWbUuw
|
||||
gtg8Rq/LrVBj1I3UFgs0ibio40k6gqinLKslc5Y1I5mro7J3OSEP5eO/XeDLOLlO
|
||||
JjEqkrx4fviI1cL3m5L6QV905xmcoNZG1+RmOg7D7cZQUf27TXqM381jkbNdktm1
|
||||
JLTcMScxuo3vaRftnIVw70V8P8sIkaKY8S8HU1sQgE2LB9t04oog5u59htx2FHv4
|
||||
B13NEm8tt8Tv1PexpB4UVh7PIualF6SxdFBrKbraYej72wgjXVPQ0eGXtGGD57j8
|
||||
DUEzk7DK2OvIWhehlVqtiRnFdAvdBj2ynHT2/5FJ/Zpd4n5dKGJcQvy1U1qWMs+8
|
||||
M7AHfWyt2+nZ04s48+bK3yMCAwEAAQ==
|
||||
-----END PUBLIC KEY-----`
|
||||
|
||||
privateKey := `-----BEGIN RSA PRIVATE KEY-----
|
||||
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
|
||||
-----END RSA PRIVATE KEY-----`
|
||||
|
||||
publicKey = strings.Replace(publicKey, "\t", "", -1)
|
||||
privateKey = strings.Replace(privateKey, "\t", "", -1)
|
||||
|
||||
jwt := utils.NewJWT(&models.JWTConfiguration{
|
||||
PrivateKey: privateKey,
|
||||
PublicKey: publicKey,
|
||||
Algorithm: *jwt.SigningMethodRS256,
|
||||
ExpiresIn: 15 * time.Minute,
|
||||
Issuer: "issuer1",
|
||||
Audience: "audience1",
|
||||
})
|
||||
|
||||
t.Run("Успешная генерация токена", func(t *testing.T) {
|
||||
assert.NotPanics(t, func() {
|
||||
token, err := jwt.Create(testUser.Name)
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.NotZero(t, token)
|
||||
assert.NotEmpty(t, token)
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("Успешная валидация токена", func(t *testing.T) {
|
||||
assert.NotPanics(t, func() {
|
||||
token, err := jwt.Create(testUser.Name)
|
||||
|
||||
isNoError := assert.NoError(t, err)
|
||||
|
||||
if isNoError {
|
||||
parsedUser, err := jwt.Validate(token)
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, parsedUser)
|
||||
assert.Equal(t, testUser.Name, parsedUser)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
1
migrations/test/001_accounts_insert.down.json
Normal file
1
migrations/test/001_accounts_insert.down.json
Normal file
@ -0,0 +1 @@
|
||||
[{ "delete": "accounts", "deletes": [{ "q": {} }] }]
|
28
migrations/test/001_accounts_insert.up.json
Normal file
28
migrations/test/001_accounts_insert.up.json
Normal file
@ -0,0 +1,28 @@
|
||||
[
|
||||
{
|
||||
"insert": "accounts",
|
||||
"ordered": true,
|
||||
"documents": [
|
||||
{
|
||||
"_id": {
|
||||
"$oid": "641b2d73e0e07a7e90b59616"
|
||||
},
|
||||
"userId": "807f1f77bcf81cd799439077",
|
||||
"name": {},
|
||||
"cart": ["807f1f77bcf81cd791439022", "807f1f77bcf81cd799439012"],
|
||||
"wallet": {
|
||||
"currency": "RUB",
|
||||
"cash": 0,
|
||||
"purchasesAmount": 0,
|
||||
"spent": 0,
|
||||
"money": 0
|
||||
},
|
||||
"status": "no",
|
||||
"isDeleted": false,
|
||||
"createdAt": "2023-06-16T08:15:30.336Z",
|
||||
"updatedAt": "2023-06-16T08:15:30.336Z",
|
||||
"deletedAt": "2023-06-16T08:15:30.336Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
@ -1 +0,0 @@
|
||||
[{ "delete": "amocrm", "deletes": [{ "q": {} }] }]
|
@ -1,85 +0,0 @@
|
||||
[
|
||||
{
|
||||
"insert": "amocrm",
|
||||
"ordered": true,
|
||||
"documents": [
|
||||
{
|
||||
"amocrmId": "1",
|
||||
"userId": "1",
|
||||
"information": {
|
||||
"id": 30228997,
|
||||
"name": "ООО ПЕНА",
|
||||
"subdomain": "penadigital",
|
||||
"created_at": 1683680509,
|
||||
"created_by": 0,
|
||||
"updated_at": 1683680509,
|
||||
"updated_by": 0,
|
||||
"current_user_id": 8110726,
|
||||
"country": "RU",
|
||||
"customers_mode": "disabled",
|
||||
"is_unsorted_on": true,
|
||||
"is_loss_reason_enabled": true,
|
||||
"is_helpbot_enabled": false,
|
||||
"is_technical_account": true,
|
||||
"contact_name_display_order": 1,
|
||||
"amojo_id": "",
|
||||
"uuid": "",
|
||||
"version": 0,
|
||||
"_links": { "self": { "href": "https://penadigital.amocrm.ru/api/v4/account" } },
|
||||
"_embedded": {
|
||||
"amojo_rights": { "can_direct": false, "can_create_groups": false },
|
||||
"users_groups": null,
|
||||
"task_types": null,
|
||||
"entity_names": {
|
||||
"leads": {
|
||||
"ru": {
|
||||
"gender": "",
|
||||
"plural_form": {
|
||||
"dative": "",
|
||||
"default": "",
|
||||
"genitive": "",
|
||||
"accusative": "",
|
||||
"instrumental": "",
|
||||
"prepositional": ""
|
||||
},
|
||||
"singular_form": {
|
||||
"dative": "",
|
||||
"default": "",
|
||||
"genitive": "",
|
||||
"accusative": "",
|
||||
"instrumental": "",
|
||||
"prepositional": ""
|
||||
}
|
||||
},
|
||||
"en": {
|
||||
"singular_form": { "default": "" },
|
||||
"plural_form": { "default": "" },
|
||||
"gender": ""
|
||||
},
|
||||
"es": {
|
||||
"singular_form": { "default": "" },
|
||||
"plural_form": { "default": "" },
|
||||
"gender": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"datetime_settings": {
|
||||
"date_pattern": "",
|
||||
"short_date_pattern": "",
|
||||
"short_time_pattern": "",
|
||||
"date_formant": "",
|
||||
"time_format": "",
|
||||
"timezone": "",
|
||||
"timezone_offset": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"audit": {
|
||||
"createdAt": "2022-12-31T00:00:00.000Z",
|
||||
"updatedAt": "2022-12-31T00:00:00.000Z",
|
||||
"deleted": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
@ -594,7 +594,6 @@ components:
|
||||
status:
|
||||
type: string
|
||||
enum: ["no", "org", "nko"]
|
||||
default: "no"
|
||||
isDeleted:
|
||||
type: boolean
|
||||
example: false
|
||||
|
88
tests/helpers/jwt.go
Normal file
88
tests/helpers/jwt.go
Normal file
@ -0,0 +1,88 @@
|
||||
package helpers
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
|
||||
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/utils"
|
||||
)
|
||||
|
||||
func InitializeJWT() *utils.JWT {
|
||||
publicKey := strings.Replace(`-----BEGIN PUBLIC KEY-----
|
||||
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyt4XuLovUY7i12K2PIMb
|
||||
QZOKn+wFFKUvxvKQDel049/+VMpHMx1FLolUKuyGp9zi6gOwjHsBPgc9oqr/eaXG
|
||||
QSh7Ult7i9f+Ht563Y0er5UU9Zc5ZPSxf9O75KYD48ruGkqiFoncDqPENK4dtUa7
|
||||
w0OqlN4bwVBbmIsP8B3EDC5Dof+vtiNTSHSXPx+zifKeZGyknp+nyOHVrRDhPjOh
|
||||
zQzCom0MSZA/sJYmps8QZgiPA0k4Z6jTupDymPOIwYeD2C57zSxnAv0AfC3/pZYJ
|
||||
bZYH/0TszRzmy052DME3zMnhMK0ikdN4nzYqU0dkkA5kb5GtKDymspHIJ9eWbUuw
|
||||
gtg8Rq/LrVBj1I3UFgs0ibio40k6gqinLKslc5Y1I5mro7J3OSEP5eO/XeDLOLlO
|
||||
JjEqkrx4fviI1cL3m5L6QV905xmcoNZG1+RmOg7D7cZQUf27TXqM381jkbNdktm1
|
||||
JLTcMScxuo3vaRftnIVw70V8P8sIkaKY8S8HU1sQgE2LB9t04oog5u59htx2FHv4
|
||||
B13NEm8tt8Tv1PexpB4UVh7PIualF6SxdFBrKbraYej72wgjXVPQ0eGXtGGD57j8
|
||||
DUEzk7DK2OvIWhehlVqtiRnFdAvdBj2ynHT2/5FJ/Zpd4n5dKGJcQvy1U1qWMs+8
|
||||
M7AHfWyt2+nZ04s48+bK3yMCAwEAAQ==
|
||||
-----END PUBLIC KEY-----`, "\t", "", -1)
|
||||
|
||||
privateKey := strings.Replace(`-----BEGIN RSA PRIVATE KEY-----
|
||||
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
|
||||
-----END RSA PRIVATE KEY-----`, "\t", "", -1)
|
||||
|
||||
return utils.NewJWT(&models.JWTConfiguration{
|
||||
PrivateKey: privateKey,
|
||||
PublicKey: publicKey,
|
||||
Audience: "audience",
|
||||
Issuer: "issuer",
|
||||
Algorithm: *jwt.SigningMethodRS256,
|
||||
ExpiresIn: 15 * time.Minute,
|
||||
})
|
||||
}
|
133
tests/integration/set_account_verification_status_test.go
Normal file
133
tests/integration/set_account_verification_status_test.go
Normal file
@ -0,0 +1,133 @@
|
||||
package integration_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
|
||||
"penahub.gitlab.yandexcloud.net/pena-services/customer/pkg/client"
|
||||
"penahub.gitlab.yandexcloud.net/pena-services/customer/tests/helpers"
|
||||
)
|
||||
|
||||
func TestSetAccountVerificationStatusNO(t *testing.T) {
|
||||
jwtUtil := helpers.InitializeJWT()
|
||||
|
||||
t.Run("Успешная установка статуса верификации <no> аккаунту", func(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
assert.NotPanics(t, func() {
|
||||
token, tokenErr := jwtUtil.Create("807f1f77bcf81cd799439077")
|
||||
if isNoError := assert.NoError(t, tokenErr); !isNoError {
|
||||
return
|
||||
}
|
||||
|
||||
response, getAccountErr := client.Get[models.Account, models.ResponseErrorHTTP](ctx, &client.RequestSettings{
|
||||
URL: "http://localhost:8082/account/807f1f77bcf81cd799439077",
|
||||
Body: models.SetAccountStatus{Status: "no"},
|
||||
Headers: map[string]string{"Authorization": fmt.Sprintf("Bearer %s", token)},
|
||||
})
|
||||
if isNoError := assert.NoError(t, getAccountErr); !isNoError {
|
||||
return
|
||||
}
|
||||
if isNoRequestError := assert.Nil(t, response.Error); !isNoRequestError {
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, "807f1f77bcf81cd799439077", response.Body.UserID)
|
||||
assert.Equal(t, models.AccountStatusNo, response.Body.Status)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func TestSetAccountVerificationStatusORG(t *testing.T) {
|
||||
jwtUtil := helpers.InitializeJWT()
|
||||
|
||||
t.Run("Успешная установка статуса верификации <org> аккаунту", func(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
assert.NotPanics(t, func() {
|
||||
token, tokenErr := jwtUtil.Create("807f1f77bcf81cd799439077")
|
||||
if isNoError := assert.NoError(t, tokenErr); !isNoError {
|
||||
return
|
||||
}
|
||||
|
||||
response, getAccountErr := client.Get[models.Account, models.ResponseErrorHTTP](ctx, &client.RequestSettings{
|
||||
URL: "http://localhost:8082/account/807f1f77bcf81cd799439077",
|
||||
Body: models.SetAccountStatus{Status: "org"},
|
||||
Headers: map[string]string{"Authorization": fmt.Sprintf("Bearer %s", token)},
|
||||
})
|
||||
if isNoError := assert.NoError(t, getAccountErr); !isNoError {
|
||||
return
|
||||
}
|
||||
if isNoRequestError := assert.Nil(t, response.Error); !isNoRequestError {
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, "807f1f77bcf81cd799439077", response.Body.UserID)
|
||||
assert.Equal(t, models.AccountStatusOrg, response.Body.Status)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func TestSetAccountVerificationStatusNKO(t *testing.T) {
|
||||
jwtUtil := helpers.InitializeJWT()
|
||||
|
||||
t.Run("Успешная установка статуса верификации <nko> аккаунту", func(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
assert.NotPanics(t, func() {
|
||||
token, tokenErr := jwtUtil.Create("807f1f77bcf81cd799439077")
|
||||
if isNoError := assert.NoError(t, tokenErr); !isNoError {
|
||||
return
|
||||
}
|
||||
|
||||
response, getAccountErr := client.Get[models.Account, models.ResponseErrorHTTP](ctx, &client.RequestSettings{
|
||||
URL: "http://localhost:8082/account/807f1f77bcf81cd799439077",
|
||||
Body: models.SetAccountStatus{Status: "nko"},
|
||||
Headers: map[string]string{"Authorization": fmt.Sprintf("Bearer %s", token)},
|
||||
})
|
||||
if isNoError := assert.NoError(t, getAccountErr); !isNoError {
|
||||
return
|
||||
}
|
||||
if isNoRequestError := assert.Nil(t, response.Error); !isNoRequestError {
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, "807f1f77bcf81cd799439077", response.Body.UserID)
|
||||
assert.Equal(t, models.AccountStatusNko, response.Body.Status)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func TestSetAccountVerificationStatusFailure(t *testing.T) {
|
||||
jwtUtil := helpers.InitializeJWT()
|
||||
|
||||
t.Run("Проваленная установка статуса верификации из-за невалидного значения статуса", func(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
assert.NotPanics(t, func() {
|
||||
token, tokenErr := jwtUtil.Create("807f1f77bcf81cd799439077")
|
||||
if isNoError := assert.NoError(t, tokenErr); !isNoError {
|
||||
return
|
||||
}
|
||||
|
||||
response, getAccountErr := client.Get[models.Account, models.ResponseErrorHTTP](ctx, &client.RequestSettings{
|
||||
URL: "http://localhost:8082/account/807f1f77bcf81cd799439077",
|
||||
Body: models.SetAccountStatus{Status: "radnom-status"},
|
||||
Headers: map[string]string{"Authorization": fmt.Sprintf("Bearer %s", token)},
|
||||
})
|
||||
if isNoError := assert.NoError(t, getAccountErr); !isNoError {
|
||||
return
|
||||
}
|
||||
if isNotNil := assert.NotNil(t, response.Error); isNotNil {
|
||||
assert.Equal(t, 404, response.Error.StatusCode)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
Loading…
Reference in New Issue
Block a user