@@ -199,6 +199,10 @@ func TestDefaultGetter_SettingMap(t *testing.T) {
199199 }
200200}` )
201201 reinit () // set default vars
202+
203+ // ensure merged values; defaults must remain
204+ require .Equal (t , "true" , Default .PerWorkflow .ChainAllowed .Values ["3379446385462418246" ])
205+ // confirm
202206 got , err = limit .GetOrDefault (ctx , DefaultGetter )
203207 require .NoError (t , err )
204208 require .False (t , got )
@@ -233,13 +237,62 @@ func TestDefaultGetter_SettingMap(t *testing.T) {
233237 require .True (t , got )
234238}
235239
236- func TestChainAllows (t * testing.T ) {
237- gl , err := limits .MakeGateLimiter (limits.Factory {Logger : logger .Test (t )}, Default .PerWorkflow .ChainAllowed )
240+ func TestDefaultEnvVars (t * testing.T ) {
241+ // confirm defaults
242+ require .Equal (t , "" , Default .PerWorkflow .ChainAllowed .Values ["1234" ])
243+ require .Equal (t , "true" , Default .PerWorkflow .ChainAllowed .Values ["3379446385462418246" ])
244+
245+ t .Cleanup (reinit ) // restore after
246+
247+ // update defaults
248+ t .Setenv (envNameSettingsDefault , `{
249+ "PerWorkflow": {
250+ "ChainAllowed": {
251+ "Values": {
252+ "1234": "true"
253+ }
254+ }
255+ }
256+ }` )
257+ reinit () // set default vars
258+
259+ // confirm through Default
260+ require .Equal (t , "true" , Default .PerWorkflow .ChainAllowed .Values ["1234" ])
261+ // without affecting others (they must merge)
262+ require .Equal (t , "true" , Default .PerWorkflow .ChainAllowed .Values ["3379446385462418246" ])
263+
264+ // confirm through DefaultGetter
265+ gl , err := limits .MakeGateLimiter (limits.Factory {Logger : logger .Test (t ), Settings : DefaultGetter }, Default .PerWorkflow .ChainAllowed )
238266 require .NoError (t , err )
239267
240- ctx := contexts .WithCRE (t .Context (), contexts.CRE {Owner : "owner-id" , Workflow : "foo" })
268+ ctx := contexts .WithCRE (t .Context (), contexts.CRE {Org : "foo" , Owner : "owner-id" , Workflow : "foo" })
269+ // defaults and global override allowed
270+ assert .NoError (t , gl .AllowErr (contexts .WithChainSelector (ctx , 3379446385462418246 )))
271+ assert .NoError (t , gl .AllowErr (contexts .WithChainSelector (ctx , 12922642891491394802 )))
272+ assert .NoError (t , gl .AllowErr (contexts .WithChainSelector (ctx , 1234 )))
273+
274+ // update overrides
275+ t .Setenv (envNameSettingsDefault , "{}" )
276+ t .Setenv (envNameSettings , `{
277+ "global": {
278+ "PerWorkflow": {
279+ "ChainAllowed": {
280+ "Values": {
281+ "1234": "true"
282+ }
283+ }
284+ }
285+ }
286+ }` )
287+
288+ reinit () // set default vars
289+
290+ // confirm through DefaultGetter
291+ gl , err = limits .MakeGateLimiter (limits.Factory {Logger : logger .Test (t ), Settings : DefaultGetter }, Default .PerWorkflow .ChainAllowed )
292+ require .NoError (t , err )
241293
294+ // defaults and global override allowed
242295 assert .NoError (t , gl .AllowErr (contexts .WithChainSelector (ctx , 3379446385462418246 )))
243296 assert .NoError (t , gl .AllowErr (contexts .WithChainSelector (ctx , 12922642891491394802 )))
244- assert .ErrorIs (t , gl .AllowErr (contexts .WithChainSelector (ctx , 1234 )), limits. ErrorNotAllowed {} )
297+ assert .NoError (t , gl .AllowErr (contexts .WithChainSelector (ctx , 1234 )))
245298}
0 commit comments