|
<?php |
|
|
|
require_once __DIR__.'/../Base.php'; |
|
|
|
use Kanboard\Auth\TotpAuth; |
|
|
|
class TotpAuthTest extends Base |
|
{ |
|
public function testGetName() |
|
{ |
|
$provider = new TotpAuth($this->container); |
|
$this->assertEquals('Time-based One-time Password Algorithm', $provider->getName()); |
|
} |
|
|
|
public function testGetSecret() |
|
{ |
|
$provider = new TotpAuth($this->container); |
|
$this->assertEmpty($provider->getSecret()); |
|
|
|
$provider->generateSecret(); |
|
$secret = $provider->getSecret(); |
|
|
|
$this->assertNotEmpty($secret); |
|
$this->assertEquals($secret, $provider->getSecret()); |
|
$this->assertEquals($secret, $provider->getSecret()); |
|
} |
|
|
|
public function testSetSecret() |
|
{ |
|
$provider = new TotpAuth($this->container); |
|
$provider->setSecret('mySecret'); |
|
$this->assertEquals('mySecret', $provider->getSecret()); |
|
} |
|
|
|
public function testGetUrl() |
|
{ |
|
$provider = new TotpAuth($this->container); |
|
|
|
$this->assertEmpty($provider->getQrCodeUrl('me')); |
|
$this->assertEmpty($provider->getKeyUrl('me')); |
|
|
|
$provider->setSecret('mySecret'); |
|
$this->assertEquals('otpauth://totp/me?secret=mySecret&issuer=Kanboard', $provider->getKeyUrl('me')); |
|
} |
|
|
|
public function testAuthentication() |
|
{ |
|
$provider = new TotpAuth($this->container); |
|
|
|
$secret = $provider->generateSecret(); |
|
$this->assertNotEmpty($secret); |
|
|
|
$provider->setCode('1234'); |
|
$this->assertFalse($provider->authenticate()); |
|
|
|
if (!!`which oathtool`) { |
|
$code = shell_exec('oathtool --totp -b '.$secret); |
|
$provider->setCode(trim($code)); |
|
$this->assertTrue($provider->authenticate()); |
|
} |
|
} |
|
} |
|
|