Files
smart-search-back/tests/invite_handler_test.go
vallyenfail 9b4b8bd012
Some checks failed
Deploy Smart Search Backend / deploy (push) Failing after 13m51s
add service
2026-01-20 22:30:05 +03:00

109 lines
2.4 KiB
Go

package tests
import (
"context"
authpb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/auth"
invitepb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/invite"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func (s *IntegrationSuite) TestInviteHandler_GenerateWithNonExistentUser() {
req := &invitepb.GenerateRequest{
UserId: 999999,
TtlDays: 30,
MaxUses: 10,
}
resp, err := s.inviteClient.Generate(context.Background(), req)
s.Error(err)
s.Nil(resp)
st, ok := status.FromError(err)
s.True(ok)
s.Contains([]codes.Code{codes.NotFound, codes.Internal, codes.Unknown}, st.Code())
}
func (s *IntegrationSuite) TestInviteHandler_GetInfoWithNonExistentUser() {
req := &invitepb.GetInfoRequest{
UserId: 999999,
}
resp, err := s.inviteClient.GetInfo(context.Background(), req)
s.Error(err)
s.Nil(resp)
st, ok := status.FromError(err)
s.True(ok)
s.Equal(codes.NotFound, st.Code())
}
func (s *IntegrationSuite) TestInviteHandler_GenerateAndGetInfoFlow() {
ctx := context.Background()
loginReq := &authpb.LoginRequest{
Email: "test@example.com",
Password: "TestPassword123",
Ip: "127.0.0.1",
UserAgent: "integration-test",
}
loginResp, err := s.authClient.Login(ctx, loginReq)
s.NoError(err)
validateReq := &authpb.ValidateRequest{
AccessToken: loginResp.AccessToken,
}
validateResp, err := s.authClient.Validate(ctx, validateReq)
s.NoError(err)
s.True(validateResp.Valid)
generateReq := &invitepb.GenerateRequest{
UserId: validateResp.UserId,
TtlDays: 30,
MaxUses: 10,
}
generateResp, err := s.inviteClient.Generate(ctx, generateReq)
s.NoError(err)
s.NotNil(generateResp)
s.NotEmpty(generateResp.Code)
s.Greater(generateResp.MaxUses, int32(0))
s.NotNil(generateResp.ExpiresAt)
getInfoReq := &invitepb.GetInfoRequest{
UserId: validateResp.UserId,
}
infoResp, err := s.inviteClient.GetInfo(ctx, getInfoReq)
s.NoError(err)
s.NotNil(infoResp)
s.Equal(generateResp.Code, infoResp.Code)
s.Equal(generateResp.MaxUses, infoResp.CanBeUsedCount)
}
func (s *IntegrationSuite) TestInviteHandler_GenerateWithInvalidTTL() {
ctx := context.Background()
req := &invitepb.GenerateRequest{
UserId: 1,
TtlDays: -1,
MaxUses: 10,
}
resp, err := s.inviteClient.Generate(ctx, req)
if err != nil {
st, ok := status.FromError(err)
s.True(ok)
s.Contains([]codes.Code{codes.InvalidArgument, codes.Internal, codes.Unknown}, st.Code())
return
}
s.NotNil(resp)
}