/ tests / Feature / User / GenerateGpgTest.php
GenerateGpgTest.php
 1  <?php
 2  
 3  namespace Tests\Feature\User;
 4  
 5  use App\Http\Services\GpgService;
 6  use App\Models\User;
 7  use Illuminate\Foundation\Testing\RefreshDatabase;
 8  use Illuminate\Foundation\Testing\WithFaker;
 9  use Livewire\Livewire;
10  use Tests\TestCase;
11  
12  class GenerateGpgTest extends TestCase
13  {
14  
15      public function test_can_generate_all_gpg(){
16          $this->actingAs($this->getAdminUser());
17          $component = Livewire::test('users.index');
18          $component->call('generateAllGpg');
19  //        $this->checkSuccess($component, 'users.notifications.generate_all_gpg.success.title', 'users.notifications.generate_all_gpg.success.message');
20          foreach (User::all() as $user) {
21              $this->assertNotNull($user->activeKey);
22          }
23  
24      }
25  
26      public function test_cannot_generate_all_gpg_with_worker_permission(){
27          $this->actingAs($this->getWorkerUser());
28          $component = Livewire::test('users.index')
29          ->assertForbidden();
30  
31      }
32  
33      public function test_can_generate_user_gpg(){
34          $this->actingAs($this->getAdminUser());
35          $user = User::factory()->create();
36          $component = Livewire::test('users.view', ['user' => $user]);
37          $component->call('generateGpgKey');
38          $passphrase = $component->get('passphrase');
39          $user->refresh();
40          $component->assertDispatchedBrowserEvent('wireui:dialog', [
41              'options' => [
42                  'icon' => 'info',
43                  'title' => __('settings.gpg.actions.passphrase.title'),
44                  'description' => __('settings.gpg.actions.passphrase.description', ['passphrase' => $user->activeKey->key_passphrase]),
45              ],
46              'componentId' => $component->id,
47          ]);
48          $this->assertNotNull($user->activeKey);
49      }
50  
51      public function test_can_see_generate_gpg_button(){
52          $this->actingAs($this->getAdminUser());
53          $user = User::factory()->create();
54          $component = Livewire::test('users.view', ['user' => $user]);
55          $component->assertSee(__('users.panel.title.generate_gpg'));
56      }
57  
58      public function test_can_download_public_key(){
59          $this->actingAs($this->getAdminUser());
60          $user = User::factory()->create();
61          $gpgService = new GpgService();
62          $gpgService->generateUserKey($user);
63          $component = Livewire::test('users.view', ['user' => $user]);
64          $component->call('downloadPublicGpgKey')
65              ->assertFileDownloaded();
66      }
67  
68      public function test_user_can_download_his_private_key(){
69          $this->actingAs($this->getAdminUser());
70          $gpgService = new GpgService();
71          $gpgService->generateUserKey($this->getAdminUser());
72          $component = Livewire::test('users.view', ['user' => $this->getAdminUser()]);
73          $component->call('downloadPrivateGpgKey')
74              ->assertFileDownloaded();
75      }
76  
77  
78      public function test_another_user_cannot_download_private_key(){
79          $this->actingAs($this->getAdminUser());
80          $user = User::factory()->create();
81          $gpgService = new GpgService();
82          $gpgService->generateUserKey($user);
83          $component = Livewire::test('users.view', ['user' => $user]);
84          $component->call('downloadPrivateGpgKey');
85          $component->assertForbidden();
86      }
87  
88  }