diff --git a/composer.json b/composer.json index 8aed55f..a304679 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "pod-point/laravel-aws-pubsub", - "description": "A Laravel broadcasting driver and queue driver that broadcasts and listens to events published to AWS SNS and SQS.", + "description": "A Laravel broadcasting driver and queue driver that broadcasts and listens to published events utilising AWS SNS, EventBridge and SQS.", "keywords": ["laravel", "broadcasting", "broadcast", "queue", "listeners", "pubsub", "aws", "sns", "sqs"], "homepage": "https://github.com/pod-point/laravel-aws-pubsub", "license": "MIT", diff --git a/src/EventServiceProvider.php b/src/EventServiceProvider.php index d2afe14..273ff63 100644 --- a/src/EventServiceProvider.php +++ b/src/EventServiceProvider.php @@ -125,7 +125,7 @@ public static function prepareConfigurationCredentials(array $config): array private static function configHasCredentials(array $config): bool { return Arr::has($config, ['key', 'secret']) - && is_string(Arr::get($config, 'key')) - && is_string(Arr::get($config, 'secret')); + && Arr::get($config, 'key') + && Arr::get($config, 'secret'); } } diff --git a/tests/EventServiceProviderTest.php b/tests/EventServiceProviderTest.php new file mode 100644 index 0000000..3b12c72 --- /dev/null +++ b/tests/EventServiceProviderTest.php @@ -0,0 +1,130 @@ + 'bar', + 'key' => 'some_key', + 'secret' => 'some_secret', + ]); + + $this->assertEquals([ + 'foo' => 'bar', + 'key' => 'some_key', + 'secret' => 'some_secret', + 'credentials' => [ + 'key' => 'some_key', + 'secret' => 'some_secret', + ], + ], $config); + } + + /** @test */ + public function it_can_prepare_configuration_credentials_with_a_token() + { + $config = EventServiceProvider::prepareConfigurationCredentials([ + 'foo' => 'bar', + 'key' => 'some_key', + 'secret' => 'some_secret', + 'token' => 'some_token', + ]); + + $this->assertEquals([ + 'foo' => 'bar', + 'key' => 'some_key', + 'secret' => 'some_secret', + 'token' => 'some_token', + 'credentials' => [ + 'key' => 'some_key', + 'secret' => 'some_secret', + 'token' => 'some_token', + ], + ], $config); + } + + /** @test */ + public function it_can_make_sure_some_aws_credentials_are_provided_before_preparing_the_credentials() + { + $config = EventServiceProvider::prepareConfigurationCredentials([ + 'foo' => 'bar', + 'token' => 'some_token', + ]); + + $this->assertArrayNotHasKey('credentials', $config); + } + + public function invalidCredentialsDataProvider() + { + return [ + 'key_is_empty' => [ + 'creds' => [ + 'key' => '', + 'secret' => 'some_secret', + ], + ], + 'secret_is_empty' => [ + 'creds' => [ + 'key' => 'some_key', + 'secret' => '', + ], + ], + 'key_and_secret_are_empty' => [ + 'creds' => [ + 'key' => '', + 'secret' => '', + ], + ], + 'key_is_null' => [ + 'creds' => [ + 'key' => null, + 'secret' => 'some_secret', + ], + ], + 'secret_is_null' => [ + 'creds' => [ + 'key' => 'some_key', + 'secret' => null, + ], + ], + 'key_and_secret_are_null' => [ + 'creds' => [ + 'key' => null, + 'secret' => null, + ], + ], + 'key_is_empty_and_secret_is_null' => [ + 'creds' => [ + 'key' => '', + 'secret' => null, + ], + ], + 'key_is_null_and_secret_is_empty' => [ + 'creds' => [ + 'key' => null, + 'secret' => '', + ], + ], + ]; + } + + /** + * @test + * @dataProvider invalidCredentialsDataProvider + */ + public function it_can_make_sure_some_aws_credentials_are_provided_and_valid(array $invalidCredentials) + { + $config = EventServiceProvider::prepareConfigurationCredentials(array_merge([ + 'foo' => 'bar', + ], $invalidCredentials)); + + $this->assertArrayHasKey('foo', $config); + $this->assertArrayNotHasKey('credentials', $config); + } +}