ApiTokensTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace Tests\Feature\Api;
  3. use App\User;
  4. use Illuminate\Foundation\Testing\RefreshDatabase;
  5. use Illuminate\Support\Facades\DB;
  6. use Laravel\Passport\ClientRepository;
  7. use Laravel\Passport\Passport;
  8. use Tests\TestCase;
  9. class ApiTokensTest extends TestCase
  10. {
  11. use RefreshDatabase;
  12. protected $user;
  13. protected function setUp(): void
  14. {
  15. parent::setUp();
  16. $this->user = factory(User::class)->create();
  17. Passport::actingAs($this->user, []);
  18. $this->user->recipients()->save($this->user->defaultRecipient);
  19. $clientRepository = new ClientRepository();
  20. $client = $clientRepository->createPersonalAccessClient(
  21. null,
  22. 'Test Personal Access Client',
  23. config('app.url')
  24. );
  25. DB::table('oauth_personal_access_clients')->insert([
  26. 'client_id' => $client->id,
  27. 'created_at' => now(),
  28. 'updated_at' => now(),
  29. ]);
  30. }
  31. /** @test */
  32. public function user_can_generate_api_token()
  33. {
  34. $response = $this->post('/oauth/personal-access-tokens', [
  35. 'name' => 'New'
  36. ]);
  37. $response->assertStatus(200);
  38. $this->assertNotNull($response->getData()->accessToken);
  39. $this->assertDatabaseHas('oauth_access_tokens', [
  40. 'name' => 'New',
  41. 'user_id' => $this->user->id
  42. ]);
  43. }
  44. /** @test */
  45. public function user_can_revoke_api_token()
  46. {
  47. DB::table('oauth_access_tokens')->insert([
  48. 'id' => '1830c31e8e17dc4e871aa21ebe82e6cbfdd0d5781bec42631dd381119f355a911075f7e1a3dc2240',
  49. 'name' => 'New',
  50. 'user_id' => $this->user->id,
  51. 'revoked' => false,
  52. 'client_id' => 1,
  53. 'created_at' => now(),
  54. 'updated_at' => now(),
  55. ]);
  56. $response = $this->delete('/oauth/personal-access-tokens/1830c31e8e17dc4e871aa21ebe82e6cbfdd0d5781bec42631dd381119f355a911075f7e1a3dc2240');
  57. $response->assertStatus(204);
  58. $this->assertDatabaseMissing('oauth_access_tokens', [
  59. 'name' => 'New',
  60. 'user_id' => $this->user->id,
  61. 'id' => '1830c31e8e17dc4e871aa21ebe82e6cbfdd0d5781bec42631dd381119f355a911075f7e1a3dc2240',
  62. 'revoke' => true
  63. ]);
  64. }
  65. }