All checks were successful
Deploy Smart Search Backend Test / deploy (push) Successful in 1m36s
122 lines
2.7 KiB
Go
122 lines
2.7 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_GetInfoWithInvalidCode() {
|
|
req := &invitepb.GetInfoRequest{
|
|
Code: "999999999",
|
|
}
|
|
|
|
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_GetInfoWithInvalidCodeFormat() {
|
|
req := &invitepb.GetInfoRequest{
|
|
Code: "invalid-code",
|
|
}
|
|
|
|
resp, err := s.inviteClient.GetInfo(context.Background(), req)
|
|
|
|
s.Error(err)
|
|
s.Nil(resp)
|
|
}
|
|
|
|
func (s *IntegrationSuite) TestInviteHandler_GenerateAndGetInfoFlow() {
|
|
ctx := context.Background()
|
|
|
|
loginReq := &authpb.LoginRequest{
|
|
Email: "test@example.com",
|
|
Password: "testpassword",
|
|
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{
|
|
Code: generateResp.Code,
|
|
}
|
|
|
|
infoResp, err := s.inviteClient.GetInfo(ctx, getInfoReq)
|
|
s.NoError(err)
|
|
s.NotNil(infoResp)
|
|
s.Equal(generateResp.Code, infoResp.Code)
|
|
s.Equal(validateResp.UserId, infoResp.UserId)
|
|
s.Equal(generateResp.MaxUses, infoResp.CanBeUsedCount)
|
|
s.True(infoResp.IsActive)
|
|
}
|
|
|
|
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)
|
|
}
|