From 3f3327e2a168e3848797f6ede7fbeeaa21837d1e Mon Sep 17 00:00:00 2001 From: Mark Magyar <14284867+xHeaven@users.noreply.github.com> Date: Sat, 27 May 2023 22:01:34 +0200 Subject: [PATCH] use type safe assertions --- tests/Providers/Qr/IQRCodeProviderTest.php | 12 +-- tests/Providers/Rng/CSRNGProviderTest.php | 2 +- tests/Providers/Rng/HashRNGProviderTest.php | 2 +- tests/Providers/Rng/IRNGProviderTest.php | 16 ++-- .../Providers/Rng/OpenSSLRNGProviderTest.php | 4 +- tests/TwoFactorAuthTest.php | 84 +++++++++---------- 6 files changed, 60 insertions(+), 60 deletions(-) diff --git a/tests/Providers/Qr/IQRCodeProviderTest.php b/tests/Providers/Qr/IQRCodeProviderTest.php index bfab066..a9f7e82 100644 --- a/tests/Providers/Qr/IQRCodeProviderTest.php +++ b/tests/Providers/Qr/IQRCodeProviderTest.php @@ -20,9 +20,9 @@ class IQRCodeProviderTest extends TestCase $tfa = new TwoFactorAuth('Test&Issuer', 6, 30, Algorithm::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']); + $this->assertSame('test/test', $data['mimetype']); + $this->assertSame('base64', $data['encoding']); + $this->assertSame('otpauth://totp/Test%26Label?secret=VMR466AB62ZBOKHE&issuer=Test%26Issuer&period=30&algorithm=SHA1&digits=6@200', $data['data']); } public function testTotpUriIsCorrectNoIssuer(): void @@ -36,9 +36,9 @@ class IQRCodeProviderTest extends TestCase $tfa = new TwoFactorAuth(null, 6, 30, Algorithm::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=&period=30&algorithm=SHA1&digits=6@200', $data['data']); + $this->assertSame('test/test', $data['mimetype']); + $this->assertSame('base64', $data['encoding']); + $this->assertSame('otpauth://totp/Test%26Label?secret=VMR466AB62ZBOKHE&issuer=&period=30&algorithm=SHA1&digits=6@200', $data['data']); } public function testGetQRCodeImageAsDataUriThrowsOnInvalidSize(): void diff --git a/tests/Providers/Rng/CSRNGProviderTest.php b/tests/Providers/Rng/CSRNGProviderTest.php index 0d4898b..64f66e8 100644 --- a/tests/Providers/Rng/CSRNGProviderTest.php +++ b/tests/Providers/Rng/CSRNGProviderTest.php @@ -19,7 +19,7 @@ class CSRNGProviderTest extends TestCase if (function_exists('random_bytes')) { $rng = new CSRNGProvider(); foreach ($this->rngTestLengths as $l) { - $this->assertEquals($l, strlen($rng->getRandomBytes($l))); + $this->assertSame($l, strlen($rng->getRandomBytes($l))); } $this->assertTrue($rng->isCryptographicallySecure()); } else { diff --git a/tests/Providers/Rng/HashRNGProviderTest.php b/tests/Providers/Rng/HashRNGProviderTest.php index d54b9ae..4a71930 100644 --- a/tests/Providers/Rng/HashRNGProviderTest.php +++ b/tests/Providers/Rng/HashRNGProviderTest.php @@ -18,7 +18,7 @@ class HashRNGProviderTest extends TestCase { $rng = new HashRNGProvider(); foreach ($this->rngTestLengths as $l) { - $this->assertEquals($l, strlen($rng->getRandomBytes($l))); + $this->assertSame($l, strlen($rng->getRandomBytes($l))); } $this->assertFalse($rng->isCryptographicallySecure()); diff --git a/tests/Providers/Rng/IRNGProviderTest.php b/tests/Providers/Rng/IRNGProviderTest.php index a55a56d..7ff40c8 100644 --- a/tests/Providers/Rng/IRNGProviderTest.php +++ b/tests/Providers/Rng/IRNGProviderTest.php @@ -26,7 +26,7 @@ class IRNGProviderTest extends TestCase $rng = new TestRNGProvider(); $tfa = new TwoFactorAuth('Test', 6, 30, Algorithm::Sha1, null, $rng); - $this->assertEquals('ABCDEFGHIJKLMNOP', $tfa->createSecret(80, false)); + $this->assertSame('ABCDEFGHIJKLMNOP', $tfa->createSecret(80, false)); } public function testCreateSecretDoesNotThrowOnSecureRNGProvider(): void @@ -34,7 +34,7 @@ class IRNGProviderTest extends TestCase $rng = new TestRNGProvider(true); $tfa = new TwoFactorAuth('Test', 6, 30, Algorithm::Sha1, null, $rng); - $this->assertEquals('ABCDEFGHIJKLMNOP', $tfa->createSecret()); + $this->assertSame('ABCDEFGHIJKLMNOP', $tfa->createSecret()); } public function testCreateSecretGeneratesDesiredAmountOfEntropy(): void @@ -42,11 +42,11 @@ class IRNGProviderTest extends TestCase $rng = new TestRNGProvider(true); $tfa = new TwoFactorAuth('Test', 6, 30, Algorithm::Sha1, null, $rng); - $this->assertEquals('A', $tfa->createSecret(5)); - $this->assertEquals('AB', $tfa->createSecret(6)); - $this->assertEquals('ABCDEFGHIJKLMNOPQRSTUVWXYZ', $tfa->createSecret(128)); - $this->assertEquals('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', $tfa->createSecret(160)); - $this->assertEquals('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', $tfa->createSecret(320)); - $this->assertEquals('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567ABCDEFGHIJKLMNOPQRSTUVWXYZ234567A', $tfa->createSecret(321)); + $this->assertSame('A', $tfa->createSecret(5)); + $this->assertSame('AB', $tfa->createSecret(6)); + $this->assertSame('ABCDEFGHIJKLMNOPQRSTUVWXYZ', $tfa->createSecret(128)); + $this->assertSame('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', $tfa->createSecret(160)); + $this->assertSame('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', $tfa->createSecret(320)); + $this->assertSame('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567ABCDEFGHIJKLMNOPQRSTUVWXYZ234567A', $tfa->createSecret(321)); } } diff --git a/tests/Providers/Rng/OpenSSLRNGProviderTest.php b/tests/Providers/Rng/OpenSSLRNGProviderTest.php index 18fdb29..368c7cc 100644 --- a/tests/Providers/Rng/OpenSSLRNGProviderTest.php +++ b/tests/Providers/Rng/OpenSSLRNGProviderTest.php @@ -18,7 +18,7 @@ class OpenSSLRNGProviderTest extends TestCase { $rng = new OpenSSLRNGProvider(true); foreach ($this->rngTestLengths as $l) { - $this->assertEquals($l, strlen($rng->getRandomBytes($l))); + $this->assertSame($l, strlen($rng->getRandomBytes($l))); } $this->assertTrue($rng->isCryptographicallySecure()); @@ -31,7 +31,7 @@ class OpenSSLRNGProviderTest extends TestCase { $rng = new OpenSSLRNGProvider(false); foreach ($this->rngTestLengths as $l) { - $this->assertEquals($l, strlen($rng->getRandomBytes($l))); + $this->assertSame($l, strlen($rng->getRandomBytes($l))); } $this->assertFalse($rng->isCryptographicallySecure()); diff --git a/tests/TwoFactorAuthTest.php b/tests/TwoFactorAuthTest.php index 33015c7..1b1feca 100644 --- a/tests/TwoFactorAuthTest.php +++ b/tests/TwoFactorAuthTest.php @@ -31,8 +31,8 @@ class TwoFactorAuthTest extends TestCase public function testGetCodeReturnsCorrectResults(): void { $tfa = new TwoFactorAuth('Test'); - $this->assertEquals('543160', $tfa->getCode('VMR466AB62ZBOKHE', 1426847216)); - $this->assertEquals('538532', $tfa->getCode('VMR466AB62ZBOKHE', 0)); + $this->assertSame('543160', $tfa->getCode('VMR466AB62ZBOKHE', 1426847216)); + $this->assertSame('538532', $tfa->getCode('VMR466AB62ZBOKHE', 0)); } public function testEnsureAllTimeProvidersReturnCorrectTime(): void @@ -74,23 +74,23 @@ class TwoFactorAuthTest extends TestCase // We test with discrepancy 3 (so total of 7 codes: c-3, c-2, c-1, c, c+1, c+2, c+3 // Ensure each corresponding timeslice is returned correctly $this->assertTrue($tfa->verifyCode('VMR466AB62ZBOKHE', '534113', 3, 1426847190, $timeslice1)); - $this->assertEquals(47561570, $timeslice1); + $this->assertSame(47561570, $timeslice1); $this->assertTrue($tfa->verifyCode('VMR466AB62ZBOKHE', '819652', 3, 1426847190, $timeslice2)); - $this->assertEquals(47561571, $timeslice2); + $this->assertSame(47561571, $timeslice2); $this->assertTrue($tfa->verifyCode('VMR466AB62ZBOKHE', '915954', 3, 1426847190, $timeslice3)); - $this->assertEquals(47561572, $timeslice3); + $this->assertSame(47561572, $timeslice3); $this->assertTrue($tfa->verifyCode('VMR466AB62ZBOKHE', '543160', 3, 1426847190, $timeslice4)); - $this->assertEquals(47561573, $timeslice4); + $this->assertSame(47561573, $timeslice4); $this->assertTrue($tfa->verifyCode('VMR466AB62ZBOKHE', '348401', 3, 1426847190, $timeslice5)); - $this->assertEquals(47561574, $timeslice5); + $this->assertSame(47561574, $timeslice5); $this->assertTrue($tfa->verifyCode('VMR466AB62ZBOKHE', '648525', 3, 1426847190, $timeslice6)); - $this->assertEquals(47561575, $timeslice6); + $this->assertSame(47561575, $timeslice6); $this->assertTrue($tfa->verifyCode('VMR466AB62ZBOKHE', '170645', 3, 1426847190, $timeslice7)); - $this->assertEquals(47561576, $timeslice7); + $this->assertSame(47561576, $timeslice7); // Incorrect code should return false and a 0 timeslice $this->assertFalse($tfa->verifyCode('VMR466AB62ZBOKHE', '111111', 3, 1426847190, $timeslice8)); - $this->assertEquals(0, $timeslice8); + $this->assertSame(0, $timeslice8); } public function testGetCodeThrowsOnInvalidBase32String1(): void @@ -130,13 +130,13 @@ class TwoFactorAuthTest extends TestCase $method->setAccessible(true); // Test vectors from: https://tools.ietf.org/html/rfc4648#page-12 - $this->assertEquals('', $method->invoke($tfa, '')); - $this->assertEquals('f', $method->invoke($tfa, 'MY======')); - $this->assertEquals('fo', $method->invoke($tfa, 'MZXQ====')); - $this->assertEquals('foo', $method->invoke($tfa, 'MZXW6===')); - $this->assertEquals('foob', $method->invoke($tfa, 'MZXW6YQ=')); - $this->assertEquals('fooba', $method->invoke($tfa, 'MZXW6YTB')); - $this->assertEquals('foobar', $method->invoke($tfa, 'MZXW6YTBOI======')); + $this->assertSame('', $method->invoke($tfa, '')); + $this->assertSame('f', $method->invoke($tfa, 'MY======')); + $this->assertSame('fo', $method->invoke($tfa, 'MZXQ====')); + $this->assertSame('foo', $method->invoke($tfa, 'MZXW6===')); + $this->assertSame('foob', $method->invoke($tfa, 'MZXW6YQ=')); + $this->assertSame('fooba', $method->invoke($tfa, 'MZXW6YTB')); + $this->assertSame('foobar', $method->invoke($tfa, 'MZXW6YTBOI======')); } public function testKnownBase32DecodeUnpaddedTestVectors(): void @@ -151,13 +151,13 @@ class TwoFactorAuthTest extends TestCase $method->setAccessible(true); // Test vectors from: https://tools.ietf.org/html/rfc4648#page-12 - $this->assertEquals('', $method->invoke($tfa, '')); - $this->assertEquals('f', $method->invoke($tfa, 'MY')); - $this->assertEquals('fo', $method->invoke($tfa, 'MZXQ')); - $this->assertEquals('foo', $method->invoke($tfa, 'MZXW6')); - $this->assertEquals('foob', $method->invoke($tfa, 'MZXW6YQ')); - $this->assertEquals('fooba', $method->invoke($tfa, 'MZXW6YTB')); - $this->assertEquals('foobar', $method->invoke($tfa, 'MZXW6YTBOI')); + $this->assertSame('', $method->invoke($tfa, '')); + $this->assertSame('f', $method->invoke($tfa, 'MY')); + $this->assertSame('fo', $method->invoke($tfa, 'MZXQ')); + $this->assertSame('foo', $method->invoke($tfa, 'MZXW6')); + $this->assertSame('foob', $method->invoke($tfa, 'MZXW6YQ')); + $this->assertSame('fooba', $method->invoke($tfa, 'MZXW6YTB')); + $this->assertSame('foobar', $method->invoke($tfa, 'MZXW6YTBOI')); } public function testKnownTestVectors_sha1(): void @@ -165,12 +165,12 @@ class TwoFactorAuthTest extends TestCase //Known test vectors for SHA1: https://tools.ietf.org/html/rfc6238#page-15 $secret = 'GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ'; //== base32encode('12345678901234567890') $tfa = new TwoFactorAuth('Test', 8, 30, Algorithm::Sha1); - $this->assertEquals('94287082', $tfa->getCode($secret, 59)); - $this->assertEquals('07081804', $tfa->getCode($secret, 1111111109)); - $this->assertEquals('14050471', $tfa->getCode($secret, 1111111111)); - $this->assertEquals('89005924', $tfa->getCode($secret, 1234567890)); - $this->assertEquals('69279037', $tfa->getCode($secret, 2000000000)); - $this->assertEquals('65353130', $tfa->getCode($secret, 20000000000)); + $this->assertSame('94287082', $tfa->getCode($secret, 59)); + $this->assertSame('07081804', $tfa->getCode($secret, 1111111109)); + $this->assertSame('14050471', $tfa->getCode($secret, 1111111111)); + $this->assertSame('89005924', $tfa->getCode($secret, 1234567890)); + $this->assertSame('69279037', $tfa->getCode($secret, 2000000000)); + $this->assertSame('65353130', $tfa->getCode($secret, 20000000000)); } public function testKnownTestVectors_sha256(): void @@ -178,12 +178,12 @@ class TwoFactorAuthTest extends TestCase //Known test vectors for SHA256: https://tools.ietf.org/html/rfc6238#page-15 $secret = 'GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZA'; //== base32encode('12345678901234567890123456789012') $tfa = new TwoFactorAuth('Test', 8, 30, Algorithm::Sha256); - $this->assertEquals('46119246', $tfa->getCode($secret, 59)); - $this->assertEquals('68084774', $tfa->getCode($secret, 1111111109)); - $this->assertEquals('67062674', $tfa->getCode($secret, 1111111111)); - $this->assertEquals('91819424', $tfa->getCode($secret, 1234567890)); - $this->assertEquals('90698825', $tfa->getCode($secret, 2000000000)); - $this->assertEquals('77737706', $tfa->getCode($secret, 20000000000)); + $this->assertSame('46119246', $tfa->getCode($secret, 59)); + $this->assertSame('68084774', $tfa->getCode($secret, 1111111109)); + $this->assertSame('67062674', $tfa->getCode($secret, 1111111111)); + $this->assertSame('91819424', $tfa->getCode($secret, 1234567890)); + $this->assertSame('90698825', $tfa->getCode($secret, 2000000000)); + $this->assertSame('77737706', $tfa->getCode($secret, 20000000000)); } public function testKnownTestVectors_sha512(): void @@ -191,11 +191,11 @@ class TwoFactorAuthTest extends TestCase //Known test vectors for SHA512: https://tools.ietf.org/html/rfc6238#page-15 $secret = 'GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQGEZDGNA'; //== base32encode('1234567890123456789012345678901234567890123456789012345678901234') $tfa = new TwoFactorAuth('Test', 8, 30, Algorithm::Sha512); - $this->assertEquals('90693936', $tfa->getCode($secret, 59)); - $this->assertEquals('25091201', $tfa->getCode($secret, 1111111109)); - $this->assertEquals('99943326', $tfa->getCode($secret, 1111111111)); - $this->assertEquals('93441116', $tfa->getCode($secret, 1234567890)); - $this->assertEquals('38618901', $tfa->getCode($secret, 2000000000)); - $this->assertEquals('47863826', $tfa->getCode($secret, 20000000000)); + $this->assertSame('90693936', $tfa->getCode($secret, 59)); + $this->assertSame('25091201', $tfa->getCode($secret, 1111111109)); + $this->assertSame('99943326', $tfa->getCode($secret, 1111111111)); + $this->assertSame('93441116', $tfa->getCode($secret, 1234567890)); + $this->assertSame('38618901', $tfa->getCode($secret, 2000000000)); + $this->assertSame('47863826', $tfa->getCode($secret, 20000000000)); } }