kb / tests /units /Auth /TotpAuthTest.php
Xv Zan
ULFS
e4f4821
<?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());
}
}
}