Files
evening_detective/internal/tests/client.go
T
2025-06-15 00:28:48 +07:00

82 lines
1.9 KiB
Go

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, "запрос отправлен успешно")
}