RegisterControllerTest.php 2.4 KB

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