RegisterControllerTest.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace Tests\Feature\Http\Auth;
  3. use App\Models\User;
  4. use Illuminate\Support\Facades\DB;
  5. use Tests\FeatureTestCase;
  6. /**
  7. * @covers \App\Http\Controllers\Auth\RegisterController
  8. */
  9. class RegisterControllerTest extends FeatureTestCase
  10. {
  11. private const USERNAME = 'john doe';
  12. private const EMAIL = 'johndoe@example.org';
  13. private const PASSWORD = 'password';
  14. /**
  15. * @test
  16. */
  17. public function setUp(): void
  18. {
  19. parent::setUp();
  20. }
  21. /**
  22. * @test
  23. */
  24. public function test_register_returns_success()
  25. {
  26. DB::table('users')->delete();
  27. $response = $this->json('POST', '/user', [
  28. 'name' => self::USERNAME,
  29. 'email' => self::EMAIL,
  30. 'password' => self::PASSWORD,
  31. 'password_confirmation' => self::PASSWORD,
  32. ])
  33. ->assertCreated()
  34. ->assertJsonStructure([
  35. 'message',
  36. 'name',
  37. ])
  38. ->assertJsonFragment([
  39. 'name' => self::USERNAME,
  40. ]);
  41. }
  42. /**
  43. * @test
  44. *
  45. * @covers \App\Rules\FirstUser
  46. */
  47. public function test_register_returns_already_an_existing_user()
  48. {
  49. DB::table('users')->delete();
  50. $user = User::factory()->create();
  51. $response = $this->json('POST', '/user', [
  52. 'name' => self::USERNAME,
  53. 'email' => self::EMAIL,
  54. 'password' => self::PASSWORD,
  55. 'password_confirmation' => self::PASSWORD,
  56. ])
  57. ->assertJsonValidationErrorFor('name');
  58. }
  59. /**
  60. * @test
  61. */
  62. public function test_register_with_invalid_data_returns_validation_error()
  63. {
  64. $response = $this->json('POST', '/user', [
  65. 'name' => null,
  66. 'email' => self::EMAIL,
  67. 'password' => self::PASSWORD,
  68. 'password_confirmation' => self::PASSWORD,
  69. ])
  70. ->assertStatus(422);
  71. }
  72. }