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