269 lines
6.8 KiB
Go
269 lines
6.8 KiB
Go
package tests
|
||
|
||
import (
|
||
"context"
|
||
|
||
authpb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/auth"
|
||
requestpb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/request"
|
||
"google.golang.org/grpc/codes"
|
||
"google.golang.org/grpc/status"
|
||
)
|
||
|
||
func (s *IntegrationSuite) TestRequestHandler_CreateTZWithNonExistentUser() {
|
||
req := &requestpb.CreateTZRequest{
|
||
UserId: 999999,
|
||
RequestTxt: "Нужны поставщики металлоконструкций",
|
||
}
|
||
|
||
resp, err := s.requestClient.CreateTZ(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) TestRequestHandler_GetMailingListByIDWithNonExistent() {
|
||
req := &requestpb.GetMailingListByIDRequest{
|
||
RequestId: "999999",
|
||
UserId: 1,
|
||
}
|
||
|
||
resp, err := s.requestClient.GetMailingListByID(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) TestRequestHandler_GetMailingListWithNonExistentUser() {
|
||
req := &requestpb.GetMailingListRequest{
|
||
UserId: 999999,
|
||
}
|
||
|
||
resp, err := s.requestClient.GetMailingList(context.Background(), req)
|
||
|
||
if err != nil {
|
||
st, ok := status.FromError(err)
|
||
s.True(ok)
|
||
s.Contains([]codes.Code{codes.NotFound, codes.Internal}, st.Code())
|
||
return
|
||
}
|
||
|
||
s.NotNil(resp)
|
||
s.Equal(0, len(resp.Items))
|
||
}
|
||
|
||
func (s *IntegrationSuite) TestRequestHandler_ApproveTZWithInvalidRequest() {
|
||
req := &requestpb.ApproveTZRequest{
|
||
RequestId: "999999",
|
||
FinalTz: "Approved TZ",
|
||
UserId: 1,
|
||
}
|
||
|
||
resp, err := s.requestClient.ApproveTZ(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, codes.InvalidArgument}, st.Code())
|
||
}
|
||
|
||
func (s *IntegrationSuite) TestRequestHandler_CreateTZWithValidUser() {
|
||
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)
|
||
|
||
req := &requestpb.CreateTZRequest{
|
||
UserId: validateResp.UserId,
|
||
RequestTxt: "Нужны поставщики металлоконструкций",
|
||
}
|
||
|
||
resp, err := s.requestClient.CreateTZ(ctx, req)
|
||
s.NoError(err)
|
||
s.NotNil(resp)
|
||
s.NotEmpty(resp.RequestId)
|
||
s.NotEmpty(resp.TzText)
|
||
}
|
||
|
||
func (s *IntegrationSuite) TestRequestHandler_GetMailingListWithValidUser() {
|
||
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)
|
||
|
||
req := &requestpb.GetMailingListRequest{
|
||
UserId: validateResp.UserId,
|
||
}
|
||
|
||
resp, err := s.requestClient.GetMailingList(ctx, req)
|
||
s.NoError(err)
|
||
s.NotNil(resp)
|
||
}
|
||
|
||
func (s *IntegrationSuite) TestRequestHandler_CreateTZWithFile() {
|
||
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)
|
||
|
||
req := &requestpb.CreateTZRequest{
|
||
UserId: validateResp.UserId,
|
||
RequestTxt: "Нужны поставщики металлоконструкций",
|
||
FileData: []byte("Содержимое файла с дополнительными требованиями"),
|
||
FileName: "requirements.txt",
|
||
}
|
||
|
||
resp, err := s.requestClient.CreateTZ(ctx, req)
|
||
s.NoError(err)
|
||
s.NotNil(resp)
|
||
s.NotEmpty(resp.RequestId)
|
||
s.NotEmpty(resp.TzText)
|
||
}
|
||
|
||
func (s *IntegrationSuite) TestRequestHandler_ApproveTZSuccess() {
|
||
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)
|
||
userID := validateResp.UserId
|
||
|
||
createReq := &requestpb.CreateTZRequest{
|
||
UserId: userID,
|
||
RequestTxt: "Нужны поставщики кирпича для строительства",
|
||
}
|
||
|
||
createResp, err := s.requestClient.CreateTZ(ctx, createReq)
|
||
s.NoError(err)
|
||
s.NotEmpty(createResp.RequestId)
|
||
|
||
approveReq := &requestpb.ApproveTZRequest{
|
||
RequestId: createResp.RequestId,
|
||
FinalTz: "Утвержденное техническое задание на поставку кирпича",
|
||
UserId: userID,
|
||
}
|
||
|
||
approveResp, err := s.requestClient.ApproveTZ(ctx, approveReq)
|
||
s.NoError(err)
|
||
s.NotNil(approveResp)
|
||
s.True(approveResp.Success)
|
||
s.Equal("sent", approveResp.MailingStatus)
|
||
}
|
||
|
||
func (s *IntegrationSuite) TestRequestHandler_GetMailingListByIDSuccess() {
|
||
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)
|
||
userID := validateResp.UserId
|
||
|
||
createReq := &requestpb.CreateTZRequest{
|
||
UserId: userID,
|
||
RequestTxt: "Нужны поставщики бетона",
|
||
}
|
||
|
||
createResp, err := s.requestClient.CreateTZ(ctx, createReq)
|
||
s.NoError(err)
|
||
s.NotEmpty(createResp.RequestId)
|
||
requestID := createResp.RequestId
|
||
|
||
approveReq := &requestpb.ApproveTZRequest{
|
||
RequestId: requestID,
|
||
FinalTz: "Утвержденное ТЗ на поставку бетона",
|
||
UserId: userID,
|
||
}
|
||
|
||
_, err = s.requestClient.ApproveTZ(ctx, approveReq)
|
||
s.NoError(err)
|
||
|
||
getByIDReq := &requestpb.GetMailingListByIDRequest{
|
||
RequestId: requestID,
|
||
UserId: userID,
|
||
}
|
||
|
||
getByIDResp, err := s.requestClient.GetMailingListByID(ctx, getByIDReq)
|
||
s.NoError(err)
|
||
s.NotNil(getByIDResp)
|
||
s.NotNil(getByIDResp.Item)
|
||
s.Equal(requestID, getByIDResp.Item.RequestId)
|
||
s.Greater(getByIDResp.Item.SuppliersFound, int32(0))
|
||
}
|