Skip to content

Commit 9a7697b

Browse files
committed
More test to RoleController
1 parent 70825e5 commit 9a7697b

3 files changed

Lines changed: 235 additions & 4 deletions

File tree

app/sprinkles/admin/schema/requests/role/edit-field.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ slug:
1717
message: VALIDATE.LENGTH_RANGE
1818
transformations:
1919
- trim
20-
description:
20+
description:
2121
permissions:
2222
validators:
2323
array:

app/sprinkles/admin/tests/Integration/Controller/RoleControllerGuestTest.php

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,10 @@
1010

1111
namespace UserFrosting\Sprinkle\Admin\Tests\Integration\Controller;
1212

13-
use UserFrosting\Sprinkle\Account\Database\Models\Role;
14-
use UserFrosting\Sprinkle\Account\Database\Models\User;
1513
use UserFrosting\Sprinkle\Account\Tests\withTestUser;
1614
use UserFrosting\Sprinkle\Admin\Controller\RoleController;
1715
use UserFrosting\Sprinkle\Core\Tests\TestDatabase;
1816
use UserFrosting\Sprinkle\Core\Tests\withController;
19-
use UserFrosting\Support\Exception\BadRequestException;
2017
use UserFrosting\Support\Exception\ForbiddenException;
2118
use UserFrosting\Support\Exception\NotFoundException;
2219
use UserFrosting\Sprinkle\Core\Tests\RefreshDatabase;
@@ -166,6 +163,40 @@ public function testGetModalEditWithNoPermission(RoleController $controller)
166163
$controller->getModalEdit($request, $this->getResponse(), []);
167164
}
168165

166+
/**
167+
* @depends testControllerConstructorWithUser
168+
* @param RoleController $controller
169+
*/
170+
public function testGetModalEditPermissionsWithNoPermission(RoleController $controller)
171+
{
172+
$request = $this->getRequest()->withQueryParams([
173+
'slug' => 'foo'
174+
]);
175+
176+
$this->expectException(ForbiddenException::class);
177+
$controller->getModalEditPermissions($request, $this->getResponse(), []);
178+
}
179+
180+
/**
181+
* @depends testControllerConstructorWithUser
182+
* @param RoleController $controller
183+
*/
184+
public function testGetPermissionsWithNoPermission(RoleController $controller)
185+
{
186+
$this->expectException(ForbiddenException::class);
187+
$controller->getPermissions($this->getRequest(), $this->getResponse(), ['slug' => 'foo']);
188+
}
189+
190+
/**
191+
* @depends testControllerConstructorWithUser
192+
* @param RoleController $controller
193+
*/
194+
public function testUpdateFieldWithNoPermission(RoleController $controller)
195+
{
196+
$this->expectException(ForbiddenException::class);
197+
$controller->updateField($this->getRequest(), $this->getResponse(), ['slug' => 'foo', 'field' => 'name']);
198+
}
199+
169200
/**
170201
* @depends testControllerConstructorWithUser
171202
* @param RoleController $controller

app/sprinkles/admin/tests/Integration/Controller/RoleControllerTest.php

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
namespace UserFrosting\Sprinkle\Admin\Tests\Integration\Controller;
1212

13+
use League\FactoryMuffin\Faker\Facade as Faker;
1314
use UserFrosting\Sprinkle\Account\Database\Models\Role;
1415
use UserFrosting\Sprinkle\Account\Database\Models\User;
1516
use UserFrosting\Sprinkle\Account\Tests\withTestUser;
@@ -667,6 +668,205 @@ public function testUpdateInfoWithDuplicateName(RoleController $controller)
667668
$this->assertSame('danger', end($messages)['type']);
668669
}
669670

671+
/**
672+
* @depends testControllerConstructorWithUser
673+
* @param RoleController $controller
674+
*/
675+
public function testGetModalEditPermissions(RoleController $controller)
676+
{
677+
$request = $this->getRequest()->withQueryParams([
678+
'slug' => 'foo'
679+
]);
680+
681+
// Get controller stuff
682+
$result = $controller->getModalEditPermissions($request, $this->getResponse(), []);
683+
$this->assertSame($result->getStatusCode(), 200);
684+
$this->assertNotSame('', (string) $result->getBody());
685+
}
686+
687+
/**
688+
* @depends testControllerConstructorWithUser
689+
* @depends testGetModalEditPermissions
690+
* @param RoleController $controller
691+
*/
692+
public function testGetModalEditPermissionsWithNoGetData(RoleController $controller)
693+
{
694+
$this->expectException(BadRequestException::class);
695+
$controller->getModalEditPermissions($this->getRequest(), $this->getResponse(), []);
696+
}
697+
698+
/**
699+
* @depends testControllerConstructorWithUser
700+
* @depends testGetModalEditPermissions
701+
* @param RoleController $controller
702+
*/
703+
public function testGetModalEditPermissionsWithNonExistingRole(RoleController $controller)
704+
{
705+
$request = $this->getRequest()->withQueryParams([
706+
'slug' => 'foobar'
707+
]);
708+
709+
$this->expectException(NotFoundException::class);
710+
$controller->getModalEditPermissions($request, $this->getResponse(), []);
711+
}
712+
713+
/**
714+
* @depends testControllerConstructorWithUser
715+
* @param RoleController $controller
716+
*/
717+
public function testGetPermissions(RoleController $controller)
718+
{
719+
$result = $controller->getPermissions($this->getRequest(), $this->getResponse(), ['slug' => 'foo']);
720+
$this->assertSame($result->getStatusCode(), 200);
721+
$this->assertJson((string) $result->getBody());
722+
$this->assertNotEmpty((string) $result->getBody());
723+
}
724+
725+
/**
726+
* @depends testControllerConstructorWithUser
727+
* @depends testGetPermissions
728+
* @param RoleController $controller
729+
*/
730+
public function testGetPermissionsWithNoArgs(RoleController $controller)
731+
{
732+
$this->expectException(BadRequestException::class);
733+
$controller->getPermissions($this->getRequest(), $this->getResponse(), []);
734+
}
735+
736+
/**
737+
* @depends testControllerConstructorWithUser
738+
* @depends testGetPermissions
739+
* @param RoleController $controller
740+
*/
741+
public function testGetPermissionsWithNonExistingRole(RoleController $controller)
742+
{
743+
$this->expectException(NotFoundException::class);
744+
$controller->getPermissions($this->getRequest(), $this->getResponse(), ['slug' => 'foobar']);
745+
}
746+
747+
/**
748+
* @depends testControllerConstructorWithUser
749+
* @param RoleController $controller
750+
*/
751+
public function testupdateField(RoleController $controller)
752+
{
753+
// Create a role
754+
$fm = $this->ci->factory;
755+
$role = $fm->create('UserFrosting\Sprinkle\Account\Database\Models\Role', [
756+
'name' => 'bar123',
757+
'slug' => 'foo123',
758+
]);
759+
760+
// Set post data
761+
$data = [
762+
'value' => 'foo123'
763+
];
764+
$request = $this->getRequest()->withParsedBody($data);
765+
766+
// Get controller stuff
767+
$result = $controller->updateField($request, $this->getResponse(), ['slug' => $role->slug, 'field' => 'name']);
768+
$this->assertSame($result->getStatusCode(), 200);
769+
$this->assertJson((string) $result->getBody());
770+
$this->assertSame('[]', (string) $result->getBody());
771+
772+
// Make sure role was update
773+
$editedRole = Role::where('slug', 'foo123')->first();
774+
$this->assertSame('foo123', $editedRole->name);
775+
$this->assertNotSame('bar123', $editedRole->name);
776+
$this->assertSame($role->description, $editedRole->description);
777+
778+
// Test message
779+
/** @var \UserFrosting\Sprinkle\Core\Alert\AlertStream $ms */
780+
$ms = $this->ci->alerts;
781+
$messages = $ms->getAndClearMessages();
782+
$this->assertSame('success', end($messages)['type']);
783+
}
784+
785+
/**
786+
* @depends testControllerConstructorWithUser
787+
* @param RoleController $controller
788+
*/
789+
public function testupdateFieldWithNonExistingRole(RoleController $controller)
790+
{
791+
$this->expectException(NotFoundException::class);
792+
$controller->updateField($this->getRequest(), $this->getResponse(), ['slug' => 'foobar']);
793+
}
794+
795+
/**
796+
* @depends testControllerConstructorWithUser
797+
* @param RoleController $controller
798+
*/
799+
public function testupdateFieldNoValue(RoleController $controller)
800+
{
801+
$this->expectException(BadRequestException::class);
802+
$controller->updateField($this->getRequest(), $this->getResponse(), ['slug' => 'foo', 'field' => 'name']);
803+
}
804+
805+
/**
806+
* @depends testControllerConstructorWithUser
807+
* @depends testupdateField
808+
* @param RoleController $controller
809+
*/
810+
public function testupdateFieldWithFailedValidation(RoleController $controller)
811+
{
812+
// Create a string wich will be too long for validation
813+
$faker = Faker::getGenerator();
814+
$value = $faker->text(500);
815+
816+
// Set post data
817+
$data = [
818+
'value' => $value
819+
];
820+
$request = $this->getRequest()->withParsedBody($data);
821+
822+
// Get controller stuff
823+
$this->expectException(BadRequestException::class);
824+
$controller->updateField($request, $this->getResponse(), ['slug' => 'foo', 'field' => 'name']);
825+
}
826+
827+
/**
828+
* @depends testControllerConstructorWithUser
829+
* @depends testupdateField
830+
* @param RoleController $controller
831+
*/
832+
public function testupdateFieldWithPermissionField(RoleController $controller)
833+
{
834+
// Create a role
835+
$fm = $this->ci->factory;
836+
$permission = $fm->create('UserFrosting\Sprinkle\Account\Database\Models\Permission');
837+
838+
// Expected input :
839+
// value[0][permission_id]: 2
840+
// value[1][permission_id]: 9
841+
842+
// Set post data
843+
$data = [
844+
'value' => [['permission_id' => $permission->id]]
845+
];
846+
$request = $this->getRequest()->withParsedBody($data);
847+
848+
// Check the default role has how many permisions
849+
$role = Role::where('slug', 'foo')->first();
850+
$this->assertEmpty($role->permissions);
851+
852+
// Get controller stuff
853+
$result = $controller->updateField($request, $this->getResponse(), ['slug' => 'foo', 'field' => 'permissions']);
854+
$this->assertSame($result->getStatusCode(), 200);
855+
$this->assertJson((string) $result->getBody());
856+
$this->assertSame('[]', (string) $result->getBody());
857+
858+
// Make sure role permisions was updated
859+
$role = Role::where('slug', 'foo')->first();
860+
$this->assertCount(1, $role->permissions);
861+
862+
// Test message
863+
/** @var \UserFrosting\Sprinkle\Core\Alert\AlertStream $ms */
864+
$ms = $this->ci->alerts;
865+
$messages = $ms->getAndClearMessages();
866+
$this->assertSame('success', end($messages)['type']);
867+
}
868+
869+
670870
/**
671871
* @return RoleController
672872
*/

0 commit comments

Comments
 (0)