From 7514ec6b84f11cfc726796d4ea9a461ee8e2c98a Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Wed, 1 Jan 2020 17:04:14 +0100 Subject: [PATCH] webauthn --- lam/tests/lib/webauthnTest.php | 96 +++++++++++++++++++++++++++++++--- 1 file changed, 88 insertions(+), 8 deletions(-) diff --git a/lam/tests/lib/webauthnTest.php b/lam/tests/lib/webauthnTest.php index 687f5f59..72fb32fb 100644 --- a/lam/tests/lib/webauthnTest.php +++ b/lam/tests/lib/webauthnTest.php @@ -1,15 +1,16 @@ database = $this + ->getMockBuilder(PublicKeyCredentialSourceRepositorySQLite::class) + ->setMethods(array('findOneByCredentialId', 'findAllForUserEntity', 'saveCredentialSource')) + ->getMock(); + $this->database->method('findOneByCredentialId')->willReturn(null); + $this->database->method('findAllForUserEntity')->willReturn(array()); + $this->database->method('saveCredentialSource')->willReturn(true); + + $this->manager = $this + ->getMockBuilder(WebauthnManager::class) + ->setMethods(array('getDatabase')) + ->getMock(); + $this->manager->method('getDatabase')->willReturn($this->database); + + $cfgMain = new \LAMCfgMain(); + $cfgMain->passwordMinLength = 3; + $logFile = tmpfile(); + $logFilePath = stream_get_meta_data($logFile)['uri']; + $cfgMain->logDestination = $logFilePath; + $_SESSION['cfgMain'] = $cfgMain; + + $file = tmpfile(); + $filePath = stream_get_meta_data($file)['uri']; + $config = new \LAMConfig($filePath); + $config->setTwoFactorAuthenticationDomain('domain'); + $_SESSION['config'] = $config; + } + + public function test_getAuthenticationObject() { + $authenticationObj = $this->manager->getAuthenticationObject('userDN', false); + $this->assertEquals(40, sizeof($authenticationObj->getChallenge())); + $this->assertEquals('domain', $authenticationObj->getRpId()); + } + + public function test_getRegistrationObject() { + $registrationObject = $this->manager->getRegistrationObject('userDn', false); + $this->assertEquals(40, sizeof($registrationObject->getChallenge())); + $this->assertEquals('domain', $registrationObject->getRp()->getId()); + } + + public function test_isRegistered() { + $this->database->method('findAllForUserEntity')->willReturn(array()); + $isRegistered = $this->manager->isRegistered('userDN'); + $this->assertFalse($isRegistered); + $this->database->method('findAllForUserEntity')->willReturn(array( + new PublicKeyCredentialSource( + "id1", + PublicKeyCredentialDescriptor::CREDENTIAL_TYPE_PUBLIC_KEY, + array(), + "atype", + new CertificateTrustPath(array('x5c' => 'test')), + \Ramsey\Uuid\Uuid::uuid1(), + "p1", + "uh1", + 1) + )); + $isRegistered = $this->manager->isRegistered('userDN'); + $this->assertTrue($isRegistered); + } + +} /** * Checks the webauthn database functionality. @@ -38,7 +118,7 @@ require_once 'lam/lib/webauthn.inc'; class PublicKeyCredentialSourceRepositorySQLiteTest extends TestCase { /** - * @var PublicKeyCredentialSourceRepositorySQLite + * @var \PHPUnit_Framework_MockObject_MockObject|PublicKeyCredentialSourceRepositorySQLite */ private $database;