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: "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{ 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) }