RegisterControllerTest.php 1.8 KB

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