WebAuthnRegisterControllerTest.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace Tests\Feature\Http\Auth;
  3. use App\Http\Controllers\Auth\WebAuthnRegisterController;
  4. use App\Http\Requests\WebauthnAttestationRequest;
  5. use App\Http\Requests\WebauthnAttestedRequest;
  6. use App\Models\User;
  7. use Illuminate\Support\Facades\Config;
  8. use Laragear\WebAuthn\Enums\UserVerification;
  9. use Laragear\WebAuthn\JsonTransport;
  10. use PHPUnit\Framework\Attributes\CoversClass;
  11. use PHPUnit\Framework\Attributes\Test;
  12. use Tests\FeatureTestCase;
  13. /**
  14. * WebAuthnRegisterControllerTest test class
  15. */
  16. #[CoversClass(WebAuthnRegisterController::class)]
  17. class WebAuthnRegisterControllerTest extends FeatureTestCase
  18. {
  19. /**
  20. * @var \App\Models\User|\Illuminate\Contracts\Auth\Authenticatable
  21. */
  22. protected $user;
  23. public function setUp() : void
  24. {
  25. parent::setUp();
  26. $this->user = User::factory()->create();
  27. }
  28. #[Test]
  29. public function test_uses_attestation_with_fastRegistration_request() : void
  30. {
  31. Config::set('webauthn.user_verification', UserVerification::DISCOURAGED);
  32. $request = $this->mock(WebauthnAttestationRequest::class);
  33. $request->expects('fastRegistration')->andReturnSelf();
  34. $request->expects('toCreate')->andReturn(new JsonTransport);
  35. $this->actingAs($this->user, 'web-guard')
  36. ->json('POST', '/webauthn/register/options')
  37. ->assertOk();
  38. }
  39. #[Test]
  40. public function test_uses_attestation_with_secureRegistration_request() : void
  41. {
  42. Config::set('webauthn.user_verification', UserVerification::REQUIRED);
  43. $request = $this->mock(WebauthnAttestationRequest::class);
  44. $request->expects('secureRegistration')->andReturnSelf();
  45. $request->expects('toCreate')->andReturn(new JsonTransport);
  46. $this->actingAs($this->user, 'web-guard')
  47. ->json('POST', '/webauthn/register/options')
  48. ->assertOk();
  49. }
  50. #[Test]
  51. public function test_register_uses_attested_request() : void
  52. {
  53. $request = $this->mock(WebauthnAttestedRequest::class);
  54. $request->expects('save')->andReturn();
  55. $request->expects('user')->andReturn($this->user);
  56. $this->actingAs($this->user, 'web-guard')
  57. ->json('POST', '/webauthn/register')
  58. ->assertNoContent();
  59. }
  60. }