Skip to content
Snippets Groups Projects
Commit 66bb7ac1 authored by Leon Kessler's avatar Leon Kessler Committed by Leon Kessler
Browse files

Issue #3254472 by Leon Kessler, jonarcher: Update tests to work with Drupal 9

parent fae56bb0
Branches
Tags 2.0.0-rc2
No related merge requests found
...@@ -5,6 +5,7 @@ namespace Drupal\flysystem_s3\Flysystem; ...@@ -5,6 +5,7 @@ namespace Drupal\flysystem_s3\Flysystem;
use Aws\Credentials\Credentials; use Aws\Credentials\Credentials;
use Aws\S3\S3Client; use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception; use Aws\S3\Exception\S3Exception;
use Aws\S3\S3ClientInterface;
use Drupal\Component\Utility\UrlHelper; use Drupal\Component\Utility\UrlHelper;
use Drupal\Core\Logger\RfcLogLevel; use Drupal\Core\Logger\RfcLogLevel;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
...@@ -77,7 +78,7 @@ class S3 implements FlysystemPluginInterface, ContainerFactoryPluginInterface { ...@@ -77,7 +78,7 @@ class S3 implements FlysystemPluginInterface, ContainerFactoryPluginInterface {
* @param \League\Flysystem\Config $config * @param \League\Flysystem\Config $config
* The configuration. * The configuration.
*/ */
public function __construct(S3Client $client, Config $config) { public function __construct(S3ClientInterface $client, Config $config) {
$this->client = $client; $this->client = $client;
$this->bucket = $config->get('bucket', ''); $this->bucket = $config->get('bucket', '');
$this->prefix = $config->get('prefix', ''); $this->prefix = $config->get('prefix', '');
......
...@@ -13,8 +13,10 @@ class S3CorsManagedFileHelper { ...@@ -13,8 +13,10 @@ class S3CorsManagedFileHelper {
* Function alterInfo called by hook_element_info_alter(). * Function alterInfo called by hook_element_info_alter().
*/ */
public static function alterInfo(array &$types) { public static function alterInfo(array &$types) {
array_unshift($types['managed_file']['#process'], [get_called_class(), 'preProcessCors']); if (isset($types['managed_file'])) {
$types['managed_file']['#process'][] = [get_called_class(), 'postProcessCors']; array_unshift($types['managed_file']['#process'], [get_called_class(), 'preProcessCors']);
$types['managed_file']['#process'][] = [get_called_class(), 'postProcessCors'];
}
} }
/** /**
......
<?php <?php
namespace Drupal\flysystem_s3\Tests; namespace Drupal\Tests\flysystem_s3\Functional;
use Drupal\flysystem\Tests\ModuleInstallUninstallWebTest as Base; use Drupal\Tests\flysystem\Functional\ModuleInstallUninstallWebTest as Base;
/** /**
* Tests module installation and uninstallation. * Tests module installation and uninstallation.
......
<?php <?php
namespace NoDrupal\Tests\flysystem_s3\Unit; namespace Drupal\Tests\flysystem_s3\Unit;
use Drupal\flysystem_s3\AwsCacheAdapter; use Drupal\flysystem_s3\AwsCacheAdapter;
use Drupal\Core\Cache\MemoryBackend; use Drupal\Core\Cache\MemoryBackend;
use PHPUnit\Framework\Testcase;
/** /**
* @coversDefaultClass \Drupal\flysystem_s3\AwsCacheAdapter * @coversDefaultClass \Drupal\flysystem_s3\AwsCacheAdapter
* @covers \Drupal\flysystem_s3\AwsCacheAdapter * @covers \Drupal\flysystem_s3\AwsCacheAdapter
* @group flysystem_s3 * @group flysystem_s3
*/ */
class AwsCacheAdapterTest extends \PHPUnit_Framework_TestCase { class AwsCacheAdapterTest extends Testcase {
/** /**
* *
......
<?php <?php
namespace NoDrupal\Tests\flysystem_s3\Unit\Flysystem; namespace Drupal\Tests\flysystem_s3\Unit\Flysystem;
use Aws\Credentials\Credentials; use Aws\Credentials\Credentials;
use Aws\S3\S3Client; use Aws\S3\S3Client;
...@@ -23,33 +23,38 @@ use Symfony\Component\HttpFoundation\RequestStack; ...@@ -23,33 +23,38 @@ use Symfony\Component\HttpFoundation\RequestStack;
*/ */
class S3Test extends UnitTestCase { class S3Test extends UnitTestCase {
public function test() { /**
$configuration = [ * @covers ::__construct
* @covers ::getExternalUrl
*/
public function testGetExternalUrl() {
$configuration = new Config([
'bucket' => 'example-bucket', 'bucket' => 'example-bucket',
'prefix' => 'test prefix',
'cname' => 'example.com', 'cname' => 'example.com',
]; 'prefix' => 'test prefix',
'public' => TRUE,
]);
$client = new S3Client([ $client = new S3Client([
'version' => 'latest', 'version' => 'latest',
'region' => 'beep', 'region' => 'beep',
'credentials' => new Credentials('fsdf', 'sfsdf'), 'credentials' => new Credentials('foo', 'bar'),
]); ]);
$plugin = new S3($client, new Config($configuration)); $plugin = new S3($client, $configuration);
$this->assertInstanceOf(AdapterInterface::class, $plugin->getAdapter()); $this->assertInstanceOf(AdapterInterface::class, $plugin->getAdapter());
$this->assertSame('http://example.com/test%20prefix/foo%201.html', $plugin->getExternalUrl('s3://foo 1.html')); $this->assertSame('http://example.com/test%20prefix/foo%201.html', $plugin->getExternalUrl('s3://foo 1.html'));
$configuration['prefix'] = ''; $configuration->set('prefix', '');
$plugin = new S3($client, new Config($configuration)); $plugin = new S3($client, $configuration);
$this->assertSame('http://example.com/foo%201.html', $plugin->getExternalUrl('s3://foo 1.html')); $this->assertSame('http://example.com/foo%201.html', $plugin->getExternalUrl('s3://foo 1.html'));
} }
/** /**
* Tests merging defaults into configuration arrays. * @covers ::mergeConfiguration
* @covers ::mergeClientConfiguration
*/ */
public function testMergeConfiguration() { public function testMergeConfiguration() {
$container = new ContainerBuilder(); $container = new ContainerBuilder();
...@@ -72,6 +77,9 @@ class S3Test extends UnitTestCase { ...@@ -72,6 +77,9 @@ class S3Test extends UnitTestCase {
$this->assertInstanceOf(Credentials::class, $client_config['credentials']); $this->assertInstanceOf(Credentials::class, $client_config['credentials']);
} }
/**
* @covers ::create
*/
public function testCreate() { public function testCreate() {
$container = new ContainerBuilder(); $container = new ContainerBuilder();
$container->set('request_stack', new RequestStack()); $container->set('request_stack', new RequestStack());
...@@ -88,6 +96,10 @@ class S3Test extends UnitTestCase { ...@@ -88,6 +96,10 @@ class S3Test extends UnitTestCase {
$this->assertInstanceOf(S3::class, $plugin); $this->assertInstanceOf(S3::class, $plugin);
} }
/**
* @covers ::create
* @covers ::getAdapter
*/
public function testCreateUsingNonAwsConfiguration() { public function testCreateUsingNonAwsConfiguration() {
$container = new ContainerBuilder(); $container = new ContainerBuilder();
$container->set('request_stack', new RequestStack()); $container->set('request_stack', new RequestStack());
...@@ -99,6 +111,7 @@ class S3Test extends UnitTestCase { ...@@ -99,6 +111,7 @@ class S3Test extends UnitTestCase {
'region' => 'eu-west-1', 'region' => 'eu-west-1',
'cname' => 'something.somewhere.tld', 'cname' => 'something.somewhere.tld',
'endpoint' => 'https://api.somewhere.tld', 'endpoint' => 'https://api.somewhere.tld',
'public' => TRUE,
]; ];
$plugin = S3::create($container, $configuration, '', ''); $plugin = S3::create($container, $configuration, '', '');
...@@ -106,6 +119,11 @@ class S3Test extends UnitTestCase { ...@@ -106,6 +119,11 @@ class S3Test extends UnitTestCase {
$this->assertSame('https://api.somewhere.tld', (string) $plugin->getAdapter()->getClient()->getEndpoint()); $this->assertSame('https://api.somewhere.tld', (string) $plugin->getAdapter()->getClient()->getEndpoint());
} }
/**
* @covers ::create
* @covers ::getExternalUrl
* @covers ::getAdapter
*/
public function testCreateUsingNonAwsConfigurationWithBucket() { public function testCreateUsingNonAwsConfigurationWithBucket() {
$container = new ContainerBuilder(); $container = new ContainerBuilder();
$container->set('request_stack', new RequestStack()); $container->set('request_stack', new RequestStack());
...@@ -118,6 +136,7 @@ class S3Test extends UnitTestCase { ...@@ -118,6 +136,7 @@ class S3Test extends UnitTestCase {
'cname_is_bucket' => FALSE, 'cname_is_bucket' => FALSE,
'bucket' => 'my-bucket', 'bucket' => 'my-bucket',
'endpoint' => 'https://api.somewhere.tld', 'endpoint' => 'https://api.somewhere.tld',
'public' => TRUE,
]; ];
$plugin = S3::create($container, $configuration, '', ''); $plugin = S3::create($container, $configuration, '', '');
...@@ -125,20 +144,43 @@ class S3Test extends UnitTestCase { ...@@ -125,20 +144,43 @@ class S3Test extends UnitTestCase {
$this->assertSame('https://api.somewhere.tld', (string) $plugin->getAdapter()->getClient()->getEndpoint()); $this->assertSame('https://api.somewhere.tld', (string) $plugin->getAdapter()->getClient()->getEndpoint());
} }
/**
* @covers ::__construct
* @covers ::getExternalUrl
*/
public function testEmptyCnameDoesNotBreakConfiguration() { public function testEmptyCnameDoesNotBreakConfiguration() {
$configuration = [ $configuration = new Config([
'cname' => NULL, 'cname' => NULL,
'bucket' => 'my-bucket', 'bucket' => 'my-bucket',
]; 'public' => TRUE,
]);
$plugin = new S3($this->createMock(S3ClientInterface::class), new Config($configuration)); $client = new S3Client([
'version' => 'latest',
'region' => 'beep',
'credentials' => new Credentials('fsdf', 'sfsdf'),
]);
$plugin = new S3($client, $configuration);
$this->assertSame('http://s3.amazonaws.com/my-bucket/foo.html', $plugin->getExternalUrl('s3://foo.html')); $this->assertSame('http://s3.amazonaws.com/my-bucket/foo.html', $plugin->getExternalUrl('s3://foo.html'));
} }
/**
* @covers ::ensure
*/
public function testEnsure() { public function testEnsure() {
$configuration = new Config([
'cname' => NULL,
'bucket' => 'my-bucket',
'public' => TRUE,
]);
$client = $this->prophesize(S3ClientInterface::class); $client = $this->prophesize(S3ClientInterface::class);
$client->willImplement(S3ClientInterface::class);
$client->doesBucketExist(Argument::type('string'))->willReturn(TRUE); $client->doesBucketExist(Argument::type('string'))->willReturn(TRUE);
$plugin = new S3($client->reveal(), new Config(['bucket' => 'example-bucket'])); $client->getPaginator('ListObjects', Argument::type('array'))
->willReturn([]);
$plugin = new S3($client->reveal(), $configuration);
$this->assertSame([], $plugin->ensure()); $this->assertSame([], $plugin->ensure());
...@@ -150,15 +192,4 @@ class S3Test extends UnitTestCase { ...@@ -150,15 +192,4 @@ class S3Test extends UnitTestCase {
$this->assertSame(RfcLogLevel::ERROR, $result[0]['severity']); $this->assertSame(RfcLogLevel::ERROR, $result[0]['severity']);
} }
public function testIamAuth() {
$container = new ContainerBuilder();
$container->set('request_stack', new RequestStack());
$container->get('request_stack')->push(Request::create('https://example.com/'));
$container->set('cache.default', new MemoryBackend('bin'));
$configuration = ['bucket' => 'example-bucket'];
$plugin = S3::create($container, $configuration, '', '');
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment