@@ -37,6 +37,12 @@ import (
37
37
)
38
38
39
39
var (
40
+ claimsNone = Claims {}
41
+ claimsNamespaceOnly = Claims {
42
+ Namespaces : map [string ]Role {
43
+ testNamespace : RoleWriter ,
44
+ },
45
+ }
40
46
claimsSystemAdmin = Claims {
41
47
System : RoleAdmin ,
42
48
}
75
81
APIName : "/temporal.api.workflowservice.v1.WorkflowService/DescribeNamespace" ,
76
82
Namespace : "BAR" ,
77
83
}
84
+ targetGrpcHealthCheck = CallTarget {
85
+ APIName : "/grpc.health.v1.Health/Check" ,
86
+ Namespace : "" ,
87
+ }
88
+ targetGetSystemInfo = CallTarget {
89
+ APIName : "/temporal.api.workflowservice.v1.WorkflowService/GetSystemInfo" ,
90
+ Namespace : "" ,
91
+ }
78
92
)
79
93
80
94
type (
@@ -162,6 +176,29 @@ func (s *defaultAuthorizerSuite) TestSystemAdminListNamespaces() {
162
176
s .NoError (err )
163
177
s .Equal (DecisionAllow , result .Decision )
164
178
}
179
+ func (s * defaultAuthorizerSuite ) TestNamespaceOnly () {
180
+ // don't need any system-level claims to do namespace-level apis
181
+ result , err := s .authorizer .Authorize (context .TODO (), & claimsNamespaceOnly , startWorkflowExecutionTarget )
182
+ s .NoError (err )
183
+ s .Equal (DecisionAllow , result .Decision )
184
+ }
185
+ func (s * defaultAuthorizerSuite ) TestHealthChecks () {
186
+ // all health checks should work all the time
187
+ for _ , claims := range []* Claims {
188
+ nil ,
189
+ & claimsNone ,
190
+ & claimsNamespaceOnly ,
191
+ } {
192
+ for _ , target := range []* CallTarget {
193
+ & targetGrpcHealthCheck ,
194
+ & targetGetSystemInfo ,
195
+ } {
196
+ result , err := s .authorizer .Authorize (context .TODO (), claims , target )
197
+ s .NoError (err )
198
+ s .Equal (DecisionAllow , result .Decision )
199
+ }
200
+ }
201
+ }
165
202
166
203
func (s * defaultAuthorizerSuite ) TestGetAuthorizerFromConfigNoop () {
167
204
s .testGetAuthorizerFromConfig ("" , true , reflect .TypeOf (& noopAuthorizer {}))
0 commit comments