diff --git a/src/League/OAuth2/Server/Util/KeyAlgorithm/DefaultAlgorithm.php b/src/League/OAuth2/Server/Util/KeyAlgorithm/DefaultAlgorithm.php new file mode 100644 index 00000000..9fc6c653 --- /dev/null +++ b/src/League/OAuth2/Server/Util/KeyAlgorithm/DefaultAlgorithm.php @@ -0,0 +1,35 @@ +make($len); + } - // We want to stop execution if the key fails because, well, that is bad. - if ($bytes === false || $strong === false) { - // @codeCoverageIgnoreStart - throw new \Exception('Error Generating Key'); - // @codeCoverageIgnoreEnd + /** + * @param KeyAlgorithmInterface $algorithm + */ + public static function setAlgorithm(KeyAlgorithmInterface $algorithm) + { + self::$algorithm = $algorithm; + } + + /** + * @return KeyAlgorithmInterface + */ + public static function getAlgorithm() + { + if (!self::$algorithm) { + + self::$algorithm = new DefaultAlgorithm(); } - return substr(str_replace(array('/', '+', '='), '', base64_encode($bytes)), 0, $len); + return self::$algorithm; } } \ No newline at end of file diff --git a/tests/util/SecureKeyTest.php b/tests/util/SecureKeyTest.php index 3d60f6db..2ce8659e 100644 --- a/tests/util/SecureKeyTest.php +++ b/tests/util/SecureKeyTest.php @@ -12,4 +12,21 @@ class Secure_Key_test extends PHPUnit_Framework_TestCase $this->assertTrue($v1 !== $v2); $this->assertEquals(50, strlen($v3)); } + + public function test_make_with_different_algorithm() + { + $algorithm = $this->getMock('League\OAuth2\Server\Util\KeyAlgorithm\KeyAlgorithmInterface'); + + $result = 'dasdsdsaads'; + $algorithm + ->expects($this->once()) + ->method('make') + ->with(11) + ->will($this->returnValue($result)) + ; + + League\OAuth2\Server\Util\SecureKey::setAlgorithm($algorithm); + $this->assertSame($algorithm, League\OAuth2\Server\Util\SecureKey::getAlgorithm()); + $this->assertEquals($result, League\OAuth2\Server\Util\SecureKey::make(11)); + } } \ No newline at end of file diff --git a/tests/util/key_algorithm/DefaultAlgorithmTest.php b/tests/util/key_algorithm/DefaultAlgorithmTest.php new file mode 100644 index 00000000..2e78ea1b --- /dev/null +++ b/tests/util/key_algorithm/DefaultAlgorithmTest.php @@ -0,0 +1,22 @@ +make(); + $v2 = $algorithm->make(); + $v3 = $algorithm->make(50); + + $this->assertEquals(40, strlen($v1)); + $this->assertTrue($v1 !== $v2); + $this->assertEquals(50, strlen($v3)); + } +} \ No newline at end of file