| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | 
							- <?php
 
- class ElggCryptoTest extends \PHPUnit_Framework_TestCase {
 
- 	/**
 
- 	 * @var PHPUnit_Framework_MockObject_MockObject
 
- 	 */
 
- 	protected $stub;
 
- 	/**
 
- 	 * @see ElggCrypto
 
- 	 * @see ElggCrypto::getRandomBytes
 
- 	 */
 
- 	protected function setUp() {
 
- 		$this->stub = $this->getMockBuilder('\ElggCrypto')
 
- 			->setMethods(array('getRandomBytes'))
 
- 			->getMock();
 
- 		$this->stub->expects($this->any())
 
- 			->method('getRandomBytes')
 
- 			->will($this->returnCallback(array($this, 'mock_getRandomBytes')));
 
- 	}
 
- 	function mock_getRandomBytes($length) {
 
- 		mt_srand(1);
 
- 		$bytes = '';
 
- 		for ($i = 0; $i < $length; $i++) {
 
- 			$bytes .= chr(mt_rand(0, 254));
 
- 		}
 
- 		return $bytes;
 
- 	}
 
- 	function provider() {
 
- 		return array(
 
- 			array(32, null, 'kwG37f3ds_7awuiaL52mVWXud9dqT1GF'),
 
- 			array(32, \ElggCrypto::CHARS_HEX, '9301b7edfdddb3fedac2e89a2f9da655'),
 
- 			array(32, \ElggCrypto::CHARS_PASSWORD, 'kl4lmjwyrpyh6rpqct3rkd9zvxwvqww8'),
 
- 			array(32, "0123456789", "78181215379307389761767024720714"),
 
- 		);
 
- 	}
 
- 	/**
 
- 	 * @dataProvider provider
 
- 	 */
 
- 	function testGetRandomString($length, $chars, $expected) {
 
- 		$this->assertSame($expected, $this->stub->getRandomString($length, $chars));
 
- 	}
 
- 	function testGeneratesMacInBase64Url() {
 
- 		$crypto = new ElggCrypto();
 
- 		$key = 'a very bad key';
 
- 		$data = '1';
 
- 		$expected = 'nL0lgXrVWgGK0Cmr9_PjqQcR2_PzuAHH114AsPZk-AM';
 
- 		$algo = 'sha256';
 
- 		$this->assertEquals($expected, $crypto->getHmac($data, $algo, $key)->getToken());
 
- 	}
 
- 	function testStringCastAffectsMacs() {
 
- 		$crypto = new ElggCrypto();
 
- 		$key = 'a very bad key';
 
- 		$t1 = $crypto->getHmac(1234, 'sha256', $key)->getToken();
 
- 		$t2 = $crypto->getHmac('1234', 'sha256', $key)->getToken();
 
- 		$this->assertNotEquals($t1, $t2);
 
- 	}
 
- 	function testMacAlteredByVaryingData() {
 
- 		$crypto = new ElggCrypto();
 
- 		$key = 'a very bad key';
 
- 		$t1 = $crypto->getHmac('1234', 'sha256', $key)->getToken();
 
- 		$t2 = $crypto->getHmac('1235', 'sha256', $key)->getToken();
 
- 		$this->assertNotEquals($t1, $t2);
 
- 	}
 
- 	function testMacAlteredByVaryingKey() {
 
- 		$crypto = new ElggCrypto();
 
- 		$key1 = 'a very bad key';
 
- 		$key2 = 'b very bad key';
 
- 		$t1 = $crypto->getHmac('1234', 'sha256', $key1)->getToken();
 
- 		$t2 = $crypto->getHmac('1234', 'sha256', $key2)->getToken();
 
- 		$this->assertNotEquals($t1, $t2);
 
- 	}
 
- 	function testCanAcceptDataAsArray() {
 
- 		$crypto = new ElggCrypto();
 
- 		$key = 'a very bad key';
 
- 		$token = $crypto->getHmac([12, 34], 'sha256', $key)->getToken();
 
- 		$matches = $crypto->getHmac([12, 34], 'sha256', $key)->matchesToken($token);
 
- 		$this->assertTrue($matches);
 
- 	}
 
- 	function testMacAlteredByArrayModification() {
 
- 		$crypto = new ElggCrypto();
 
- 		$key = 'a very bad key';
 
- 		$t1 = $crypto->getHmac([12, 34], 'sha256', $key)->getToken();
 
- 		$t2 = $crypto->getHmac([123, 4], 'sha256', $key)->getToken();
 
- 		$this->assertNotEquals($t1, $t2);
 
- 	}
 
- 	function testMacAlteredByArrayTypeModification() {
 
- 		$crypto = new ElggCrypto();
 
- 		$key = 'a very bad key';
 
- 		$t1 = $crypto->getHmac([12, 34], 'sha256', $key)->getToken();
 
- 		$t2 = $crypto->getHmac([12, '34'], 'sha256', $key)->getToken();
 
- 		$this->assertNotEquals($t1, $t2);
 
- 	}
 
- }
 
 
  |