LoginRequestTest.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace Tests\Api\v1\Requests;
  3. use App\Http\Requests\LoginRequest;
  4. use Illuminate\Foundation\Testing\WithoutMiddleware;
  5. use Illuminate\Support\Facades\Auth;
  6. use Illuminate\Support\Facades\Validator;
  7. use Tests\FeatureTestCase;
  8. /**
  9. * @covers \App\Http\Requests\LoginRequest
  10. */
  11. class LoginRequestTest extends FeatureTestCase
  12. {
  13. use WithoutMiddleware;
  14. /**
  15. * @test
  16. */
  17. public function test_user_is_authorized()
  18. {
  19. $request = new LoginRequest();
  20. $this->assertTrue($request->authorize());
  21. }
  22. /**
  23. * @dataProvider provideValidData
  24. */
  25. public function test_valid_data(array $data) : void
  26. {
  27. factory(\App\User::class)->create([
  28. 'email' => 'JOHN.DOE@example.com'
  29. ]);
  30. $request = new LoginRequest();
  31. $validator = Validator::make($data, $request->rules());
  32. $this->assertFalse($validator->fails());
  33. }
  34. /**
  35. * Provide Valid data for validation test
  36. */
  37. public function provideValidData() : array
  38. {
  39. return [
  40. [[
  41. 'email' => 'john.doe@example.com',
  42. 'password' => 'MyPassword'
  43. ]],
  44. [[
  45. 'email' => 'JOHN.doe@example.com',
  46. 'password' => 'MyPassword'
  47. ]],
  48. ];
  49. }
  50. /**
  51. * @dataProvider provideInvalidData
  52. */
  53. public function test_invalid_data(array $data) : void
  54. {
  55. factory(\App\User::class)->create([
  56. 'email' => 'JOHN.DOE@example.com'
  57. ]);
  58. $request = new LoginRequest();
  59. $validator = Validator::make($data, $request->rules());
  60. $this->assertTrue($validator->fails());
  61. }
  62. /**
  63. * Provide invalid data for validation test
  64. */
  65. public function provideInvalidData() : array
  66. {
  67. return [
  68. [[
  69. 'email' => '', // required
  70. 'password' => 'MyPassword',
  71. ]],
  72. [[
  73. 'email' => 'john', // email
  74. 'password' => 'MyPassword',
  75. ]],
  76. [[
  77. 'email' => 'john@example.com', // exists
  78. 'password' => 'MyPassword',
  79. ]],
  80. [[
  81. 'email' => 'john.doe@example.com',
  82. 'password' => '', // required
  83. ]],
  84. [[
  85. 'email' => 'john.doe@example.com',
  86. 'password' => true, // string
  87. ]],
  88. ];
  89. }
  90. }