Chris@0: fileSystem = $this->container->get('file_system'); Chris@0: $this->config('system.file')->set('default_scheme', 'public')->save(); Chris@0: $this->imageStyle = ImageStyle::create(['name' => 'test']); Chris@0: $this->imageStyle->save(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function register(ContainerBuilder $container) { Chris@0: parent::register($container); Chris@0: foreach ($this->providerTestCustomStreamWrappers() as $stream_wrapper) { Chris@0: $scheme = $stream_wrapper[0]; Chris@0: $class = $stream_wrapper[2]; Chris@0: $container->register("stream_wrapper.$scheme", $class) Chris@0: ->addTag('stream_wrapper', ['scheme' => $scheme]); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests derivative creation with several source on a local writable stream. Chris@0: * Chris@0: * @dataProvider providerTestCustomStreamWrappers Chris@0: * Chris@0: * @param string $source_scheme Chris@0: * The source stream wrapper scheme. Chris@0: * @param string $expected_scheme Chris@0: * The derivative expected stream wrapper scheme. Chris@0: */ Chris@0: public function testCustomStreamWrappers($source_scheme, $expected_scheme) { Chris@0: $derivative_uri = $this->imageStyle->buildUri("$source_scheme://some/path/image.png"); Chris@0: $derivative_scheme = $this->fileSystem->uriScheme($derivative_uri); Chris@0: Chris@0: // Check that the derivative scheme is the expected scheme. Chris@0: $this->assertSame($expected_scheme, $derivative_scheme); Chris@0: Chris@0: // Check that the derivative URI is the expected one. Chris@0: $expected_uri = "$expected_scheme://styles/{$this->imageStyle->id()}/$source_scheme/some/path/image.png"; Chris@0: $this->assertSame($expected_uri, $derivative_uri); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Provide test cases for testCustomStreamWrappers(). Chris@0: * Chris@0: * Derivatives created from writable source stream wrappers will inherit the Chris@0: * scheme from source. Derivatives created from read-only stream wrappers will Chris@0: * fall-back to the default scheme. Chris@0: * Chris@0: * @return array[] Chris@0: * An array having each element an array with three items: Chris@0: * - The source stream wrapper scheme. Chris@0: * - The derivative expected stream wrapper scheme. Chris@0: * - The stream wrapper service class. Chris@0: */ Chris@0: public function providerTestCustomStreamWrappers() { Chris@0: return [ Chris@0: ['public', 'public', PublicStream::class], Chris@0: ['private', 'private', PrivateStream::class], Chris@0: ['dummy', 'dummy', DummyStreamWrapper::class], Chris@0: ['dummy-readonly', 'public', DummyReadOnlyStreamWrapper::class], Chris@0: ['dummy-remote-readonly', 'public', DummyRemoteReadOnlyStreamWrapper::class], Chris@0: ]; Chris@0: } Chris@0: Chris@0: }