1 package validate 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestContext_ExtractOperationType(t *testing.T) { 12 13 var testCases = []struct { 14 Ctx context.Context //nolint: containedctx 15 ExpectedOpType operationType 16 }{ 17 { 18 Ctx: WithOperationRequest(context.Background()), 19 ExpectedOpType: request, 20 }, 21 { 22 Ctx: WithOperationResponse(context.Background()), 23 ExpectedOpType: response, 24 }, 25 { 26 Ctx: context.Background(), 27 ExpectedOpType: none, 28 }, 29 { 30 Ctx: context.WithValue(context.Background(), validateCtxKey("dummy"), "dummy val"), 31 ExpectedOpType: none, 32 }, 33 { 34 Ctx: context.WithValue(context.Background(), operationTypeKey, "dummy val"), 35 ExpectedOpType: none, 36 }, 37 { 38 Ctx: context.WithValue(context.Background(), operationTypeKey, operationType("dummy val")), 39 ExpectedOpType: none, 40 }, 41 } 42 43 for idx, toPin := range testCases { 44 tc := toPin 45 t.Run(fmt.Sprintf("TestCase #%d", idx), func(t *testing.T) { 46 t.Parallel() 47 op := extractOperationType(tc.Ctx) 48 assert.Equal(t, tc.ExpectedOpType, op) 49 }) 50 } 51 52 } 53