File size: 1,771 Bytes
e4f4821 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
<?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());
}
}
}
|