123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- <?php
- namespace Dcat\Admin\Tests\Feature;
- use Dcat\Admin\Models\Administrator;
- use Dcat\Admin\Models\Permission;
- use Dcat\Admin\Models\Role;
- use Dcat\Admin\Tests\TestCase;
- /**
- * @group permissions
- */
- class PermissionsTest extends TestCase
- {
- public function testPermissionsIndex()
- {
- $this->assertTrue(Administrator::first()->isAdministrator());
- $this->visit('admin/auth/permissions')
- ->see('Permissions');
- }
- public function testAddAndDeletePermissions()
- {
- $this->visit('admin/auth/permissions/create')
- ->see('Permissions')
- ->submitForm('Submit', ['slug' => 'can-edit', 'name' => 'Can edit', 'http_path' => ['users/1/edit'], 'http_method' => ['GET']])
- ->seePageIs('admin/auth/permissions')
- ->visit('admin/auth/permissions/create')
- ->see('Permissions')
- ->submitForm('Submit', ['slug' => 'can-delete', 'name' => 'Can delete', 'http_path' => ['users/1'], 'http_method' => ['DELETE']])
- ->seePageIs('admin/auth/permissions')
- ->seeInDatabase(config('admin.database.permissions_table'), ['slug' => 'can-edit', 'name' => 'Can edit', 'http_path' => 'users/1/edit', 'http_method' => 'GET'])
- ->seeInDatabase(config('admin.database.permissions_table'), ['slug' => 'can-delete', 'name' => 'Can delete', 'http_path' => 'users/1', 'http_method' => 'DELETE'])
- ->assertEquals(8, Permission::count());
- $this->assertTrue(Administrator::first()->can('can-edit'));
- $this->assertTrue(Administrator::first()->can('can-delete'));
- $this->delete('admin/auth/permissions/7')
- ->assertEquals(7, Permission::count());
- $this->delete('admin/auth/permissions/8')
- ->assertEquals(6, Permission::count());
- }
- public function testAddPermissionToRole()
- {
- $this->visit('admin/auth/permissions/create')
- ->see('Permissions')
- ->submitForm('Submit', ['slug' => 'can-create', 'name' => 'Can Create', 'http_path' => ['users/create'], 'http_method' => ['GET']])
- ->seePageIs('admin/auth/permissions');
- $this->assertSame(7, Permission::count());
- $this->visit('admin/auth/roles/1/edit')
- ->see('Edit')
- ->submitForm('Submit', ['permissions' => 1])
- ->seePageIs('admin/auth/roles')
- ->seeInDatabase(config('admin.database.role_permissions_table'), ['role_id' => 1, 'permission_id' => 1]);
- }
- public function testPermissionThroughRole()
- {
- $user = [
- 'username' => 'Test',
- 'name' => 'Name',
- 'password' => '123456',
- 'password_confirmation' => '123456',
- ];
- // 1.add a user
- $this->visit('admin/auth/users/create')
- ->see('Create')
- ->submitForm('Submit', $user)
- ->seePageIs('admin/auth/users')
- ->seeInDatabase(config('admin.database.users_table'), ['username' => 'Test']);
- $this->assertFalse(Administrator::find(2)->isAdministrator());
- // 2.add a role
- $this->visit('admin/auth/roles/create')
- ->see('Roles')
- ->submitForm('Submit', ['slug' => 'developer', 'name' => 'Developer...'])
- ->seePageIs('admin/auth/roles')
- ->seeInDatabase(config('admin.database.roles_table'), ['slug' => 'developer', 'name' => 'Developer...'])
- ->assertEquals(2, Role::count());
- $this->assertFalse(Administrator::find(2)->isRole('developer'));
- // 3.assign role to user
- $this->visit('admin/auth/users/2/edit')
- ->see('Edit')
- ->submitForm('Submit', ['roles' => [2]])
- ->seePageIs('admin/auth/users')
- ->seeInDatabase(config('admin.database.role_users_table'), ['user_id' => 2, 'role_id' => 2]);
- $this->assertTrue(Administrator::find(2)->isRole('developer'));
- // 4.add a permission
- $this->visit('admin/auth/permissions/create')
- ->see('Permissions')
- ->submitForm('Submit', ['slug' => 'can-remove', 'name' => 'Can Remove', 'http_path' => ['users/*'], 'http_method' => ['DELETE']])
- ->seePageIs('admin/auth/permissions');
- $this->assertSame(7, Permission::count());
- $this->assertTrue(Administrator::find(2)->cannot('can-remove'));
- // 5.assign permission to role
- $this->visit('admin/auth/roles/2/edit')
- ->see('Edit')
- ->submitForm('Submit', ['permissions' => 7])
- ->seePageIs('admin/auth/roles')
- ->seeInDatabase(config('admin.database.role_permissions_table'), ['role_id' => 2, 'permission_id' => 7]);
- $this->assertTrue(Administrator::find(2)->can('can-remove'));
- }
- public function testEditPermission()
- {
- $this->visit('admin/auth/permissions/create')
- ->see('Permissions')
- ->submitForm('Submit', ['slug' => 'can-edit', 'name' => 'Can edit', 'http_path' => ['users/1/edit'], 'http_method' => ['GET']])
- ->seePageIs('admin/auth/permissions')
- ->seeInDatabase(config('admin.database.permissions_table'), ['slug' => 'can-edit'])
- ->seeInDatabase(config('admin.database.permissions_table'), ['name' => 'Can edit'])
- ->assertEquals(7, Permission::count());
- $this->visit('admin/auth/permissions/1/edit')
- ->see('Permissions')
- ->submitForm('Submit', ['slug' => 'can-delete'])
- ->seePageIs('admin/auth/permissions')
- ->seeInDatabase(config('admin.database.permissions_table'), ['slug' => 'can-delete'])
- ->assertEquals(7, Permission::count());
- }
- }
|