| <?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()); |
| } |
| } |
| } |
|
|