1+ <?php
2+
3+ namespace Lomkit \Rest \Tests \Feature \Controllers ;
4+
5+ use Illuminate \Support \Carbon ;
6+ use Illuminate \Support \Facades \Gate ;
7+ use Lomkit \Rest \Http \Requests \RestRequest ;
8+ use Lomkit \Rest \Tests \Feature \TestCase ;
9+ use Lomkit \Rest \Tests \Support \Database \Factories \BelongsToManyRelationFactory ;
10+ use Lomkit \Rest \Tests \Support \Database \Factories \BelongsToRelationFactory ;
11+ use Lomkit \Rest \Tests \Support \Database \Factories \HasManyRelationFactory ;
12+ use Lomkit \Rest \Tests \Support \Database \Factories \HasOneRelationFactory ;
13+ use Lomkit \Rest \Tests \Support \Database \Factories \ModelFactory ;
14+ use Lomkit \Rest \Tests \Support \Database \Factories \SoftDeletedModelFactory ;
15+ use Lomkit \Rest \Tests \Support \Models \BelongsToManyRelation ;
16+ use Lomkit \Rest \Tests \Support \Models \BelongsToRelation ;
17+ use Lomkit \Rest \Tests \Support \Models \Model ;
18+ use Lomkit \Rest \Tests \Support \Models \SoftDeletedModel ;
19+ use Lomkit \Rest \Tests \Support \Policies \CreatePolicy ;
20+ use Lomkit \Rest \Tests \Support \Policies \DeletePolicy ;
21+ use Lomkit \Rest \Tests \Support \Policies \ForceDeletePolicy ;
22+ use Lomkit \Rest \Tests \Support \Policies \GreenPolicy ;
23+ use Lomkit \Rest \Tests \Support \Policies \RedPolicy ;
24+ use Lomkit \Rest \Tests \Support \Policies \RestorePolicy ;
25+ use Lomkit \Rest \Tests \Support \Policies \UpdatePolicy ;
26+ use Lomkit \Rest \Tests \Support \Policies \ViewPolicy ;
27+ use Lomkit \Rest \Tests \Support \Rest \Resources \AutomaticGatingResource ;
28+ use Lomkit \Rest \Tests \Support \Rest \Resources \BelongsToManyResource ;
29+ use Lomkit \Rest \Tests \Support \Rest \Resources \BelongsToResource ;
30+ use Lomkit \Rest \Tests \Support \Rest \Resources \HasManyResource ;
31+ use Lomkit \Rest \Tests \Support \Rest \Resources \HasOneResource ;
32+ use Lomkit \Rest \Tests \Support \Rest \Resources \ModelResource ;
33+ use Lomkit \Rest \Tests \Support \Rest \Resources \NoAuthorizationResource ;
34+ use Lomkit \Rest \Tests \Support \Rest \Resources \NoExposedFieldsResource ;
35+ use Lomkit \Rest \Tests \Support \Rest \Resources \SoftDeletedModelResource ;
36+
37+ class NoAuthorizationTest extends TestCase
38+ {
39+ public function test_searching_with_no_authorizations (): void
40+ {
41+ $ model = ModelFactory::new ()
42+ ->create ();
43+
44+ Gate::policy (Model::class, RedPolicy::class);
45+
46+ $ response = $ this ->post (
47+ '/api/no-authorization/search ' ,
48+ [],
49+ ['Accept ' => 'application/json ' ]
50+ );
51+
52+ $ this ->assertResourcePaginated (
53+ $ response ,
54+ [$ model ],
55+ new NoAuthorizationResource
56+ );
57+ }
58+
59+ public function test_mutating_with_no_authorizations (): void
60+ {
61+ $ modelToCreate = ModelFactory::new ()->makeOne ();
62+
63+ Gate::policy (Model::class, RedPolicy::class);
64+
65+ $ response = $ this ->post (
66+ '/api/no-authorization/mutate ' ,
67+ [
68+ 'mutate ' => [
69+ [
70+ 'operation ' => 'create ' ,
71+ 'attributes ' => [
72+ 'name ' => $ modelToCreate ->name ,
73+ 'number ' => $ modelToCreate ->number
74+ ]
75+ ],
76+ ],
77+ ],
78+ ['Accept ' => 'application/json ' ]
79+ );
80+
81+ $ this ->assertMutatedResponse (
82+ $ response ,
83+ [$ modelToCreate ],
84+ );
85+ }
86+
87+ public function test_deleting_with_no_authorizations (): void
88+ {
89+ $ model = ModelFactory::new ()->count (1 )->createOne ();
90+
91+ Gate::policy (Model::class, RedPolicy::class);
92+
93+ $ response = $ this ->delete (
94+ '/api/no-authorization ' ,
95+ [
96+ 'resources ' => [$ model ->getKey ()]
97+ ],
98+ ['Accept ' => 'application/json ' ]
99+ );
100+
101+ $ this ->assertResourceModel ($ response , [$ model ], new ModelResource );
102+ $ this ->assertDatabaseMissing ('models ' , $ model ->only ('id ' ));
103+ }
104+ }
0 commit comments