package tests import ( "context" "encoding/base64" "log" "testing" "time" "evening_detective/internal/config" "evening_detective/internal/services" pb "evening_detective/proto" "github.com/stretchr/testify/assert" "google.golang.org/grpc" "google.golang.org/grpc/metadata" ) func getClient() (pb.EveningDetectiveClient, func() error) { conn, err := grpc.Dial("localhost:8080", grpc.WithInsecure()) if err != nil { log.Fatalf("Не удалось подключиться к серверу: %v", err) } return pb.NewEveningDetectiveClient(conn), conn.Close } func getContext() (context.Context, context.CancelFunc) { return context.WithTimeout(context.Background(), time.Second) } func deleteTeams(t *testing.T) { dbFilepath := config.GetDBFilepath() repository, err := services.NewRepository(dbFilepath) if err != nil { assert.Nil(t, err, "подключение к базе") } defer repository.Close() err = repository.DeleteAllTeams(context.Background()) assert.Nil(t, err, "команды удалены") } func createTeam(client pb.EveningDetectiveClient, name string) (*pb.AddTeamsRsp, error) { ctx, cancel := getContext() defer cancel() req := &pb.AddTeamsReq{ Teams: []*pb.Team{ {Name: name}, }, } return client.AddTeams(ctx, req) } func getTeams(client pb.EveningDetectiveClient) (*pb.GetTeamsRsp, error) { ctx, cancel := getContext() defer cancel() req := &pb.GetTeamsReq{} return client.GetTeams(ctx, req) } func addAction( t *testing.T, client pb.EveningDetectiveClient, name string, password string, place string, ) { ctx, cancel := getContext() defer cancel() md := metadata.Pairs( "team-id", base64.StdEncoding.EncodeToString([]byte(name)), "password", password, ) ctx = metadata.NewOutgoingContext(ctx, md) req := &pb.AddActionReq{ Place: place, } _, err := client.AddAction(ctx, req) assert.Nil(t, err, "запрос отправлен успешно") }