Passed
Push — master ( 3ec68d...5391c3 )
by Alexander
03:20
created

TokenValidatorTest::testCustomMessage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Wearesho\Yii\Tests\Validators;
4
5
use Carbon\CarbonInterval;
6
7
use Wearesho\Delivery;
8
9
use Horat1us\Yii\Exceptions\ModelException;
10
use Wearesho\Yii\Interfaces\TokenRepositoryInterface;
11
use Wearesho\Yii\Repositories\TokenRepository;
12
13
use Wearesho\Yii\Tests\AbstractTestCase;
14
use Wearesho\Yii\Tests\Mocks\TokenCheckModelMock;
15
use Wearesho\Yii\Tests\Mocks\TokenGeneratorMock;
16
use Wearesho\Yii\Tests\Mocks\TokenRecordMock;
17
use Wearesho\Yii\Tests\Mocks\TokenRepositoryConfigMock;
18
19
/**
20
 * Class TokenValidatorTest
21
 * @package Wearesho\Yii\Tests\Validators
22
 *
23
 * @internal
24
 */
25
class TokenValidatorTest extends AbstractTestCase
26
{
27
    /** @var  TokenRepository */
28
    protected $repository;
29
30
    /** @var  TokenCheckModelMock */
31
    protected $model;
32
33
    protected function setUp()
34
    {
35
        parent::setUp();
36
        $this->repository = new TokenRepository(
37
            new TokenRecordMock(),
38
            $config = new TokenRepositoryConfigMock,
39
            new TokenGeneratorMock,
40
            new Delivery\ServiceMock()
41
        );
42
        $config->setExpirePeriod(CarbonInterval::years(5));
43
44
        \Yii::$container->set(
45
            TokenRepositoryInterface::class,
46
            function () {
47
                return $this->repository;
48
            }
49
        );
50
51
        $this->model = new TokenCheckModelMock;
52
53
        $token = new TokenRecordMock([
54
            'id' => 1,
55
            'recipient' => "380500000001",
56
            'token' => "000001",
57
        ]);
58
        ModelException::saveOrThrow($token);
59
    }
60
61
    public function testInvalidRecipient()
62
    {
63
        $this->model->recipient = "380500000000";
64
        $this->model->token = "000001";
65
        $this->model->validate();
66
67
        $this->assertTrue(
68
            $this->model->hasErrors('token')
69
        );
70
        $this->assertFalse(
71
            $this->model->hasErrors('recipient')
72
        );
73
    }
74
75
    public function testInvalidToken()
76
    {
77
        $this->model->recipient = "380500000001";
78
        $this->model->token = "111111";
79
        $this->model->validate();
80
81
        $this->assertTrue(
82
            $this->model->hasErrors('token')
83
        );
84
        $this->assertFalse(
85
            $this->model->hasErrors('recipient')
86
        );
87
        $this->assertEquals('Token is invalid.', $this->model->errors['token'][0]);
88
    }
89
90
    public function testValid()
91
    {
92
        $this->model->recipient = "380500000001";
93
        $this->model->token = "000001";
94
        $this->model->validate();
95
96
        $this->assertFalse($this->model->hasErrors());
97
    }
98
99
    public function testCustomMessage(): void
100
    {
101
        $this->model->errorMessage = 'invalid token';
102
        $this->model->recipient = "380500000001";
103
        $this->model->token = "111111";
104
        $this->model->validate();
105
106
        $this->assertEquals('invalid token', $this->model->errors['token'][0]);
107
    }
108
}
109