| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 | 
							- <?php
 
- use Encore\Admin\Auth\Database\Administrator;
 
- use Encore\Admin\Auth\Database\Permission;
 
- use Encore\Admin\Auth\Database\Role;
 
- class PermissionsTest extends TestCase
 
- {
 
-     public function setUp()
 
-     {
 
-         parent::setUp();
 
-         $this->be(Administrator::first(), 'admin');
 
-     }
 
-     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(7, Permission::count());
 
-         $this->assertTrue(Administrator::first()->can('can-edit'));
 
-         $this->assertTrue(Administrator::first()->can('can-delete'));
 
-         $this->delete('admin/auth/permissions/6')
 
-             ->assertEquals(6, Permission::count());
 
-         $this->delete('admin/auth/permissions/7')
 
-             ->assertEquals(5, 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->assertEquals(6, 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 testAddPermissionToUser()
 
-     {
 
-         $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->assertEquals(6, Permission::count());
 
-         $this->visit('admin/auth/users/1/edit')
 
-             ->see('Edit')
 
-             ->submitForm('Submit', ['permissions' => [1], 'roles' => [1]])
 
-             ->seePageIs('admin/auth/users')
 
-             ->seeInDatabase(config('admin.database.user_permissions_table'), ['user_id' => 1, 'permission_id' => 1])
 
-             ->seeInDatabase(config('admin.database.role_users_table'), ['user_id' => 1, 'role_id' => 1]);
 
-     }
 
-     public function testAddUserAndAssignPermission()
 
-     {
 
-         $user = [
 
-             'username'              => 'Test',
 
-             'name'                  => 'Name',
 
-             'password'              => '123456',
 
-             'password_confirmation' => '123456',
 
-         ];
 
-         $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());
 
-         $this->visit('admin/auth/permissions/create')
 
-             ->see('Permissions')
 
-             ->submitForm('Submit', ['slug' => 'can-update', 'name' => 'Can Update', 'http_path' => 'users/*/edit', 'http_method' => ['GET']])
 
-             ->seePageIs('admin/auth/permissions');
 
-         $this->assertEquals(6, Permission::count());
 
-         $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->assertEquals(7, Permission::count());
 
-         $this->visit('admin/auth/users/2/edit')
 
-             ->see('Edit')
 
-             ->submitForm('Submit', ['permissions' => [6]])
 
-             ->seePageIs('admin/auth/users')
 
-             ->seeInDatabase(config('admin.database.user_permissions_table'), ['user_id' => 2, 'permission_id' => 6]);
 
-         $this->assertTrue(Administrator::find(2)->can('can-update'));
 
-         $this->assertTrue(Administrator::find(2)->cannot('can-remove'));
 
-         $this->visit('admin/auth/users/2/edit')
 
-             ->see('Edit')
 
-             ->submitForm('Submit', ['permissions' => [7]])
 
-             ->seePageIs('admin/auth/users')
 
-             ->seeInDatabase(config('admin.database.user_permissions_table'), ['user_id' => 2, 'permission_id' => 7]);
 
-         $this->assertTrue(Administrator::find(2)->can('can-remove'));
 
-         $this->visit('admin/auth/users/2/edit')
 
-             ->see('Edit')
 
-             ->submitForm('Submit', ['permissions' => []])
 
-             ->seePageIs('admin/auth/users')
 
-             ->missingFromDatabase(config('admin.database.user_permissions_table'), ['user_id' => 2, 'permission_id' => 6])
 
-             ->missingFromDatabase(config('admin.database.user_permissions_table'), ['user_id' => 2, 'permission_id' => 7]);
 
-         $this->assertTrue(Administrator::find(2)->cannot('can-update'));
 
-         $this->assertTrue(Administrator::find(2)->cannot('can-remove'));
 
-     }
 
-     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->assertEquals(6, 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' => [6]])
 
-             ->seePageIs('admin/auth/roles')
 
-             ->seeInDatabase(config('admin.database.role_permissions_table'), ['role_id' => 2, 'permission_id' => 6]);
 
-         $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(6, 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(6, Permission::count());
 
-     }
 
- }
 
 
  |