generated from PenaSide/GolangTemplate
add extractors for userid and token
This commit is contained in:
parent
15087a0f99
commit
e7db450e8c
@ -4,21 +4,21 @@ JWT_AUDIENCE="pena"
|
||||
JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHgnvr7O2tiApjJfid1orFnIGm69\n80fZp+Lpbjo+NC/0whMFga2Biw5b1G2Q/B2u0tpO1Fs/E8z7Lv1nYfr5jx2S8x6B\ndA4TS2kB9Kf0wn0+7wSlyikHoKhbtzwXHZl17GsyEi6wHnsqNBSauyIWhpha8i+Y\n+3GyaOY536H47qyXAgMBAAE=\n-----END PUBLIC KEY-----"
|
||||
|
||||
HTTP_HOST=0.0.0.0
|
||||
HTTP_PORT=8003
|
||||
HTTP_PORT=8082
|
||||
|
||||
GRPC_HOST=0.0.0.0
|
||||
GRPC_PORT=9000
|
||||
GRPC_DOMEN=customer-service:9000
|
||||
|
||||
MONGO_HOST=localhost
|
||||
MONGO_PORT=27024
|
||||
MONGO_PORT=27020
|
||||
MONGO_USER=test
|
||||
MONGO_PASSWORD=test
|
||||
MONGO_DB_NAME=admin
|
||||
MONGO_AUTH=admin
|
||||
|
||||
KAFKA_BROKERS=localhost:9092
|
||||
KAFKA_TOPIC_TARIFF=tariffs
|
||||
KAFKA_TOPIC_TARIFF=test-topic
|
||||
|
||||
AUTH_MICROSERVICE_USER_URL=http://localhost:8000/user
|
||||
HUBADMIN_MICROSERVICE_TARIFF_URL=http://localhost:8001/tariff
|
||||
@ -27,9 +27,11 @@ DISCOUNT_MICROSERVICE_GRPC_HOST=localhost:9040
|
||||
PAYMENT_MICROSERVICE_GRPC_HOST=treasurer-service:9085
|
||||
VERIFICATION_MICROSERVICE_USER_URL=http://10.8.0.8:7035/verification
|
||||
TEMPLATEGEN_MICROSERVICE_URL=10.6.0.17
|
||||
CODEWORD_MICROSERVICE_GRPC_HOST = http://localhost:8000/user
|
||||
|
||||
API_URL=https://api.smtp.bz/v1/smtp/send
|
||||
MAIL_SENDER=noreply@mailing.pena.digital
|
||||
MAIL_API_KEY=P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev
|
||||
MAIL_AUTH_USERNAME=kotilion.95@gmail.com
|
||||
MAIL_AUTH_PASSWORD=vWwbCSg4bf0p
|
||||
MAIL_AUTH_PASSWORD=vWwbCSg4bf0p
|
||||
MAIL_ADDRESS = mail@mail.com
|
2
go.mod
2
go.mod
@ -19,7 +19,7 @@ require (
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240221002015-b0ce06bbee7c
|
||||
google.golang.org/grpc v1.62.0
|
||||
google.golang.org/protobuf v1.32.0
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240220080149-ae9c991d3ece
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240223054633-6cb3d5ce45b6
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240412164014-6ce70d76fedc
|
||||
)
|
||||
|
||||
|
4
go.sum
4
go.sum
@ -264,7 +264,7 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240220080149-ae9c991d3ece h1:CsjgNNqssfa05B7iDNMyK2wWR7SZ/kglLTMAVrhGLtY=
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240220080149-ae9c991d3ece/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240223054633-6cb3d5ce45b6 h1:oV+/HNX+JPoQ3/GUx08hio7d45WpY0AMGrFs7j70QlA=
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240223054633-6cb3d5ce45b6/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240412164014-6ce70d76fedc h1:B9X8pOrqWPGbWZNXSJEUk/8GWeBDGQmMKgQ0F+PSliQ=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240412164014-6ce70d76fedc/go.mod h1:/DcyAjBh41IbomuDu5QzhL9flZW6lWO3ZAEbUXKobk0=
|
||||
|
@ -110,6 +110,16 @@ func (api *API2) noauth(ctx *fiber.Ctx) error {
|
||||
return api.error(ctx, fiber.StatusUnauthorized, "failed to get jwt payload")
|
||||
}
|
||||
|
||||
func (api *API2) extractUserID(ctx *fiber.Ctx) (string, bool) {
|
||||
id, ok := ctx.Context().UserValue(models.AuthJWTDecodedUserIDKey).(string)
|
||||
return id, ok
|
||||
}
|
||||
|
||||
func (api *API2) extractToken(ctx *fiber.Ctx) (string, bool) {
|
||||
token, ok := ctx.Context().UserValue(models.AuthJWTDecodedAccessTokenKey).(string)
|
||||
return token, ok
|
||||
}
|
||||
|
||||
// Health
|
||||
|
||||
func (api *API2) GetHealth(ctx *fiber.Ctx) error {
|
||||
@ -119,8 +129,8 @@ func (api *API2) GetHealth(ctx *fiber.Ctx) error {
|
||||
// Account
|
||||
|
||||
func (api *API2) DeleteAccount(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
@ -133,8 +143,8 @@ func (api *API2) DeleteAccount(ctx *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
func (api *API2) ChangeAccount(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
@ -156,6 +166,7 @@ func (api *API2) SetAccountVerificationStatus(ctx *fiber.Ctx) error {
|
||||
if userID == "" {
|
||||
return api.error(ctx, fiber.StatusBadRequest, "invalid format for parameter userId")
|
||||
}
|
||||
|
||||
var request models.SetAccountStatus
|
||||
if err := ctx.BodyParser(&request); err != nil {
|
||||
return api.error(ctx, fiber.StatusBadRequest, "failed to bind json", err)
|
||||
@ -171,8 +182,8 @@ func (api *API2) SetAccountVerificationStatus(ctx *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
func (api *API2) GetAccount(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
@ -185,8 +196,8 @@ func (api *API2) GetAccount(ctx *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
func (api *API2) AddAccount(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
@ -295,8 +306,8 @@ func (api *API2) PaginationAccounts(ctx *fiber.Ctx) error {
|
||||
// Cart
|
||||
|
||||
func (api *API2) RemoveFromCart(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
@ -314,13 +325,13 @@ func (api *API2) RemoveFromCart(ctx *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
func (api *API2) Add2cart(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
token := ctx.Get(models.AuthJWTDecodedAccessTokenKey)
|
||||
if token == "" {
|
||||
token, ok := api.extractToken(ctx)
|
||||
if !ok || token == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
@ -347,13 +358,13 @@ func (api *API2) Add2cart(ctx *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
func (api *API2) PayCart(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
accessToken := ctx.Get(models.AuthJWTDecodedAccessTokenKey)
|
||||
if accessToken == "" {
|
||||
accessToken, ok := api.extractToken(ctx)
|
||||
if !ok || accessToken == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
@ -573,7 +584,11 @@ func (api *API2) GetHistory(ctx *fiber.Ctx) error {
|
||||
if accountID != "" {
|
||||
userID = accountID
|
||||
} else {
|
||||
userID = ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
id, ok := api.extractUserID(ctx)
|
||||
if !ok || id == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
limit, err := strconv.ParseInt(limitStr, 10, 64)
|
||||
@ -623,8 +638,8 @@ func (api *API2) GetHistory(ctx *fiber.Ctx) error {
|
||||
// Wallet
|
||||
|
||||
func (api *API2) RequestMoney(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
@ -650,8 +665,8 @@ func (api *API2) RequestMoney(ctx *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
func (api *API2) ChangeCurrency(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
@ -723,8 +738,8 @@ func (api *API2) CalculateLTV(ctx *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
func (api *API2) GetRecentTariffs(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
@ -860,8 +875,8 @@ func (api *API2) SendReport(ctx *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
func (api *API2) PostWalletRspay(ctx *fiber.Ctx) error {
|
||||
userID := ctx.Get(models.AuthJWTDecodedUserIDKey)
|
||||
if userID == "" {
|
||||
userID, ok := api.extractUserID(ctx)
|
||||
if !ok || userID == "" {
|
||||
return api.noauth(ctx)
|
||||
}
|
||||
|
||||
|
@ -10,13 +10,19 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGetAccount(t *testing.T) {
|
||||
func TestPostWalletRspay(t *testing.T) {
|
||||
jwtUtil := helpers.InitializeJWT()
|
||||
|
||||
t.Run("rspay", func(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
req := struct {
|
||||
Money float32
|
||||
}{
|
||||
Money: 100,
|
||||
}
|
||||
|
||||
assert.NotPanics(t, func() {
|
||||
token, tokenErr := jwtUtil.Create("6597babdd1ba7e2dbd32d7e3")
|
||||
if isNoError := assert.NoError(t, tokenErr); !isNoError {
|
||||
@ -26,6 +32,7 @@ func TestGetAccount(t *testing.T) {
|
||||
response, err := client.Post[interface{}, models.ResponseErrorHTTP](ctx, &client.RequestSettings{
|
||||
URL: "http://localhost:8082/wallet/rspay",
|
||||
Headers: map[string]string{"Authorization": fmt.Sprintf("Bearer %s", token)},
|
||||
Body: req,
|
||||
})
|
||||
if isNoError := assert.NoError(t, err); !isNoError {
|
||||
return
|
||||
|
@ -7,17 +7,24 @@ import (
|
||||
"net/http"
|
||||
"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"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCurrencies(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("6597babdd1ba7e2dbd32d7e3")
|
||||
if isNoError := assert.NoError(t, tokenErr); !isNoError {
|
||||
return
|
||||
}
|
||||
responseGetCurrencies, errCurrencies := client.Get[[]models.CurrencyList, models.ResponseErrorHTTP](ctx, &client.RequestSettings{
|
||||
URL: "http://localhost:8082/currencies",
|
||||
URL: "http://localhost:8082/currencies",
|
||||
Headers: map[string]string{"Authorization": fmt.Sprintf("Bearer %s", token)},
|
||||
})
|
||||
if isNoError := assert.NoError(t, errCurrencies); !isNoError {
|
||||
return
|
||||
|
@ -2,65 +2,57 @@ package integration
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/pioz/faker"
|
||||
"go.uber.org/zap"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/mongo"
|
||||
http2 "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http"
|
||||
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/repository"
|
||||
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestLogostat(t *testing.T) {
|
||||
logger, err := zap.NewProduction(zap.AddStacktrace(zap.DPanicLevel))
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init zap logger: %v", err)
|
||||
}
|
||||
ctx := context.Background()
|
||||
mongoDB, err := mongo.Connect(ctx, &mongo.ConnectDeps{
|
||||
Configuration: &mongo.Configuration{
|
||||
Host: "localhost",
|
||||
Port: "27020",
|
||||
User: "test",
|
||||
Password: "test",
|
||||
Auth: "admin",
|
||||
DatabaseName: "admin",
|
||||
},
|
||||
Timeout: 10 * time.Second,
|
||||
})
|
||||
|
||||
repoAc := repository.NewAccountRepository2(logger, mongoDB.Collection("accounts"))
|
||||
repoHi := repository.NewHistoryRepository2(logger, mongoDB.Collection("histories"))
|
||||
InsertToDB(ctx, repoAc, repoHi)
|
||||
|
||||
api := http2.NewAPI2(logger, mongoDB, nil, nil, nil, nil)
|
||||
|
||||
app := fiber.New()
|
||||
req := httptest.NewRequest(http.MethodGet, "/", nil)
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
|
||||
requestBody := struct {
|
||||
From int
|
||||
Limit int
|
||||
Page int
|
||||
To int
|
||||
}{
|
||||
From: 1713087258,
|
||||
Limit: 10,
|
||||
Page: 1,
|
||||
To: 1713260058,
|
||||
}
|
||||
|
||||
req = req.WithContext(context.WithValue(req.Context(), "requestBody", requestBody))
|
||||
resp := httptest.NewRecorder()
|
||||
|
||||
}
|
||||
//func TestLogostat(t *testing.T) {
|
||||
// logger, err := zap.NewProduction(zap.AddStacktrace(zap.DPanicLevel))
|
||||
// if err != nil {
|
||||
// log.Fatalf("failed to init zap logger: %v", err)
|
||||
// }
|
||||
// ctx := context.Background()
|
||||
// mongoDB, err := mongo.Connect(ctx, &mongo.ConnectDeps{
|
||||
// Configuration: &mongo.Configuration{
|
||||
// Host: "localhost",
|
||||
// Port: "27020",
|
||||
// User: "test",
|
||||
// Password: "test",
|
||||
// Auth: "admin",
|
||||
// DatabaseName: "admin",
|
||||
// },
|
||||
// Timeout: 10 * time.Second,
|
||||
// })
|
||||
//
|
||||
// repoAc := repository.NewAccountRepository2(logger, mongoDB.Collection("accounts"))
|
||||
// repoHi := repository.NewHistoryRepository2(logger, mongoDB.Collection("histories"))
|
||||
// InsertToDB(ctx, repoAc, repoHi)
|
||||
//
|
||||
// api := http2.NewAPI2(logger, mongoDB, nil, nil, nil, nil)
|
||||
//
|
||||
// app := fiber.New()
|
||||
// req := httptest.NewRequest(http.MethodGet, "/", nil)
|
||||
// req.Header.Set("Content-Type", "application/json")
|
||||
//
|
||||
// requestBody := struct {
|
||||
// From int
|
||||
// Limit int
|
||||
// Page int
|
||||
// To int
|
||||
// }{
|
||||
// From: 1713087258,
|
||||
// Limit: 10,
|
||||
// Page: 1,
|
||||
// To: 1713260058,
|
||||
// }
|
||||
//
|
||||
// req = req.WithContext(context.WithValue(req.Context(), "requestBody", requestBody))
|
||||
// resp := httptest.NewRecorder()
|
||||
//
|
||||
//}
|
||||
|
||||
func InsertToDB(ctx context.Context, acc repository.AccountRepository, history repository.HistoryRepository) {
|
||||
partner1 := "partner1"
|
||||
|
Loading…
Reference in New Issue
Block a user