UserDeleteRequestTest.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace Tests\Feature\Http\Requests;
  3. use App\Http\Requests\UserDeleteRequest;
  4. use Illuminate\Foundation\Testing\WithoutMiddleware;
  5. use Illuminate\Support\Facades\Auth;
  6. use Illuminate\Support\Facades\Validator;
  7. use PHPUnit\Framework\Attributes\CoversClass;
  8. use PHPUnit\Framework\Attributes\DataProvider;
  9. use Tests\FeatureTestCase;
  10. /**
  11. * UserDeleteRequestTest test class
  12. */
  13. #[CoversClass(UserDeleteRequest::class)]
  14. class UserDeleteRequestTest extends FeatureTestCase
  15. {
  16. use WithoutMiddleware;
  17. /**
  18. * @test
  19. */
  20. public function test_user_is_authorized()
  21. {
  22. Auth::shouldReceive('check')
  23. ->once()
  24. ->andReturn(true);
  25. $request = new UserDeleteRequest();
  26. $this->assertTrue($request->authorize());
  27. }
  28. /**
  29. * @test
  30. */
  31. #[DataProvider('provideValidData')]
  32. public function test_valid_data(array $data) : void
  33. {
  34. $request = new UserDeleteRequest();
  35. $validator = Validator::make($data, $request->rules());
  36. $this->assertFalse($validator->fails());
  37. }
  38. /**
  39. * Provide Valid data for validation test
  40. */
  41. public static function provideValidData() : array
  42. {
  43. return [
  44. [[
  45. 'password' => 'Yubikey',
  46. ]],
  47. ];
  48. }
  49. /**
  50. * @test
  51. */
  52. #[DataProvider('provideInvalidData')]
  53. public function test_invalid_data(array $data) : void
  54. {
  55. $request = new UserDeleteRequest();
  56. $validator = Validator::make($data, $request->rules());
  57. $this->assertTrue($validator->fails());
  58. }
  59. /**
  60. * Provide invalid data for validation test
  61. */
  62. public static function provideInvalidData() : array
  63. {
  64. return [
  65. [[
  66. 'password' => '', // required
  67. ]],
  68. [[
  69. 'password' => true, // string
  70. ]],
  71. [[
  72. 'password' => 0, // string
  73. ]],
  74. ];
  75. }
  76. }