示例#1
0
 public function test_random_string()
 {
     // Make sure the generated string contains only human friendly characters and is 30 characters long
     $str = util::random_string(30);
     $this->assertTrue((bool) preg_match('/^([ABCDEFGHJKLMNPQRSTUVWXYZabcdefhjkmnprstuvwxyz23456789]{30})$/', $str));
     // Make sure the generated string is 30 characters long
     $str = util::random_string(30, false, true);
     $this->assertTrue(strlen($str) === 30, 'random_string produced an invalid length string');
     // Make sure the generated string is 120 characters long
     $str = util::random_string(120);
     $this->assertTrue(strlen($str) === 120, 'random_string produced an invalid length string');
     // Make sure the string doesn't contain duplicate letters
     $str = util::random_string(53, true, false, true);
     $this->assertTrue(strlen($str) === 53, 'random_string produced an invalid length string');
     $this->assertTrue(count(array_unique(str_split($str))) === strlen($str), 'random_string produced a string with duplicate characters');
     // Longer length than characters available
     try {
         $str = util::random_string(55, true, false, true);
         $this->assertTrue(false);
     } catch (Exception $e) {
         $this->assertTrue(true);
     }
     // Test secure variant
     $str = util::secure_random_string(16);
     $this->assertTrue(strlen($str) === 16);
     // Longer length than characters available
     try {
         $str = util::secure_random_string(0);
         $this->assertTrue(false);
     } catch (Exception $e) {
         $this->assertTrue(true);
     }
 }