. */ namespace SPT\Providers\Auth; use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\MockObject\Exception; use SP\Domain\Auth\Dtos\UserLoginDto; use SP\Domain\Auth\Services\AuthException; use SP\Providers\Auth\AuthInterface; use SP\Providers\Auth\AuthProvider; use SP\Providers\Auth\AuthTypeEnum; use SP\Providers\Auth\Browser\BrowserAuthData; use SPT\UnitaryTestCase; /** * Class AuthProviderTest * */ #[Group('unitary')] class AuthProviderTest extends UnitaryTestCase { private AuthProvider $authProvider; /** * @throws AuthException * @throws Exception */ public function testRegisterAuthFail() { $auth1 = $this->createMock(AuthInterface::class); $this->authProvider->registerAuth($auth1, AuthTypeEnum::Ldap); $this->expectException(AuthException::class); $this->expectExceptionMessage('Authentication already initialized'); $this->authProvider->registerAuth($auth1, AuthTypeEnum::Ldap); } /** * @throws AuthException * @throws Exception */ public function testDoAuth() { $userLoginData = new UserLoginDto(); $userLoginData->setLoginUser(self::$faker->userName); $userLoginData->setLoginPass(self::$faker->password); $browserAuthData = new BrowserAuthData(false); $browserAuthData->setName(self::$faker->name); $browserAuthData->setEmail(self::$faker->email); $browserAuthData->setStatusCode(0); $browserAuthData->success(); $auth = $this->createMock(AuthInterface::class); $auth->expects(self::once()) ->method('authenticate') ->with($userLoginData) ->willReturn($browserAuthData); $this->authProvider->registerAuth($auth, AuthTypeEnum::Ldap); $out = $this->authProvider->doAuth($userLoginData); self::assertCount(1, $out); self::assertEquals(AuthTypeEnum::Ldap->value, $out[0]->getAuthName()); self::assertEquals($browserAuthData, $out[0]->getData()); } protected function setUp(): void { parent::setUp(); $this->authProvider = new AuthProvider($this->application); } }