package tool

import (
	"context"
	"time"

	"google.golang.org/grpc/metadata"
)

// 测试的时候生成ctx 并10秒的超时设置
func Ctx() context.Context {
	ctx := context.Background()
	context.WithTimeout(ctx, 10*time.Second)
	return ctx
}

// 不带metadata
func CtxTime(ctx context.Context) context.Context {
	context.WithTimeout(ctx, 10*time.Second)
	return ctx
}

// http请求的
func CtxHttp30(token string) context.Context {
	cxt, _ := context.WithTimeout(context.Background(), 30*time.Second)
	md := metadata.New(map[string]string{"Grpc-Metadata-token": token})
	cxt = metadata.NewIncomingContext(cxt, md)
	return cxt
}

// grpc请求 带metadata token 单元测试用 grpc的时候要用FromIncomingContext
func Ctx30(token string) context.Context {
	cxt, _ := context.WithTimeout(context.Background(), 30*time.Second)
	md := metadata.New(map[string]string{"grpcgateway-token": token})
	cxt = metadata.NewIncomingContext(cxt, md)
	return cxt
}

// 带metadata 写单元测试的时候用
func CtxIncome10(token string) context.Context {
	cxt, _ := context.WithTimeout(context.Background(), 10*time.Second)
	md := metadata.New(map[string]string{"token": token})
	cxt = metadata.NewIncomingContext(cxt, md)
	return cxt
}

// 带metadata 写单元测试的时候用
func CtxOutcome10(token string) context.Context {
	cxt, _ := context.WithTimeout(context.Background(), 10*time.Second)
	md := metadata.New(map[string]string{"token": token})
	cxt = metadata.NewIncomingContext(cxt, md)
	return cxt
}
