AliasesTest.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace Tests\Feature\Api;
  3. use App\Alias;
  4. use Illuminate\Foundation\Testing\RefreshDatabase;
  5. use Tests\TestCase;
  6. class AliasesTest extends TestCase
  7. {
  8. use RefreshDatabase;
  9. protected function setUp(): void
  10. {
  11. parent::setUp();
  12. parent::setUpPassport();
  13. }
  14. /** @test */
  15. public function user_can_get_all_aliases()
  16. {
  17. // Arrange
  18. factory(Alias::class, 3)->create([
  19. 'user_id' => $this->user->id
  20. ]);
  21. // Act
  22. $response = $this->get('/api/v1/aliases');
  23. // Assert
  24. $response->assertSuccessful();
  25. $this->assertCount(3, $response->json()['data']);
  26. }
  27. /** @test */
  28. public function user_can_get_individual_alias()
  29. {
  30. // Arrange
  31. $alias = factory(Alias::class)->create([
  32. 'user_id' => $this->user->id
  33. ]);
  34. // Act
  35. $response = $this->get('/api/v1/aliases/'.$alias->id);
  36. // Assert
  37. $response->assertSuccessful();
  38. $this->assertCount(1, $response->json());
  39. $this->assertEquals($alias->email, $response->json()['data']['email']);
  40. }
  41. /** @test */
  42. public function user_can_generate_new_alias()
  43. {
  44. $response = $this->json('POST', '/api/v1/aliases', [
  45. 'domain' => 'anonaddy.me',
  46. 'description' => 'the description'
  47. ]);
  48. $response->assertStatus(201);
  49. $this->assertCount(1, $this->user->aliases);
  50. $this->assertEquals($this->user->aliases[0]->id, $response->getData()->data->local_part);
  51. $this->assertEquals($this->user->aliases[0]->id, $this->user->aliases[0]->local_part);
  52. }
  53. /** @test */
  54. public function user_can_update_alias_description()
  55. {
  56. $alias = factory(Alias::class)->create([
  57. 'user_id' => $this->user->id
  58. ]);
  59. $response = $this->json('PATCH', '/api/v1/aliases/'.$alias->id, [
  60. 'description' => 'The new description'
  61. ]);
  62. $response->assertStatus(200);
  63. $this->assertEquals('The new description', $response->getData()->data->description);
  64. }
  65. /** @test */
  66. public function user_can_delete_alias()
  67. {
  68. $alias = factory(Alias::class)->create([
  69. 'user_id' => $this->user->id
  70. ]);
  71. $response = $this->json('DELETE', '/api/v1/aliases/'.$alias->id);
  72. $response->assertStatus(204);
  73. $this->assertEmpty($this->user->aliases);
  74. }
  75. /** @test */
  76. public function user_can_activate_alias()
  77. {
  78. $alias = factory(Alias::class)->create([
  79. 'user_id' => $this->user->id,
  80. 'active' => false
  81. ]);
  82. $response = $this->json('POST', '/api/v1/active-aliases/', [
  83. 'id' => $alias->id
  84. ]);
  85. $response->assertStatus(200);
  86. $this->assertEquals(true, $response->getData()->data->active);
  87. }
  88. /** @test */
  89. public function user_can_deactivate_alias()
  90. {
  91. $alias = factory(Alias::class)->create([
  92. 'user_id' => $this->user->id,
  93. 'active' => true
  94. ]);
  95. $response = $this->json('DELETE', '/api/v1/active-aliases/'.$alias->id);
  96. $response->assertStatus(204);
  97. $this->assertFalse($this->user->aliases[0]->active);
  98. }
  99. }