-
-
Notifications
You must be signed in to change notification settings - Fork 625
Expand file tree
/
Copy pathRoleTest.php
More file actions
180 lines (144 loc) · 5.47 KB
/
RoleTest.php
File metadata and controls
180 lines (144 loc) · 5.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<?php
namespace Tests\Auth;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Support\Collection;
use PHPUnit\Framework\Attributes\Test;
use Statamic\Auth\File\Role;
use Tests\TestCase;
class RoleTest extends TestCase
{
#[Test]
public function it_gets_and_sets_the_title()
{
$role = new Role;
$role->handle('testing');
$this->assertEquals('Testing', $role->title());
$return = $role->title('Test');
$this->assertEquals('Test', $role->title());
$this->assertEquals($role, $return);
}
#[Test]
public function it_gets_and_sets_the_handle()
{
$role = new Role;
$this->assertNull($role->handle());
$return = $role->handle('test');
$this->assertEquals('test', $role->handle());
$this->assertEquals($role, $return);
}
#[Test]
public function it_gets_and_adds_permissions()
{
$role = new Role;
$this->assertInstanceOf(Collection::class, $role->permissions());
$this->assertCount(0, $role->permissions());
$return = $role->addPermission('one');
$role->addPermission(['two', 'three']);
$this->assertInstanceOf(Collection::class, $role->permissions());
$this->assertEquals(['one', 'two', 'three'], $role->permissions()->all());
$this->assertEquals($role, $return);
}
#[Test]
public function it_sets_all_permissions()
{
$role = new Role;
$role->addPermission('one');
$return = $role->permissions(['two', 'three']);
$this->assertInstanceOf(Collection::class, $role->permissions());
$this->assertEquals(['two', 'three'], $role->permissions()->all());
$this->assertEquals($role, $return);
}
#[Test]
public function permissions_get_deduplicated()
{
$role = new Role;
$role->addPermission(['foo', 'bar']);
$role->addPermission(['foo', 'baz']);
$this->assertEquals(['foo', 'bar', 'baz'], $role->permissions()->all());
}
#[Test]
public function it_removes_permissions()
{
$role = (new Role)->addPermission(['foo', 'bar', 'baz', 'qux']);
$return = $role->removePermission('foo');
$role->removePermission(['baz', 'qux']);
$this->assertEquals(['bar'], $role->permissions()->all());
$this->assertEquals($role, $return);
}
#[Test]
public function it_checks_if_it_has_permission()
{
$role = (new Role)->addPermission('foo');
$this->assertTrue($role->hasPermission('foo'));
$this->assertFalse($role->hasPermission('bar'));
}
#[Test]
public function it_checks_if_it_has_super_permissions()
{
$superRole = (new Role)->addPermission('super');
$nonSuperRole = (new Role)->addPermission('something else');
$this->assertTrue($superRole->isSuper());
$this->assertFalse($nonSuperRole->isSuper());
}
#[Test]
public function it_can_be_saved()
{
$this->markTestIncomplete();
}
#[Test]
public function it_can_be_deleted()
{
$this->markTestIncomplete();
}
#[Test]
public function it_gets_evaluated_augmented_value_using_magic_property()
{
$role = (new Role)->handle('test')->title('Test');
$role
->toAugmentedCollection()
->each(fn ($value, $key) => $this->assertEquals($value->value(), $role->{$key}))
->each(fn ($value, $key) => $this->assertEquals($value->value(), $role[$key]));
}
#[Test]
public function it_is_arrayable()
{
$role = (new Role)->handle('test')->title('Test');
$this->assertInstanceOf(Arrayable::class, $role);
collect($role->toArray())
->each(fn ($value, $key) => $this->assertEquals($value, $role->{$key}))
->each(fn ($value, $key) => $this->assertEquals($value, $role[$key]));
}
#[Test]
public function it_checks_wildcard_permission_with_asterisk_at_beginning()
{
$role = (new Role)->addPermission('* blog entries');
$this->assertTrue($role->hasPermission('view blog entries'));
$this->assertTrue($role->hasPermission('edit blog entries'));
$this->assertTrue($role->hasPermission('delete blog entries'));
$this->assertFalse($role->hasPermission('view news entries'));
$this->assertFalse($role->hasPermission('view blog posts'));
}
#[Test]
public function it_checks_wildcard_permission_with_asterisk_in_middle()
{
$role = (new Role)->addPermission('view * entries');
$this->assertTrue($role->hasPermission('view blog entries'));
$this->assertTrue($role->hasPermission('view news entries'));
$this->assertTrue($role->hasPermission('view products entries'));
$this->assertFalse($role->hasPermission('edit blog entries'));
$this->assertFalse($role->hasPermission('view blog posts'));
}
#[Test]
public function it_checks_multiple_wildcard_permissions()
{
$role = (new Role)
->addPermission('view * entries')
->addPermission('* blog entries');
$this->assertTrue($role->hasPermission('view blog entries'));
$this->assertTrue($role->hasPermission('view news entries'));
$this->assertTrue($role->hasPermission('edit blog entries'));
$this->assertTrue($role->hasPermission('delete blog entries'));
$this->assertFalse($role->hasPermission('delete news entries'));
$this->assertFalse($role->hasPermission('view blog posts'));
}
}