From a057462516a4139c9908d023c855d325c739ff01 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 25 May 2023 14:01:45 +0200 Subject: [PATCH 01/10] fix type --- src/IO/ConnectionFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/IO/ConnectionFactory.php b/src/IO/ConnectionFactory.php index b7e4284..5e96564 100644 --- a/src/IO/ConnectionFactory.php +++ b/src/IO/ConnectionFactory.php @@ -37,7 +37,7 @@ public function create(): Connection 'application_url' => $this->application_url, 'application_product' => $this->application_product, 'application_language' => $this->settings->load('static:language') ?? 'en', - ], $this->settings->load('static:application_token')); + ], $this->settings->load('static:application_token') ?? ''); if ($jwt === null) { From 137ec94e1a7a90491f44cd07cbe5e17b3e214ed9 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 1 Jun 2023 12:27:02 +0200 Subject: [PATCH 02/10] guest token --- src/IO/ConnectionFactory.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/IO/ConnectionFactory.php b/src/IO/ConnectionFactory.php index 5e96564..ff22db6 100644 --- a/src/IO/ConnectionFactory.php +++ b/src/IO/ConnectionFactory.php @@ -32,12 +32,15 @@ public function __construct(string $application_url, string $application_product */ public function create(): Connection { - $jwt = Jwt::encode([ + $application_token = $this->settings->load('static:application_token'); + + $jwt = Jwt::encode([ 'application_id' => $this->settings->load('static:application_id'), + 'application_token' => $application_token ?? 'guest', 'application_url' => $this->application_url, 'application_product' => $this->application_product, 'application_language' => $this->settings->load('static:language') ?? 'en', - ], $this->settings->load('static:application_token') ?? ''); + ], $application_token ?? ''); if ($jwt === null) { From 9ade5227f6acc479c69da10094c380843677f2cc Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 1 Jun 2023 12:36:25 +0200 Subject: [PATCH 03/10] token + errors --- src/User/Sign.php | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/User/Sign.php b/src/User/Sign.php index 9974b16..3f9c386 100644 --- a/src/User/Sign.php +++ b/src/User/Sign.php @@ -7,7 +7,15 @@ * @link https://www.bulkgate.com/ */ -use BulkGate\Plugin\{InvalidResponseException, IO\Connection, IO\Request, IO\Url, Settings\Settings, Strict, Utils\Jwt}; +use BulkGate\Plugin\{ + Eshop\Configuration, + InvalidResponseException, + IO\Connection, + IO\Request, + IO\Url, + Settings\Settings, + Strict, + Utils\Jwt}; use function array_merge; class Sign @@ -20,12 +28,15 @@ class Sign private Url $url; + private Configuration $eshop_configuration; - public function __construct(Settings $settings, Connection $connection, Url $url) + + public function __construct(Settings $settings, Connection $connection, Url $url, Configuration $configuration) { $this->settings = $settings; $this->connection = $connection; $this->url = $url; + $this->eshop_configuration = $configuration; } @@ -37,10 +48,11 @@ public function authenticate(): array return [ 'token' => Jwt::encode([ 'application_id' => $this->settings->load('static:application_id'), + 'application_url' => $this->eshop_configuration->url(), // todo 'expire' => time() + 300 ], - $this->settings->load('static:application_token') + $this->settings->load('static:application_token') ?? 'guest' ) ?? 'guest' ]; } @@ -63,7 +75,7 @@ public function in(string $email, string $password, ?string $eshop_name = null, if (!isset($login['application_id']) || !isset($login['application_token'])) { - return ['error' => 'unknown_error']; + return ['error' => ['unknown_error']]; //todo: pouzit balicek pro response (react) } $this->settings->install(); @@ -76,7 +88,7 @@ public function in(string $email, string $password, ?string $eshop_name = null, } catch (InvalidResponseException $e) { - return ['error' => $e->getMessage()]; + return ['error' => [$e->getMessage()]]; //todo: pouzit balicek pro response (react) } } From 37c2949b429227cd986c9d64cf49d33acb11caef Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 1 Jun 2023 12:37:13 +0200 Subject: [PATCH 04/10] debug proxy --- src/IO/ConnectionStream.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/IO/ConnectionStream.php b/src/IO/ConnectionStream.php index e82492f..c27bee8 100644 --- a/src/IO/ConnectionStream.php +++ b/src/IO/ConnectionStream.php @@ -32,7 +32,8 @@ public function run(Request $request): Response 'method' => 'POST', 'header' => [ "Content-type: $request->content_type", - "Authorization: Bearer $this->jwt_token" + "Authorization: Bearer $this->jwt_token", + //"Cookie: XDEBUG_SESSION=10355" //debugging purpose only ], 'content' => $request->serialize(), 'ignore_errors' => true, From bf15322feec08fa9a2ab2e04f743078873f12362 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 1 Jun 2023 12:37:44 +0200 Subject: [PATCH 05/10] mysql 5.x syntax error --- src/Settings/Repository/SettingsDatabase.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Settings/Repository/SettingsDatabase.php b/src/Settings/Repository/SettingsDatabase.php index 16e027e..418f72d 100644 --- a/src/Settings/Repository/SettingsDatabase.php +++ b/src/Settings/Repository/SettingsDatabase.php @@ -78,7 +78,7 @@ public function createTable(): void "`key` varchar(50) NOT NULL," . "`type` varchar(50) NOT NULL DEFAULT 'string'," . "`value` longtext DEFAULT NULL," . - "`datetime` int(11) NOT NULL DEFAULT unix_timestamp(current_timestamp())," . + "`datetime` int(11) DEFAULT NULL," . //mysql 5 neumi defaultni hodnoty jako vyrazy!! viz. https://dba.stackexchange.com/questions/288926/is-it-possible-to-automatically-generate-a-unix-millisecond-timestamp-in-mysql-5 "`order` int(11) NOT NULL DEFAULT 0," . "`synchronize_flag` varchar(50) NOT NULL DEFAULT 'none' COMMENT 'none/add/change/delete'," . "PRIMARY KEY (`scope`,`key`)," . From ad8376c4a14af39c8591ddd78576c03ddb383ab7 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 1 Jun 2023 12:38:31 +0200 Subject: [PATCH 06/10] fix error detection --- src/IO/Response.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/IO/Response.php b/src/IO/Response.php index 8e5bb7e..7fa520d 100644 --- a/src/IO/Response.php +++ b/src/IO/Response.php @@ -49,8 +49,9 @@ private function setData(array $decoded): void throw new InvalidResponseException('empty_response'); } - if (isset($decoded['error'])) + if (!empty($decoded['error'])) { + //todo: error byva vetsinou array. Takze tady budeme propagovat 'unknown_error' a to neni moc user friendly! throw new InvalidResponseException(is_string($decoded['error']) ? $decoded['error'] : 'unknown_error'); } From b915fbe98413865f039de7dc57f7b96bfa65d530 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 1 Jun 2023 12:38:48 +0200 Subject: [PATCH 07/10] remove unused --- src/IO/Request.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/IO/Request.php b/src/IO/Request.php index 8a63cc3..fc5711f 100644 --- a/src/IO/Request.php +++ b/src/IO/Request.php @@ -7,7 +7,7 @@ * @link https://www.bulkgate.com/ */ -use BulkGate\Plugin\{JsonException, Strict, Utils\Compress, Utils\Json}; +use BulkGate\Plugin\{JsonException, Strict, Utils\Json}; class Request { From eff16b139fb3d0587cf68ac8ea63d1a97ab0785b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Pij=C3=A1k?= Date: Thu, 1 Jun 2023 14:41:15 +0200 Subject: [PATCH 08/10] rework --- src/IO/ConnectionFactory.php | 1 - src/IO/Response.php | 34 +++++++++++--- src/Settings/Repository/Entity/Setting.php | 12 ++--- src/Settings/Repository/SettingsDatabase.php | 2 +- src/User/Sign.php | 48 ++++++++------------ 5 files changed, 53 insertions(+), 44 deletions(-) diff --git a/src/IO/ConnectionFactory.php b/src/IO/ConnectionFactory.php index ff22db6..2ecf311 100644 --- a/src/IO/ConnectionFactory.php +++ b/src/IO/ConnectionFactory.php @@ -36,7 +36,6 @@ public function create(): Connection $jwt = Jwt::encode([ 'application_id' => $this->settings->load('static:application_id'), - 'application_token' => $application_token ?? 'guest', 'application_url' => $this->application_url, 'application_product' => $this->application_product, 'application_language' => $this->settings->load('static:language') ?? 'en', diff --git a/src/IO/Response.php b/src/IO/Response.php index 7fa520d..fc628e2 100644 --- a/src/IO/Response.php +++ b/src/IO/Response.php @@ -8,7 +8,7 @@ */ use BulkGate\Plugin\{AuthenticateException, Helpers, InvalidResponseException, Strict, Utils\JsonArray}; -use function is_string; +use function array_key_exists, is_string, array_key_first, is_array; class Response { @@ -49,11 +49,7 @@ private function setData(array $decoded): void throw new InvalidResponseException('empty_response'); } - if (!empty($decoded['error'])) - { - //todo: error byva vetsinou array. Takze tady budeme propagovat 'unknown_error' a to neni moc user friendly! - throw new InvalidResponseException(is_string($decoded['error']) ? $decoded['error'] : 'unknown_error'); - } + $this->checkError($decoded); if (isset($decoded['signal']) && $decoded['signal'] === 'authenticate') { @@ -64,6 +60,32 @@ private function setData(array $decoded): void } + /** + * @param array $array + * @throws InvalidResponseException + */ + private function checkError(array $array): void + { + if (array_key_exists('error', $array)) + { + if (is_string($array['error'])) + { + throw new InvalidResponseException($array['error']); + } + else if (is_array($array['error']) && !empty($array['error'])) + { + $key = array_key_first($array['error']); + + throw new InvalidResponseException($array['error'][$key]); + } + else + { + throw new InvalidResponseException('unknown_error'); + } + } + } + + /** * @return mixed */ diff --git a/src/Settings/Repository/Entity/Setting.php b/src/Settings/Repository/Entity/Setting.php index f99996d..aef5cc1 100644 --- a/src/Settings/Repository/Entity/Setting.php +++ b/src/Settings/Repository/Entity/Setting.php @@ -41,12 +41,12 @@ class Setting implements Entity */ public function __construct(array $list = []) { - $this->scope = (string)($list['scope'] ?? 'main'); - $this->key = (string)($list['key'] ?? 'unknown'); - $this->type = (string)($list['type'] ?? Helpers::detectType($list['value'] ?? '') ?? 'string'); + $this->scope = (string) ($list['scope'] ?? 'main'); + $this->key = (string) ($list['key'] ?? 'unknown'); + $this->type = (string) ($list['type'] ?? Helpers::detectType($list['value'] ?? '') ?? 'string'); $this->value = is_string($list['value'] ?? '') ? Helpers::deserializeValue($list['value'] ?? '', $this->type) : $list['value'] ?? ''; - $this->datetime = (int)($list['datetime'] ?? time()); - $this->order = (int)($list['order'] ?? 0); - $this->synchronize_flag = Helpers::checkEnum((string)($list['synchronize_flag'] ?? self::SynchronizeDefault), self::SynchronizeFlags, self::SynchronizeDefault); + $this->datetime = (int) ($list['datetime'] ?? time()); + $this->order = (int) ($list['order'] ?? 0); + $this->synchronize_flag = Helpers::checkEnum((string) ($list['synchronize_flag'] ?? self::SynchronizeDefault), self::SynchronizeFlags, self::SynchronizeDefault); } } diff --git a/src/Settings/Repository/SettingsDatabase.php b/src/Settings/Repository/SettingsDatabase.php index 418f72d..7f5b333 100644 --- a/src/Settings/Repository/SettingsDatabase.php +++ b/src/Settings/Repository/SettingsDatabase.php @@ -78,7 +78,7 @@ public function createTable(): void "`key` varchar(50) NOT NULL," . "`type` varchar(50) NOT NULL DEFAULT 'string'," . "`value` longtext DEFAULT NULL," . - "`datetime` int(11) DEFAULT NULL," . //mysql 5 neumi defaultni hodnoty jako vyrazy!! viz. https://dba.stackexchange.com/questions/288926/is-it-possible-to-automatically-generate-a-unix-millisecond-timestamp-in-mysql-5 + "`datetime` int(11) NOT NULL," . "`order` int(11) NOT NULL DEFAULT 0," . "`synchronize_flag` varchar(50) NOT NULL DEFAULT 'none' COMMENT 'none/add/change/delete'," . "PRIMARY KEY (`scope`,`key`)," . diff --git a/src/User/Sign.php b/src/User/Sign.php index 3f9c386..994696d 100644 --- a/src/User/Sign.php +++ b/src/User/Sign.php @@ -7,16 +7,7 @@ * @link https://www.bulkgate.com/ */ -use BulkGate\Plugin\{ - Eshop\Configuration, - InvalidResponseException, - IO\Connection, - IO\Request, - IO\Url, - Settings\Settings, - Strict, - Utils\Jwt}; -use function array_merge; +use BulkGate\{Plugin\Eshop\Configuration, Plugin\InvalidResponseException, Plugin\IO\Connection, Plugin\IO\Request, Plugin\IO\Url, Plugin\Settings\Settings, Plugin\Strict, Plugin\Utils\Jwt}; class Sign { @@ -28,7 +19,7 @@ class Sign private Url $url; - private Configuration $eshop_configuration; + private Configuration $configuration; public function __construct(Settings $settings, Connection $connection, Url $url, Configuration $configuration) @@ -36,30 +27,27 @@ public function __construct(Settings $settings, Connection $connection, Url $url $this->settings = $settings; $this->connection = $connection; $this->url = $url; - $this->eshop_configuration = $configuration; + $this->configuration = $configuration; } - /** - * @return array{token: string} - */ - public function authenticate(): array + public function authenticate(): ?string { - return [ - 'token' => Jwt::encode([ - 'application_id' => $this->settings->load('static:application_id'), - 'application_url' => $this->eshop_configuration->url(), - // todo - 'expire' => time() + 300 - ], - $this->settings->load('static:application_token') ?? 'guest' - ) ?? 'guest' - ]; + $token = $this->settings->load('static:application_token'); + + return Jwt::encode([ + 'application_id' => $this->settings->load('static:application_id'), + 'application_url' => $this->configuration->url(), + 'application_product' => $this->configuration->product(), + 'application_language' => $this->settings->load('main:language') ?? 'en', + 'guest' => $token === null, + 'expire' => time() + 300 + ], $token ?? ''); } /** - * @return array{token: string, redirect: string|null}|array{error: string} + * @return array{token: string|null, redirect: string|null}|array{error: list} */ public function in(string $email, string $password, ?string $eshop_name = null, ?string $success_redirect = null): array { @@ -75,7 +63,7 @@ public function in(string $email, string $password, ?string $eshop_name = null, if (!isset($login['application_id']) || !isset($login['application_token'])) { - return ['error' => ['unknown_error']]; //todo: pouzit balicek pro response (react) + return ['error' => ['unknown_error']]; } $this->settings->install(); @@ -84,11 +72,11 @@ public function in(string $email, string $password, ?string $eshop_name = null, $this->settings->set('static:application_token', $login['application_token'], ['type' => 'string']); $this->settings->set('static:synchronize', 0, ['type' => 'int']); - return array_merge($this->authenticate(), ['redirect' => $success_redirect]); + return ['token' => $this->authenticate(), 'redirect' => $success_redirect]; } catch (InvalidResponseException $e) { - return ['error' => [$e->getMessage()]]; //todo: pouzit balicek pro response (react) + return ['error' => [$e->getMessage()]]; } } From 4d1f916731c370b6ba1a9cb31e937e44e2c87ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Pij=C3=A1k?= Date: Thu, 1 Jun 2023 14:47:12 +0200 Subject: [PATCH 09/10] fix tests --- .../Repository/SettingsDatabaseTest.phpt | 2 +- tests/User/SignTest.phpt | 29 +++++++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/tests/Settings/Repository/SettingsDatabaseTest.phpt b/tests/Settings/Repository/SettingsDatabaseTest.phpt index b5c2bcc..bc5ece5 100644 --- a/tests/Settings/Repository/SettingsDatabaseTest.phpt +++ b/tests/Settings/Repository/SettingsDatabaseTest.phpt @@ -101,7 +101,7 @@ class SettingsDatabaseTest extends TestCase { $repository = new SettingsDatabase($connection = Mockery::mock(Connection::class)); $connection->shouldReceive('table')->with('bulkgate_module')->twice()->andReturn('prefix_bulkgate_module'); - $connection->shouldReceive('execute')->with('CREATE TABLE IF NOT EXISTS `prefix_bulkgate_module` (`scope` varchar(50) NOT NULL DEFAULT \'main\',`key` varchar(50) NOT NULL,`type` varchar(50) NOT NULL DEFAULT \'string\',`value` longtext DEFAULT NULL,`datetime` int(11) NOT NULL DEFAULT unix_timestamp(current_timestamp()),`order` int(11) NOT NULL DEFAULT 0,`synchronize_flag` varchar(50) NOT NULL DEFAULT \'none\' COMMENT \'none/add/change/delete\',PRIMARY KEY (`scope`,`key`),KEY `synchronize_flag` (`synchronize_flag`),KEY `scope_synchronize_flag` (`scope`,`synchronize_flag`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;')->once()->andReturnNull(); + $connection->shouldReceive('execute')->with('CREATE TABLE IF NOT EXISTS `prefix_bulkgate_module` (`scope` varchar(50) NOT NULL DEFAULT \'main\',`key` varchar(50) NOT NULL,`type` varchar(50) NOT NULL DEFAULT \'string\',`value` longtext DEFAULT NULL,`datetime` int(11) NOT NULL,`order` int(11) NOT NULL DEFAULT 0,`synchronize_flag` varchar(50) NOT NULL DEFAULT \'none\' COMMENT \'none/add/change/delete\',PRIMARY KEY (`scope`,`key`),KEY `synchronize_flag` (`synchronize_flag`),KEY `scope_synchronize_flag` (`scope`,`synchronize_flag`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;')->once()->andReturnNull(); $connection->shouldReceive('execute')->with('ALTER TABLE `prefix_bulkgate_module` ENGINE=InnoDB;')->once(); $repository->createTable(); diff --git a/tests/User/SignTest.phpt b/tests/User/SignTest.phpt index 1f21e52..4e04f71 100644 --- a/tests/User/SignTest.phpt +++ b/tests/User/SignTest.phpt @@ -9,7 +9,7 @@ namespace BulkGate\Plugin\User\Test; use Mockery; use Tester\{Assert, Expect, TestCase}; -use BulkGate\Plugin\{InvalidResponseException, IO\Connection, IO\Request, IO\Response, IO\Url, Settings\Settings, User\Sign}; +use BulkGate\Plugin\{Eshop\ConfigurationDefault, InvalidResponseException, IO\Connection, IO\Request, IO\Response, IO\Url, Settings\Settings, User\Sign}; use function json_encode; require_once __DIR__ . '/../bootstrap.php'; @@ -18,21 +18,19 @@ class SignTest extends TestCase { public function testAuthenticate(): void { - $sign = new Sign($settings = Mockery::mock(Settings::class), Mockery::mock(Connection::class), new Url()); + $sign = new Sign($settings = Mockery::mock(Settings::class), Mockery::mock(Connection::class), new Url(), new ConfigurationDefault('url', 'eshop', '1.0')); - $settings->shouldReceive('load')->with('static:application_id')->andReturn(12345); - $settings->shouldReceive('load')->with('static:application_token')->andReturn('test_application_token'); - - $result = $sign->authenticate(); + $settings->shouldReceive('load')->with('static:application_token')->once()->andReturn('test_application_token'); + $settings->shouldReceive('load')->with('static:application_id')->once()->andReturn(12345); + $settings->shouldReceive('load')->with('main:language')->once()->andReturn('cs'); - Assert::count(1, $result); - Assert::match('~^[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+$~', $result['token']); + Assert::match('~^[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+$~', $sign->authenticate()); } public function testIn(): void { - $sign = new Sign($settings = Mockery::mock(Settings::class), $connection = Mockery::mock(Connection::class), new Url()); + $sign = new Sign($settings = Mockery::mock(Settings::class), $connection = Mockery::mock(Connection::class), new Url(), new ConfigurationDefault('url', 'eshop', '1.0')); $settings->shouldReceive('install')->withNoArgs()->once(); $connection->shouldReceive('run')->with(Mockery::on(function (Request $request): bool { @@ -43,8 +41,9 @@ class SignTest extends TestCase 'application_id' => 12345, 'application_token' => 'test_application_token', ]]]]]))); - $settings->shouldReceive('set')->with('static:application_id', 12345, ['type' => 'int']); $settings->shouldReceive('set')->with('static:application_token', 'test_application_token', ['type' => 'string']); + $settings->shouldReceive('set')->with('static:application_id', 12345, ['type' => 'int']); + $settings->shouldReceive('load')->with('main:language')->once()->andReturn('cs'); $settings->shouldReceive('set')->with('static:synchronize', 0, ['type' => 'int']); $settings->shouldReceive('load')->with('static:application_id')->andReturn(12345); @@ -63,33 +62,33 @@ class SignTest extends TestCase public function testInInvalid(): void { - $sign = new Sign($settings = Mockery::mock(Settings::class), $connection = Mockery::mock(Connection::class), new Url()); + $sign = new Sign(Mockery::mock(Settings::class), $connection = Mockery::mock(Connection::class), new Url(), new ConfigurationDefault('url', 'eshop', '1.0')); $connection->shouldReceive('run')->with(Mockery::on(function (Request $request): bool { Assert::same('{"email":"test@example.com","password":"test_password","eshop_name":"Test Eshop"}', $request->serialize()); return true; }))->andReturn(new Response(json_encode(['data' => ['_generic' => ['server' => ['login' => []]]]]))); - Assert::same(['error' => 'unknown_error'], $sign->in('test@example.com', 'test_password', 'Test Eshop', 'test_success_redirect')); + Assert::same(['error' => ['unknown_error']], $sign->in('test@example.com', 'test_password', 'Test Eshop', 'test_success_redirect')); } public function testInError(): void { - $sign = new Sign($settings = Mockery::mock(Settings::class), $connection = Mockery::mock(Connection::class), new Url()); + $sign = new Sign(Mockery::mock(Settings::class), $connection = Mockery::mock(Connection::class), new Url(), new ConfigurationDefault('url', 'eshop', '1.0')); $connection->shouldReceive('run')->with(Mockery::on(function (Request $request): bool { Assert::same('{"email":"test@example.com","password":"test_password","eshop_name":"Test Eshop"}', $request->serialize()); return true; }))->andThrow(InvalidResponseException::class, 'test_error'); - Assert::same(['error' => 'test_error'], $sign->in('test@example.com', 'test_password', 'Test Eshop', 'test_success_redirect')); + Assert::same(['error' => ['test_error']], $sign->in('test@example.com', 'test_password', 'Test Eshop', 'test_success_redirect')); } public function testOut(): void { - $sign = new Sign($setting = Mockery::mock(Settings::class), Mockery::mock(Connection::class), new Url()); + $sign = new Sign($setting = Mockery::mock(Settings::class), Mockery::mock(Connection::class), new Url(), new ConfigurationDefault('url', 'eshop', '1.0')); $setting->shouldReceive('delete')->with('static:application_token')->andReturnNull(); $sign->out(); From 6963b948d16b93b43957bb316c280bedee37cda5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Pij=C3=A1k?= Date: Thu, 1 Jun 2023 14:48:18 +0200 Subject: [PATCH 10/10] cs --- src/IO/ConnectionFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/IO/ConnectionFactory.php b/src/IO/ConnectionFactory.php index 2ecf311..32cf55f 100644 --- a/src/IO/ConnectionFactory.php +++ b/src/IO/ConnectionFactory.php @@ -34,7 +34,7 @@ public function create(): Connection { $application_token = $this->settings->load('static:application_token'); - $jwt = Jwt::encode([ + $jwt = Jwt::encode([ 'application_id' => $this->settings->load('static:application_id'), 'application_url' => $this->application_url, 'application_product' => $this->application_product,