X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2Fsrc%2FUtil%2FCryptoTest.php;h=82afc24832264f94a1f4c8e13cf3600749efc9a2;hb=360614d2cf3aceeb763ef1281ad5236878f5d735;hp=b976a09838d38c0de5e16d87a5cd46716933c762;hpb=049cd963f3a67c483a15335660280f09a14dc83d;p=friendica.git diff --git a/tests/src/Util/CryptoTest.php b/tests/src/Util/CryptoTest.php index b976a09838..82afc24832 100644 --- a/tests/src/Util/CryptoTest.php +++ b/tests/src/Util/CryptoTest.php @@ -1,51 +1,96 @@ . + * + * This is in the same namespace as Crypto for mocking 'rand' and 'random_init' + */ -// this is in the same namespace as Crypto for mocking 'rand' and 'random_init' +/// @todo Use right namespace - needs alternative way of mocking random_int() namespace Friendica\Util; +use phpseclib\Crypt\RSA; +use phpseclib\Math\BigInteger; use PHPUnit\Framework\TestCase; class CryptoTest extends TestCase { - /** - * Replaces rand results with given mocks - * - */ - private function assertRand($min, $max) + public static function tearDownAfterClass(): void { + // Reset mocking global $phpMock; - $phpMock['rand'] = function($mMin, $mMax) use ($min, $max) { - $this->assertEquals($min, $mMin); - $this->assertEquals($max, $mMax); - return 1; - }; + $phpMock = []; + + parent::tearDownAfterClass(); } /** - * Replaces rand results with given mocks + * Replaces random_int results with given mocks * */ private function assertRandomInt($min, $max) { global $phpMock; - $phpMock['random_int'] = function($mMin, $mMax) use ($min, $max) { - $this->assertEquals($min, $mMin); - $this->assertEquals($max, $mMax); + $phpMock['random_int'] = function ($mMin, $mMax) use ($min, $max) { + self::assertEquals($min, $mMin); + self::assertEquals($max, $mMax); return 1; }; } public function testRandomDigitsRandomInt() { - $this->assertRandomInt(0, 9); + self::assertRandomInt(0, 9); $test = Crypto::randomDigits(1); - $this->assertEquals(1, strlen($test)); - $this->assertEquals(1, $test); + self::assertEquals(1, strlen($test)); + self::assertEquals(1, $test); $test = Crypto::randomDigits(8); - $this->assertEquals(8, strlen($test)); - $this->assertEquals(11111111, $test); + self::assertEquals(8, strlen($test)); + self::assertEquals(11111111, $test); + } + + public function dataRsa(): array + { + return [ + 'diaspora' => [ + 'key' => file_get_contents(__DIR__ . '/../../datasets/crypto/rsa/diaspora-public-rsa-base64'), + 'expected' => file_get_contents(__DIR__ . '/../../datasets/crypto/rsa/diaspora-public-pem'), + ], + ]; + } + + /** + * @dataProvider dataRsa + */ + public function testPubRsaToMe(string $key, string $expected) + { + self::assertEquals($expected, Crypto::rsaToPem(base64_decode($key))); + } + + + public function dataPEM() + { + return [ + 'diaspora' => [ + 'key' => file_get_contents(__DIR__ . '/../../datasets/crypto/rsa/diaspora-public-pem'), + ], + ]; } } @@ -58,7 +103,6 @@ function random_int($min, $max) { global $phpMock; if (isset($phpMock['random_int'])) { - $result = call_user_func_array($phpMock['random_int'], func_get_args()); - return $result; + return call_user_func_array($phpMock['random_int'], func_get_args()); } }