2021-11-30 17:39:33 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Tests\Feature\Services;
|
|
|
|
|
2022-07-30 10:46:02 +02:00
|
|
|
use App\Facades\QrCode;
|
2023-08-01 11:28:27 +02:00
|
|
|
use App\Services\QrCodeService;
|
|
|
|
use PHPUnit\Framework\Attributes\CoversClass;
|
2022-11-22 15:15:52 +01:00
|
|
|
use Tests\Classes\LocalFile;
|
|
|
|
use Tests\FeatureTestCase;
|
2021-11-30 17:39:33 +01:00
|
|
|
|
|
|
|
/**
|
2023-08-01 11:28:27 +02:00
|
|
|
* QrCodeServiceTest test class
|
2021-11-30 17:39:33 +01:00
|
|
|
*/
|
2023-08-01 11:28:27 +02:00
|
|
|
#[CoversClass(QrCodeService::class)]
|
|
|
|
#[CoversClass(QrCode::class)]
|
2021-11-30 17:39:33 +01:00
|
|
|
class QrCodeServiceTest extends FeatureTestCase
|
|
|
|
{
|
|
|
|
private const STRING_TO_ENCODE = 'stringToEncode';
|
2022-11-22 15:15:52 +01:00
|
|
|
|
2024-05-29 09:27:56 +02:00
|
|
|
private const STRING_ENCODED = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJxci1zdmcgcXJjb2RlIiB2aWV3Qm94PSIwIDAgMjUgMjUiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KPHBhdGggY2xhc3M9InFyLWRhdGEgbGlnaHQgcXJjb2RlIiBmaWxsPSIjZmZmIiBkPSJNMTIgMiBoMSB2MSBoLTFaIE0xMyAyIGgxIHYxIGgtMVogTTEyIDMgaDEgdjEgaC0xWiBNMTMgMyBoMSB2MSBoLTFaIE0xMSA0IGgxIHYxIGgtMVogTTEzIDQgaDEgdjEgaC0xWiBNMTEgNSBoMSB2MSBoLTFaIE0xMiA1IGgxIHYxIGgtMVogTTE0IDUgaDEgdjEgaC0xWiBNMTQgNiBoMSB2MSBoLTFaIE0xMSA3IGgxIHYxIGgtMVogTTEyIDcgaDEgdjEgaC0xWiBNMTMgNyBoMSB2MSBoLTFaIE0xNCA3IGgxIHYxIGgtMVogTTEzIDkgaDEgdjEgaC0xWiBNMTQgOSBoMSB2MSBoLTFaIE0xMSAxMCBoMSB2MSBoLTFaIE0xNCAxMCBoMSB2MSBoLTFaIE0yIDExIGgxIHYxIGgtMVogTTMgMTEgaDEgdjEgaC0xWiBNNSAxMSBoMSB2MSBoLTFaIE02IDExIGgxIHYxIGgtMVogTTcgMTEgaDEgdjEgaC0xWiBNOSAxMSBoMSB2MSBoLTFaIE0xMiAxMSBoMSB2MSBoLTFaIE0xMyAxMSBoMSB2MSBoLTFaIE0xNCAxMSBoMSB2MSBoLTFaIE0zIDEyIGgxIHYxIGgtMVogTTUgMTIgaDEgdjEgaC0xWiBNNiAxMiBoMSB2MSBoLTFaIE05IDEyIGgxIHYxIGgtMVogTTExIDEyIGgxIHYxIGgtMVogTTEzIDEyIGgxIHYxIGgtMVogTTE0IDEyIGgxIHYxIGgtMVogTTE2IDEyIGgxIHYxIGgtMVogTTE4IDEyIGgxIHYxIGgtMVogTTIwIDEyIGgxIHYxIGgtMVogTTMgMTMgaDEgdjEgaC0xWiBNNSAxMyBoMSB2MSBoLTFaIE0xMCAxMyBoMSB2MSBoLTFaIE0xMSAxMyBoMSB2MSBoLTFaIE0xMyAxMyBoMSB2MSBoLTFaIE0xNCAxMyBoMSB2MSBoLTFaIE0xNSAxMyBoMSB2MSBoLTFaIE0xNiAxMyBoMSB2MSBoLTFaIE0xNyAxMyBoMSB2MSBoLTFaIE0yMCAxMyBoMSB2MSBoLTFaIE0yMSAxMyBoMSB2MSBoLTFaIE00IDE0IGgxIHYxIGgtMVogTTcgMTQgaDEgdjEgaC0xWiBNMTIgMTQgaDEgdjEgaC0xWiBNMTUgMTQgaDEgdjEgaC0xWiBNMTYgMTQgaDEgdjEgaC0xWiBNMTcgMTQgaDEgdjEgaC0xWiBNMTggMTQgaDEgdjEgaC0xWiBNMjAgMTQgaDEgdjEgaC0xWiBNMjEgMTQgaDEgdjEgaC0xWiBNMjIgMTQgaDEgdjEgaC0xWiBNMTEgMTUgaDEgdjEgaC0xWiBNMTIgMTUgaDEgdjEgaC0xWiBNMTggMTUgaDEgdjEgaC0xWiBNMjAgMTUgaDEgdjEgaC0xWiBNMjIgMTUgaDEgdjEgaC0xWiBNMTEgMTYgaDEgdjEgaC0xWiBNMTQgMTYgaDEgdjEgaC0xWiBNMTUgMTYgaDEgdjEgaC0xWiBNMTYgMTYgaDEgdjEgaC0xWiBNMTkgMTYgaDEgdjEgaC0xWiBNMjEgMTYgaDEgdjEgaC0xWiBNMjIgMTYgaDEgdjEgaC0xWiBNMTQgMTcgaDEgdjEgaC0xWiBNMTYgMTcgaDEgdjEgaC0xWiBNMTcgMTcgaDEgdjEgaC0xWiBNMjEgMTcgaDEgdjEgaC0xWiBNMTMgMTggaDEgdjEgaC0xWiBNMTUgMTggaDEgdjEgaC0xWiBNMTYgMTggaDEgdjEgaC0xWiBNMTggMTggaDEgdjEgaC0xWiBNMjIgMTggaDEgdjEgaC0xWiBNMTEgMTkgaDEgdjEgaC0xWiBNMTIgMTkgaDEgdjEgaC0xWiBNMTMgMTkgaDEgdjEgaC0xWiBNMTUgMTkgaDEgdjEgaC0xWiBNMTcgMTkgaDEgdjEgaC0xWiBNMTggMTkgaDEgdjEgaC0xWiBNMTkgMTkgaDEgdjEgaC0xWiBNMjIgMTkgaDEgdjEgaC0xWiBNMTEgMjAgaDEgdjEgaC0xWiBNMTIgMjAgaDEgdjEgaC0xWiBNMTUgMjAgaDEgdjEgaC0xWiBNMTcgMjAgaDEgdjEgaC0xWiBNMTggMjAgaDEgdjEgaC0xWiBNMjEgMjAgaDEgdjEgaC0xWiBNMjIgMjAgaDEgdjEgaC0xWiBNMTMgMjEgaDEgdjEgaC0xWiBNMTcgMjEgaDEgdjEgaC0xWiBNMTkgMjEgaDEgdjEgaC0xWiBNMjAgMjEgaDEgdjEgaC0xWiBNMjEgMjEgaDEgdjEgaC0xWiBNMTEgMjIgaDEgdjEgaC0xWgpNMTMgMjIgaDEgdjEgaC0xWiBNMTQgMjIgaDEgdjEgaC0xWiBNMTggMjIgaDEgdjEgaC0xWiBNMTkgMjIgaDEgdjEgaC0xWiBNMjEgMjIgaDEgdjEgaC0xWiBNMjIgMjIgaDEgdjEgaC0xWiIvPgo8cGF0aCBjbGFzcz0icXItZmluZGVyIGxpZ2h0IHFyY29kZSIgZmlsbD0iI2ZmZiIgZD0iTTMgMyBoMSB2MSBoLTFaIE00IDMgaDEgdjEgaC0xWiBNNSAzIGgxIHYxIGgtMVogTTYgMyBoMSB2MSBoLTFaIE03IDMgaDEgdjEgaC0xWiBNMTcgMyBoMSB2MSBoLTFaIE0xOCAzIGgxIHYxIGgtMVogTTE5IDMgaDEgdjEgaC0xWiBNMjAgMyBoMSB2MSBoLTFaIE0yMSAzIGgxIHYxIGgtMVogTTMgNCBoMSB2MSBoLTFaIE03IDQgaDEgdjEgaC0xWiBNMTcgNCBoMSB2MSBoLTFaIE0yMSA0IGgxIHYxIGgtMVogTTMgNSBoMSB2MSBoLTFaIE03IDUgaDEgdjEgaC0xWiBNMTcgNSBoMSB2MSBoLTFaIE0yMSA1IGgxIHYxIGgtMVogTTMgNiBoMSB2MSBoLTFaIE03IDYgaDEgdjEgaC0xWiBNMTcgNiBoMSB2MSBoLTFaIE0yMSA2IGgxIHYxIGgtMVogTTMgNyBoMSB2MSBoLTFaIE00IDcgaDEgdjEgaC0xWiBNNSA3IGgxIHYxIGgtMVogTTYgNyBoMSB2MSBoLTFaIE03IDcgaDEgdjEgaC0xWiBNMTcgNyBoMSB2MSBoLTFaIE0xOCA3IGgxIHYxIGgtMVogTTE5IDcgaDEgdjEgaC0xWiBNMjAgNyBoMSB2MSBoLTFaIE0yMSA3IGgxIHYxIGgtMVogTTMgMTcgaDEgdjEgaC0xWiBNNCAxNyBoMSB2MSBoLTFaIE01IDE3IGgxIHYxIGgtMVogTTYgMTcgaDEgdjEgaC0xWiBNNyAxNyBoMSB2MSBoLTFaIE0zIDE4IGgxIHYxIGgtMVogTTcgMTggaDEgdjEgaC0xWiBNMyAxOSBoMSB2MSBoLTFaIE03IDE5IGgxIHYxIGgtMVogTTMgMjAgaDEgdjEgaC0xWiBNNyAyMCBoMSB2MSBoLTFaIE0zIDIxIGgxIHYxIGgtMVogTTQgMjEgaDEgdjEgaC0xWiBNNSAyMSBoMSB2MSBoLTFaIE02IDIxIGgxIHYxIGgtMVogTTcgMjEgaDEgdjEgaC0xWiIvPgo8cGF0aCBjbGFzcz0icXItc2VwYXJhdG9yIGxpZ2h0IHFyY29kZSIgZmlsbD0iI2ZmZiIgZD0iTTkgMiBoMSB2MSBoLTFaIE0xNSAyIGgxIHYxIGgtM
|
2022-11-22 15:15:52 +01:00
|
|
|
|
2021-11-30 17:39:33 +01:00
|
|
|
private const DECODED_IMAGE = 'otpauth://totp/test@test.com?secret=A4GRFHVIRBGY7UIW';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @test
|
|
|
|
*/
|
2022-12-13 12:07:29 +01:00
|
|
|
public function setUp() : void
|
2021-11-30 17:39:33 +01:00
|
|
|
{
|
|
|
|
parent::setUp();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @test
|
|
|
|
*/
|
|
|
|
public function test_encode_returns_correct_value()
|
|
|
|
{
|
2022-07-30 10:46:02 +02:00
|
|
|
$this->assertEquals(self::STRING_ENCODED, QrCode::encode(self::STRING_TO_ENCODE));
|
2021-11-30 17:39:33 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @test
|
|
|
|
*/
|
|
|
|
public function test_decode_valid_image_returns_correct_value()
|
|
|
|
{
|
|
|
|
$file = LocalFile::fake()->validQrcode();
|
|
|
|
|
2022-07-30 10:46:02 +02:00
|
|
|
$this->assertEquals(self::DECODED_IMAGE, QrCode::decode($file));
|
2021-11-30 17:39:33 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @test
|
|
|
|
*/
|
|
|
|
public function test_decode_invalid_image_returns_correct_value()
|
|
|
|
{
|
|
|
|
$this->expectException(\App\Exceptions\InvalidQrCodeException::class);
|
|
|
|
|
2022-07-30 10:46:02 +02:00
|
|
|
QrCode::decode(LocalFile::fake()->invalidQrcode());
|
2021-11-30 17:39:33 +01:00
|
|
|
}
|
2022-11-22 15:15:52 +01:00
|
|
|
}
|