157 lines
4.1 KiB
PHP
157 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace com\fwdekker\deathnotifier\validator;
|
|
|
|
use Monolog\Test\TestCase;
|
|
|
|
|
|
/**
|
|
* Unit tests for `Validator`.
|
|
*/
|
|
class ValidatorTest extends TestCase
|
|
{
|
|
function test_validate_inputs_returns_null_if_there_are_no_rule_sets(): void
|
|
{
|
|
$inputs = ["among" => "thief", "line" => "age"];
|
|
$rule_sets = [];
|
|
|
|
$is_valid = Validator::validate_inputs($inputs, $rule_sets);
|
|
|
|
$this->assertNull($is_valid);
|
|
}
|
|
|
|
function test_validate_inputs_returns_null_if_all_inputs_are_valid(): void
|
|
{
|
|
$inputs = ["among" => "thief", "line" => "age"];
|
|
$rule_sets = [
|
|
"among" => [new IsSetRule(), new IsNotBlankRule()],
|
|
"line" => [new IsSetRule()]
|
|
];
|
|
|
|
$is_valid = Validator::validate_inputs($inputs, $rule_sets);
|
|
|
|
$this->assertNull($is_valid);
|
|
}
|
|
|
|
function test_validate_inputs_considers_empty_rule_set_to_always_be_valid(): void
|
|
{
|
|
$inputs = ["among" => "thief", "line" => "age"];
|
|
$rule_sets = ["among" => []];
|
|
|
|
$is_valid = Validator::validate_inputs($inputs, $rule_sets);
|
|
|
|
$this->assertNull($is_valid);
|
|
}
|
|
|
|
function test_validate_inputs_returns_not_null_if_at_least_one_rule_is_violated(): void
|
|
{
|
|
$inputs = ["among" => "", "line" => "age"];
|
|
$rule_sets = [
|
|
"among" => [new IsSetRule(), new IsNotBlankRule()],
|
|
"line" => [new IsSetRule()]
|
|
];
|
|
|
|
$is_valid = Validator::validate_inputs($inputs, $rule_sets);
|
|
|
|
$this->assertNotNull($is_valid);
|
|
}
|
|
|
|
function test_validate_inputs_returns_first_violation_if_multiple_inputs_are_invalid(): void
|
|
{
|
|
$inputs = [];
|
|
$rule_sets = [
|
|
"among" => [new IsSetRule()],
|
|
"line" => [new IsSetRule()]
|
|
];
|
|
|
|
$is_valid = Validator::validate_inputs($inputs, $rule_sets);
|
|
|
|
$this->assertNotNull($is_valid);
|
|
$this->assertEquals("among", $is_valid->payload["target"]);
|
|
}
|
|
|
|
function test_validate_inputs_returns_first_violation_if_one_input_is_invalid_in_multiple_ways(): void
|
|
{
|
|
$inputs = ["line" => "age"];
|
|
$rule_sets = [
|
|
"among" => [new IsSetRule(), new IsNotBlankRule()],
|
|
"line" => [new IsSetRule()]
|
|
];
|
|
|
|
$is_valid = Validator::validate_inputs($inputs, $rule_sets);
|
|
|
|
$this->assertNotNull($is_valid);
|
|
$this->assertEquals("among", $is_valid->payload["target"]);
|
|
$this->assertEquals("Field 'among' required.", $is_valid->payload["message"]);
|
|
}
|
|
|
|
|
|
function test_validate_logged_in_returns_null_if_uuid_is_set(): void
|
|
{
|
|
$session = ["uuid" => "value"];
|
|
|
|
$is_valid = Validator::validate_logged_in($session);
|
|
|
|
$this->assertNull($is_valid);
|
|
}
|
|
|
|
function test_validate_logged_in_returns_not_null_if_uuid_is_not_set(): void
|
|
{
|
|
$session = [];
|
|
|
|
$is_valid = Validator::validate_logged_in($session);
|
|
|
|
$this->assertNotNull($is_valid);
|
|
}
|
|
|
|
|
|
function test_validate_logged_out_returns_not_null_if_uuid_is_set(): void
|
|
{
|
|
$session = ["uuid" => "value"];
|
|
|
|
$is_valid = Validator::validate_logged_out($session);
|
|
|
|
$this->assertNotNull($is_valid);
|
|
}
|
|
|
|
function test_validate_logged_out_returns_null_if_uuid_is_not_set(): void
|
|
{
|
|
$session = [];
|
|
|
|
$is_valid = Validator::validate_logged_out($session);
|
|
|
|
$this->assertNull($is_valid);
|
|
}
|
|
|
|
|
|
function test_validate_token_returns_null_if_token_equals_input(): void
|
|
{
|
|
$token = "meow";
|
|
$array = ["token" => $token];
|
|
|
|
$is_valid = Validator::validate_token($array, $token);
|
|
|
|
$this->assertNull($is_valid);
|
|
}
|
|
|
|
function test_validate_token_returns_not_null_if_token_is_not_set(): void
|
|
{
|
|
$token = "meow";
|
|
$array = [];
|
|
|
|
$is_valid = Validator::validate_token($array, $token);
|
|
|
|
$this->assertNotNull($is_valid);
|
|
}
|
|
|
|
function test_validate_token_returns_not_null_if_token_does_not_equal_input(): void
|
|
{
|
|
$token = "meow";
|
|
$array = ["token" => $token];
|
|
|
|
$is_valid = Validator::validate_token($array, "woof");
|
|
|
|
$this->assertNotNull($is_valid);
|
|
}
|
|
}
|