63 lines
1.7 KiB
PHP
63 lines
1.7 KiB
PHP
<?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());
|
|
}
|
|
}
|
|
}
|