@@ -265,6 +265,57 @@ public function testLockMergeConfigs()
265
265
);
266
266
}
267
267
268
+ /**
269
+ * @dataProvider provideValidSemaphoreConfigurationTests
270
+ */
271
+ public function testValidSemaphoreConfiguration ($ semaphoreConfig , $ processedConfig )
272
+ {
273
+ $ processor = new Processor ();
274
+ $ configuration = new Configuration (true );
275
+ $ config = $ processor ->processConfiguration ($ configuration , [
276
+ [
277
+ 'semaphore ' => $ semaphoreConfig ,
278
+ ],
279
+ ]);
280
+
281
+ $ this ->assertArrayHasKey ('semaphore ' , $ config );
282
+
283
+ $ this ->assertEquals ($ processedConfig , $ config ['semaphore ' ]);
284
+ }
285
+
286
+ public function provideValidSemaphoreConfigurationTests ()
287
+ {
288
+ yield [null , ['enabled ' => true , 'resources ' => []]];
289
+
290
+ yield ['redis://default ' , ['enabled ' => true , 'resources ' => ['default ' => 'redis://default ' ]]];
291
+ yield [['foo ' => 'redis://foo ' , 'bar ' => 'redis://bar ' ], ['enabled ' => true , 'resources ' => ['foo ' => 'redis://foo ' , 'bar ' => 'redis://bar ' ]]];
292
+ yield [['default ' => 'redis://default ' ], ['enabled ' => true , 'resources ' => ['default ' => 'redis://default ' ]]];
293
+
294
+ yield [['enabled ' => false , 'redis://default ' ], ['enabled ' => false , 'resources ' => ['default ' => 'redis://default ' ]]];
295
+ yield [['enabled ' => false , 'foo ' => 'redis://foo ' , 'bar ' => 'redis://bar ' ], ['enabled ' => false , 'resources ' => ['foo ' => 'redis://foo ' , 'bar ' => 'redis://bar ' ]]];
296
+ yield [['enabled ' => false , 'default ' => 'redis://default ' ], ['enabled ' => false , 'resources ' => ['default ' => 'redis://default ' ]]];
297
+
298
+ yield [['resources ' => 'redis://default ' ], ['enabled ' => true , 'resources ' => ['default ' => 'redis://default ' ]]];
299
+ yield [['resources ' => ['foo ' => 'redis://foo ' , 'bar ' => 'redis://bar ' ]], ['enabled ' => true , 'resources ' => ['foo ' => 'redis://foo ' , 'bar ' => 'redis://bar ' ]]];
300
+ yield [['resources ' => ['default ' => 'redis://default ' ]], ['enabled ' => true , 'resources ' => ['default ' => 'redis://default ' ]]];
301
+
302
+ yield [['enabled ' => false , 'resources ' => 'redis://default ' ], ['enabled ' => false , 'resources ' => ['default ' => 'redis://default ' ]]];
303
+ yield [['enabled ' => false , 'resources ' => ['foo ' => 'redis://foo ' , 'bar ' => 'redis://bar ' ]], ['enabled ' => false , 'resources ' => ['foo ' => 'redis://foo ' , 'bar ' => 'redis://bar ' ]]];
304
+ yield [['enabled ' => false , 'resources ' => ['default ' => 'redis://default ' ]], ['enabled ' => false , 'resources ' => ['default ' => 'redis://default ' ]]];
305
+
306
+ // xml
307
+
308
+ yield [['resource ' => ['redis://default ' ]], ['enabled ' => true , 'resources ' => ['default ' => 'redis://default ' ]]];
309
+ yield [['resource ' => ['redis://default ' , ['name ' => 'foo ' , 'value ' => 'redis://default ' ]]], ['enabled ' => true , 'resources ' => ['default ' => 'redis://default ' , 'foo ' => 'redis://default ' ]]];
310
+ yield [['resource ' => [['name ' => 'foo ' , 'value ' => 'redis://default ' ]]], ['enabled ' => true , 'resources ' => ['foo ' => 'redis://default ' ]]];
311
+ yield [['resource ' => [['name ' => 'foo ' , 'value ' => 'redis://default ' ], ['name ' => 'bar ' , 'value ' => 'redis://default ' ]]], ['enabled ' => true , 'resources ' => ['foo ' => 'redis://default ' , 'bar ' => 'redis://default ' ]]];
312
+
313
+ yield [['enabled ' => false , 'resource ' => ['redis://default ' ]], ['enabled ' => false , 'resources ' => ['default ' => 'redis://default ' ]]];
314
+ yield [['enabled ' => false , 'resource ' => ['redis://default ' , ['name ' => 'foo ' , 'value ' => 'redis://default ' ]]], ['enabled ' => false , 'resources ' => ['default ' => 'redis://default ' , 'foo ' => 'redis://default ' ]]];
315
+ yield [['enabled ' => false , 'resource ' => [['name ' => 'foo ' , 'value ' => 'redis://default ' ]]], ['enabled ' => false , 'resources ' => ['foo ' => 'redis://default ' ]]];
316
+ yield [['enabled ' => false , 'resource ' => [['name ' => 'foo ' , 'value ' => 'redis://foo ' ], ['name ' => 'bar ' , 'value ' => 'redis://bar ' ]]], ['enabled ' => false , 'resources ' => ['foo ' => 'redis://foo ' , 'bar ' => 'redis://bar ' ]]];
317
+ }
318
+
268
319
public function testItShowANiceMessageIfTwoMessengerBusesAreConfiguredButNoDefaultBus ()
269
320
{
270
321
$ expectedMessage = 'You must specify the "default_bus" if you define more than one bus. ' ;
@@ -525,6 +576,11 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
525
576
],
526
577
],
527
578
],
579
+ 'semaphore ' => [
580
+ 'enabled ' => !class_exists (FullStack::class),
581
+ 'resources ' => [
582
+ ],
583
+ ],
528
584
'messenger ' => [
529
585
'enabled ' => !class_exists (FullStack::class) && interface_exists (MessageBusInterface::class),
530
586
'routing ' => [],
0 commit comments