UserStoreRequestTest.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace Tests\Api\v1\Requests;
  3. use App\Api\v1\Requests\UserStoreRequest;
  4. use Illuminate\Foundation\Testing\WithoutMiddleware;
  5. use Illuminate\Support\Facades\Validator;
  6. use Tests\FeatureTestCase;
  7. class UserStoreRequestTest extends FeatureTestCase
  8. {
  9. use WithoutMiddleware;
  10. /**
  11. * @test
  12. */
  13. public function test_user_is_authorized()
  14. {
  15. $request = new UserStoreRequest();
  16. $this->assertTrue($request->authorize());
  17. }
  18. /**
  19. * @dataProvider provideValidData
  20. */
  21. public function test_valid_data(array $data) : void
  22. {
  23. $request = new UserStoreRequest();
  24. $validator = Validator::make($data, $request->rules());
  25. $this->assertFalse($validator->fails());
  26. }
  27. /**
  28. * Provide Valid data for validation test
  29. */
  30. public function provideValidData() : array
  31. {
  32. return [
  33. [[
  34. 'name' => 'John',
  35. 'email' => 'john@example.com',
  36. 'password' => 'MyPassword',
  37. 'password_confirmation' => 'MyPassword',
  38. ]],
  39. ];
  40. }
  41. /**
  42. * @dataProvider provideInvalidData
  43. */
  44. public function test_invalid_data(array $data) : void
  45. {
  46. $user = new \App\User(
  47. [
  48. 'name' => 'John',
  49. 'email' => 'john@example.com',
  50. 'password' => 'MyPassword',
  51. 'password_confirmation' => 'MyPassword',
  52. ]
  53. );
  54. $user->save();
  55. $request = new UserStoreRequest();
  56. $validator = Validator::make($data, $request->rules());
  57. $this->assertTrue($validator->fails());
  58. }
  59. /**
  60. * Provide invalid data for validation test
  61. */
  62. public function provideInvalidData() : array
  63. {
  64. return [
  65. [[
  66. 'name' => 'John', // unique
  67. 'email' => 'john@example.com',
  68. 'password' => 'MyPassword',
  69. 'password_confirmation' => 'MyPassword',
  70. ]],
  71. [[
  72. 'name' => '', // required
  73. 'email' => 'john@example.com',
  74. 'password' => 'MyPassword',
  75. 'password_confirmation' => 'MyPassword',
  76. ]],
  77. [[
  78. 'name' => 'John',
  79. 'email' => '', // required
  80. 'password' => 'MyPassword',
  81. 'password_confirmation' => 'MyPassword',
  82. ]],
  83. [[
  84. 'name' => 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz', // max:255
  85. 'email' => 'john@example.com',
  86. 'password' => 'MyPassword',
  87. 'password_confirmation' => 'MyPassword',
  88. ]],
  89. [[
  90. 'name' => 'John',
  91. 'email' => 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz@example.com', // max:255
  92. 'password' => 'MyPassword',
  93. 'password_confirmation' => 'MyPassword',
  94. ]],
  95. [[
  96. 'name' => 'John',
  97. 'email' => 'johnexample.com', // email
  98. 'password' => 'MyPassword',
  99. 'password_confirmation' => 'MyPassword',
  100. ]],
  101. [[
  102. 'name' => 'John',
  103. 'email' => 'john@example.com',
  104. 'password' => '', // required
  105. 'password_confirmation' => '', // required
  106. ]],
  107. [[
  108. 'name' => 'John',
  109. 'email' => 'john@example.com',
  110. 'password' => 'MyPassword',
  111. 'password_confirmation' => 'anotherPassword', // confirmed
  112. ]],
  113. [[
  114. 'name' => 'John',
  115. 'email' => 'john@example.com',
  116. 'password' => 'pwd', // min:8
  117. 'password_confirmation' => 'pwd',
  118. ]],
  119. ];
  120. }
  121. }