MCPcopy Create free account
hub / github.com/goadesign/goa / TestMethodExprFinalizeInheritsBearerFormat

Function TestMethodExprFinalizeInheritsBearerFormat

expr/method_test.go:53–114  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

51}
52
53func TestMethodExprFinalizeInheritsBearerFormat(t *testing.T) {
54 cases := []struct {
55 name string
56 kind expr.SchemeKind
57 setup func(*expr.SecurityExpr) (*expr.APIExpr, *expr.ServiceExpr)
58 schemeName string
59 }{
60 {
61 name: "service security",
62 kind: expr.BearerKind,
63 setup: func(req *expr.SecurityExpr) (*expr.APIExpr, *expr.ServiceExpr) {
64 return &expr.APIExpr{}, &expr.ServiceExpr{
65 Name: "Service",
66 Requirements: []*expr.SecurityExpr{req},
67 }
68 },
69 schemeName: "bearer",
70 },
71 {
72 name: "API security",
73 kind: expr.JWTKind,
74 setup: func(req *expr.SecurityExpr) (*expr.APIExpr, *expr.ServiceExpr) {
75 return &expr.APIExpr{
76 Requirements: []*expr.SecurityExpr{req},
77 }, &expr.ServiceExpr{Name: "Service"}
78 },
79 schemeName: "jwt",
80 },
81 }
82
83 root := expr.Root
84 t.Cleanup(func() {
85 expr.Root = root
86 })
87
88 for _, tc := range cases {
89 t.Run(tc.name, func(t *testing.T) {
90 scheme := &expr.SchemeExpr{
91 Kind: tc.kind,
92 SchemeName: tc.schemeName,
93 BearerFormat: "JWT",
94 In: "header",
95 Name: "Authorization",
96 }
97 req := &expr.SecurityExpr{Schemes: []*expr.SchemeExpr{scheme}}
98 api, service := tc.setup(req)
99 expr.Root = &expr.RootExpr{API: api}
100
101 method := &expr.MethodExpr{
102 Name: "Method",
103 Service: service,
104 }
105 method.Finalize()
106
107 require.Len(t, method.Requirements, 1)
108 require.Len(t, method.Requirements[0].Schemes, 1)
109 inherited := method.Requirements[0].Schemes[0]
110 require.NotSame(t, scheme, inherited)

Callers

nothing calls this directly

Calls 3

FinalizeMethod · 0.95
CleanupMethod · 0.80
RunMethod · 0.45

Tested by

no test coverage detected