shell bypass 403
<?php
namespace Tests\YandexCheckout\Helpers;
use PHPUnit\Framework\TestCase;
use YandexCheckout\Helpers\Random;
class RandomTest extends TestCase
{
const COUNT = 10;
/**
* @dataProvider randomIntDataProvider
* @param int $min
* @param int $max
*/
public function testRandomInt($min, $max)
{
$expectedMin = $min;
if ($expectedMin === null) {
$expectedMin = 0;
}
$expectedMax = $max;
if ($expectedMax === null) {
$expectedMax = PHP_INT_MAX;
}
for ($i = 0; $i < self::COUNT; $i++) {
$value = Random::int($min, $max);
self::assertGreaterThanOrEqual($expectedMin, $value);
self::assertGreaterThanOrEqual($value, $expectedMax);
}
for ($i = 0; $i < self::COUNT; $i++) {
$value = Random::int($min, $max, false);
self::assertGreaterThanOrEqual($expectedMin, $value);
self::assertGreaterThanOrEqual($value, $expectedMax);
}
}
/**
* @dataProvider randomFloatDataProvider
* @param int $min
* @param int $max
*/
public function testRandomFloat($min, $max)
{
$expectedMin = $min;
if ($expectedMin === null) {
$expectedMin = 0.0;
}
$expectedMax = $max;
if ($expectedMax === null) {
$expectedMax = 1.0;
}
for ($i = 0; $i < self::COUNT; $i++) {
$value = Random::float($min, $max);
self::assertGreaterThanOrEqual($expectedMin, $value);
self::assertGreaterThanOrEqual($value, $expectedMax);
}
for ($i = 0; $i < self::COUNT; $i++) {
$value = Random::float($min, $max, false);
self::assertGreaterThanOrEqual($expectedMin, $value);
self::assertGreaterThanOrEqual($value, $expectedMax);
}
}
public function testRandomString()
{
$random = Random::str(10);
self::assertEquals(10, strlen($random));
for ($i = 0; $i < strlen($random); $i++) {
$charCode = ord($random[$i]);
self::assertGreaterThanOrEqual(32, $charCode);
self::assertGreaterThanOrEqual($charCode, 125);
}
$chars = '01';
$random = Random::str(100, $chars);
self::assertEquals(100, strlen($random));
for ($i = 0; $i < strlen($random); $i++) {
self::assertGreaterThanOrEqual(0, strpos($random[$i], $chars));
}
$chars = 'abcdef';
$random = Random::str(100, $chars);
self::assertEquals(100, strlen($random));
for ($i = 0; $i < strlen($random); $i++) {
self::assertGreaterThanOrEqual(0, strpos($random[$i], $chars));
}
$random = Random::str(1, 10);
self::assertGreaterThanOrEqual(1, strlen($random));
self::assertGreaterThanOrEqual(strlen($random), 10);
for ($i = 0; $i < strlen($random); $i++) {
$charCode = ord($random[$i]);
self::assertGreaterThanOrEqual(32, $charCode);
self::assertGreaterThanOrEqual($charCode, 125);
}
}
public function testRandomHexString()
{
$chars = '0123456789abcdef';
$random = Random::hex(1000);
self::assertEquals(1000, strlen($random));
for ($i = 0; $i < strlen($random); $i++) {
self::assertGreaterThanOrEqual(0, strpos($random[$i], $chars));
}
$random = Random::hex(1000, false);
self::assertEquals(1000, strlen($random));
for ($i = 0; $i < strlen($random); $i++) {
self::assertGreaterThanOrEqual(0, strpos($random[$i], $chars));
}
}
public function testRandomBytes()
{
$random = Random::bytes(10);
self::assertEquals(10, strlen($random));
$random = Random::bytes(10, false);
self::assertEquals(10, strlen($random));
}
public function testRandomValues()
{
$values = array('one', 'two', 'three');
$value = Random::value($values);
self::assertContains($value, $values);
$value = Random::value($values);
self::assertContains($value, $values);
$value = Random::value($values);
self::assertContains($value, $values);
$values = array('one');
$value = Random::value($values);
self::assertContains($value, $values);
$value = Random::value($values);
self::assertContains($value, $values);
$value = Random::value($values);
self::assertContains($value, $values);
}
public function randomIntDataProvider()
{
$result = array();
$result[] = array(null, null);
$result[] = array(null, 1);
$result[] = array(0, null);
for ($i = 0; $i < self::COUNT; $i++) {
$min = $i;
$max = $i + mt_rand(-100, 100);
if ($min < $max) {
$result[] = array($min, $max);
} else {
$result[] = array($max, $min);
}
}
return $result;
}
public function randomFloatDataProvider()
{
$result = array();
$result[] = array(null, null);
$result[] = array(null, 1);
$result[] = array(0, null);
for ($i = 0; $i < self::COUNT; $i++) {
$min = $i / 3.1415;
$max = $i + mt_rand(-100000, 1000000) / 3.141592;
if ($min < $max) {
$result[] = array($min, $max);
} else {
$result[] = array($max, $min);
}
}
return $result;
}
public function testRandomBool()
{
for ($i = 0; $i < 10; $i++) {
$value = Random::bool();
self::assertTrue(is_bool($value));
if ($value) {
self::assertTrue($value);
} else {
self::assertFalse($value);
}
}
}
}