mirror of
https://github.com/RobThree/TwoFactorAuth.git
synced 2026-08-19 02:22:37 +00:00
57 lines
1.6 KiB
PHP
57 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Tests\Providers\Qr;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use RobThree\Auth\TwoFactorAuth;
|
|
use RobThree\Auth\TwoFactorAuthException;
|
|
|
|
class IQRCodeProviderTest extends TestCase
|
|
{
|
|
/**
|
|
* @param string $datauri
|
|
*
|
|
* @return null|array
|
|
*/
|
|
private function DecodeDataUri($datauri)
|
|
{
|
|
if (preg_match('/data:(?P<mimetype>[\w\.\-\/]+);(?P<encoding>\w+),(?P<data>.*)/', $datauri, $m) === 1) {
|
|
return array(
|
|
'mimetype' => $m['mimetype'],
|
|
'encoding' => $m['encoding'],
|
|
'data' => base64_decode($m['data'])
|
|
);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
*/
|
|
public function testTotpUriIsCorrect()
|
|
{
|
|
$qr = new TestQrProvider();
|
|
|
|
$tfa = new TwoFactorAuth('Test&Issuer', 6, 30, 'sha1', $qr);
|
|
$data = $this->DecodeDataUri($tfa->getQRCodeImageAsDataUri('Test&Label', 'VMR466AB62ZBOKHE'));
|
|
$this->assertEquals('test/test', $data['mimetype']);
|
|
$this->assertEquals('base64', $data['encoding']);
|
|
$this->assertEquals('otpauth://totp/Test%26Label?secret=VMR466AB62ZBOKHE&issuer=Test%26Issuer&period=30&algorithm=SHA1&digits=6@200', $data['data']);
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
*/
|
|
public function testGetQRCodeImageAsDataUriThrowsOnInvalidSize()
|
|
{
|
|
$qr = new TestQrProvider();
|
|
|
|
$tfa = new TwoFactorAuth('Test', 6, 30, 'sha1', $qr);
|
|
|
|
$this->expectException(TwoFactorAuthException::class);
|
|
|
|
$tfa->getQRCodeImageAsDataUri('Test', 'VMR466AB62ZBOKHE', 0);
|
|
}
|
|
}
|