@@ -57,13 +57,34 @@ func Test_validateGetEntitlementsRequest_DefaultRequestLimit(t *testing.T) {
5757 assert .Contains (t , err .Error (), "entity_identifier.entity_chain.entities exceeds maximum count: got 11, max 10" )
5858}
5959
60- func Test_validateGetDecisionMultiResourceRequest_DefaultRequestLimit (t * testing.T ) {
60+ func Test_validateGetDecisionMultiResourceRequest_DefaultRequestLimits (t * testing.T ) {
6161 service := newValidationTestService (t , nil )
6262
63- err := service .validateGetDecisionMultiResourceRequest (newDecisionMultiResourceRequestWithResourceCount (1001 ), "" )
64- require .Error (t , err )
65- assert .Equal (t , connect .CodeInvalidArgument , connect .CodeOf (err ))
66- assert .Contains (t , err .Error (), "resources exceeds maximum count: got 1001, max 1000" )
63+ cases := []struct {
64+ name string
65+ request * authzV2.GetDecisionMultiResourceRequest
66+ expectedErr string
67+ }{
68+ {
69+ name : "resources" ,
70+ request : newDecisionMultiResourceRequestWithResourceCount (1001 ),
71+ expectedErr : "resources exceeds maximum count: got 1001, max 1000" ,
72+ },
73+ {
74+ name : "fulfillable obligation fqns" ,
75+ request : newDecisionMultiResourceRequestWithObligationCount (51 ),
76+ expectedErr : "fulfillable_obligation_fqns exceeds maximum count: got 51, max 50" ,
77+ },
78+ }
79+
80+ for _ , tc := range cases {
81+ t .Run (tc .name , func (t * testing.T ) {
82+ err := service .validateGetDecisionMultiResourceRequest (tc .request , "" )
83+ require .Error (t , err )
84+ assert .Equal (t , connect .CodeInvalidArgument , connect .CodeOf (err ))
85+ assert .Contains (t , err .Error (), tc .expectedErr )
86+ })
87+ }
6788}
6889
6990func Test_validateGetDecisionBulkRequest_DefaultRequestLimit (t * testing.T ) {
@@ -106,6 +127,7 @@ func Test_validateGetDecisionMultiResourceRequest_ExactlyAtDefaultLimitPasses(t
106127 service := newValidationTestService (t , nil )
107128
108129 require .NoError (t , service .validateGetDecisionMultiResourceRequest (newDecisionMultiResourceRequestWithResourceCount (1000 ), "" ))
130+ require .NoError (t , service .validateGetDecisionMultiResourceRequest (newDecisionMultiResourceRequestWithObligationCount (50 ), "" ))
109131}
110132
111133func Test_validateGetDecisionBulkRequest_ExactlyAtDefaultLimitPasses (t * testing.T ) {
@@ -127,6 +149,7 @@ func Test_validateDecisionRequests_UseCustomRequestLimits(t *testing.T) {
127149 require .NoError (t , service .validateGetDecisionRequest (newDecisionRequestWithAttributeValueCount (21 )))
128150 require .NoError (t , service .validateGetDecisionRequest (newDecisionRequestWithObligationCount (51 )))
129151 require .NoError (t , service .validateGetDecisionMultiResourceRequest (newDecisionMultiResourceRequestWithResourceCount (1001 ), "" ))
152+ require .NoError (t , service .validateGetDecisionMultiResourceRequest (newDecisionMultiResourceRequestWithObligationCount (51 ), "" ))
130153 require .NoError (t , service .validateGetDecisionBulkRequest (newDecisionBulkRequestWithDecisionCount (201 )))
131154}
132155
@@ -275,6 +298,21 @@ func newDecisionMultiResourceRequestWithAttributeValueCount(count int) *authzV2.
275298 }
276299}
277300
301+ func newDecisionMultiResourceRequestWithObligationCount (count int ) * authzV2.GetDecisionMultiResourceRequest {
302+ return & authzV2.GetDecisionMultiResourceRequest {
303+ EntityIdentifier : newTokenEntityIdentifier (),
304+ Action : sampleActionCreate ,
305+ Resources : []* authzV2.Resource {
306+ {
307+ Resource : & authzV2.Resource_RegisteredResourceValueFqn {
308+ RegisteredResourceValueFqn : sampleRegisteredResourceFQN ,
309+ },
310+ },
311+ },
312+ FulfillableObligationFqns : newObligationFQNs (count ),
313+ }
314+ }
315+
278316func newDecisionMultiResourceRequestWithResourceCount (count int ) * authzV2.GetDecisionMultiResourceRequest {
279317 resources := make ([]* authzV2.Resource , count )
280318 for i := range count {
0 commit comments