diff --git a/composer.json b/composer.json index 6196f23..954dab1 100755 --- a/composer.json +++ b/composer.json @@ -11,6 +11,14 @@ ], "homepage": "https://www.phplist.com/", "license": "AGPL-3.0-or-later", + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/tatevikgr/phplist-api-client" + } + ], + "minimum-stability": "dev", + "prefer-stable": true, "authors": [ { "name": "Xheni Myrtaj", @@ -37,7 +45,8 @@ "php": "^8.1", "phplist/core": "v5.0.0-alpha8", "symfony/twig-bundle": "^6.4", - "symfony/webpack-encore-bundle": "^2.2" + "symfony/webpack-encore-bundle": "^2.2", + "tatevikgr/rest-api-client": "dev-master" }, "require-dev": { "phpunit/phpunit": "^9.5", diff --git a/src/Controller/AuthController.php b/src/Controller/AuthController.php index 84275f4..4564f15 100755 --- a/src/Controller/AuthController.php +++ b/src/Controller/AuthController.php @@ -6,7 +6,7 @@ use Exception; use GuzzleHttp\Exception\GuzzleException; -use PhpList\WebFrontend\Service\ApiClient; +use PhpList\RestApiClient\Endpoint\AuthClient; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -14,9 +14,9 @@ class AuthController extends AbstractController { - private ApiClient $apiClient; + private AuthClient $apiClient; - public function __construct(ApiClient $apiClient) + public function __construct(AuthClient $apiClient) { $this->apiClient = $apiClient; } @@ -40,10 +40,9 @@ public function login(Request $request): Response $password = $request->request->get('password'); try { - $authData = $this->apiClient->authenticate($username, $password); + $authData = $this->apiClient->login($username, $password); $request->getSession()->set('auth_token', $authData['key']); $request->getSession()->set('auth_expiry_date', $authData['key']); - $this->apiClient->setAuthToken($authData['key']); return $this->redirectToRoute('empty_start_page'); } catch (Exception $e) { diff --git a/tests/Unit/Controller/AuthControllerTest.php b/tests/Unit/Controller/AuthControllerTest.php index 49fc750..f7d8ef5 100644 --- a/tests/Unit/Controller/AuthControllerTest.php +++ b/tests/Unit/Controller/AuthControllerTest.php @@ -5,7 +5,7 @@ namespace PhpList\WebFrontend\Tests\Unit\Controller; use PhpList\WebFrontend\Controller\AuthController; -use PhpList\WebFrontend\Service\ApiClient; +use PhpList\RestApiClient\Endpoint\AuthClient; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use RuntimeException; @@ -16,12 +16,12 @@ class AuthControllerTest extends TestCase { - private ApiClient&MockObject $apiClient; + private AuthClient&MockObject $apiClient; private AuthController $controller; protected function setUp(): void { - $this->apiClient = $this->createMock(ApiClient::class); + $this->apiClient = $this->createMock(AuthClient::class); $this->controller = $this->getMockBuilder(AuthController::class) ->setConstructorArgs([$this->apiClient]) @@ -118,14 +118,10 @@ public function testLoginWithPostRequestSuccess(): void ]); $request->setSession($session); - $this->apiClient->method('authenticate') + $this->apiClient->method('login') ->with('testuser', 'testpass') ->willReturn(['key' => 'test-token']); - $this->apiClient->expects($this->once()) - ->method('setAuthToken') - ->with('test-token'); - $response = $this->controller->login($request); $this->assertInstanceOf(RedirectResponse::class, $response); @@ -147,14 +143,17 @@ public function testLoginWithPostRequestFailure(): void ]); $request->setSession($session); - $this->apiClient->method('authenticate') + $this->apiClient->method('login') ->with('testuser', 'testpass') ->willThrowException(new RuntimeException('Invalid credentials')); $response = $this->controller->login($request); $this->assertStringContainsString('auth/login.html.twig', $response->getContent()); - $this->assertStringContainsString('Invalid credentials', $response->getContent()); + $this->assertStringContainsString( + 'Invalid credentials or server error: Invalid credentials', + $response->getContent(), + ); } public function testLoginWithExistingSession(): void