GroupTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. namespace Tests\Unit;
  3. use App\User;
  4. use App\Group;
  5. use Tests\TestCase;
  6. use App\TwoFAccount;
  7. class GroupTest extends TestCase
  8. {
  9. /** @var \App\User */
  10. protected $user;
  11. /**
  12. * @test
  13. */
  14. public function setUp(): void
  15. {
  16. parent::setUp();
  17. $this->user = factory(User::class)->create();
  18. }
  19. /**
  20. * test Group display via API
  21. *
  22. * @test
  23. */
  24. public function testGroupDisplay()
  25. {
  26. $group = factory(Group::class)->create([
  27. 'name' => 'My group',
  28. ]);
  29. $response = $this->actingAs($this->user, 'api')
  30. ->json('GET', '/api/groups/' . $group->id)
  31. ->assertStatus(200)
  32. ->assertJsonFragment([
  33. 'name' => 'My group',
  34. ]);
  35. }
  36. /**
  37. * test missing Group display via API
  38. *
  39. * @test
  40. */
  41. public function testMissingGroupDisplay()
  42. {
  43. $response = $this->actingAs($this->user, 'api')
  44. ->json('GET', '/api/groups/1000')
  45. ->assertStatus(404);
  46. }
  47. /**
  48. * test Group creation via API
  49. *
  50. * @test
  51. */
  52. public function testGroupCreation()
  53. {
  54. $response = $this->actingAs($this->user, 'api')
  55. ->json('POST', '/api/groups', [
  56. 'name' => 'My second group',
  57. ])
  58. ->assertStatus(201)
  59. ->assertJsonFragment([
  60. 'name' => 'My second group',
  61. ]);
  62. }
  63. /**
  64. * test Group creation when fields are empty via API
  65. *
  66. * @test
  67. */
  68. public function testGroupCreationWithEmptyRequest()
  69. {
  70. $response = $this->actingAs($this->user, 'api')
  71. ->json('POST', '/api/groups', [
  72. 'name' => '',
  73. ])
  74. ->assertStatus(422);
  75. }
  76. /**
  77. * test Group update via API
  78. *
  79. * @test
  80. */
  81. public function testGroupUpdate()
  82. {
  83. $group = factory(Group::class)->create();
  84. $response = $this->actingAs($this->user, 'api')
  85. ->json('PUT', '/api/groups/' . $group->id, [
  86. 'name' => 'name updated',
  87. ])
  88. ->assertStatus(200)
  89. ->assertJsonFragment([
  90. 'name' => 'name updated',
  91. ]);
  92. }
  93. /**
  94. * test Group update via API
  95. *
  96. * @test
  97. */
  98. public function testGroupUpdateOfMissingGroup()
  99. {
  100. $group = factory(Group::class)->create();
  101. $id = $group->id;
  102. $group->delete();
  103. $response = $this->actingAs($this->user, 'api')
  104. ->json('PUT', '/api/groups/' . $id, [
  105. 'name' => 'testUpdate',
  106. ])
  107. ->assertStatus(404);
  108. }
  109. /**
  110. * test Group index fetching via API
  111. *
  112. * @test
  113. */
  114. public function testGroupIndexListing()
  115. {
  116. factory(Group::class, 3)->create();
  117. $response = $this->actingAs($this->user, 'api')
  118. ->json('GET', '/api/groups')
  119. ->assertStatus(200)
  120. ->assertJsonCount(4, $key = null)
  121. ->assertJsonStructure([
  122. '*' => [
  123. 'id',
  124. 'name',
  125. 'twofaccounts_count',
  126. 'isActive',
  127. ]
  128. ])
  129. ->assertJsonFragment([
  130. 'id' => 0,
  131. 'name' => 'All',
  132. ]);
  133. }
  134. /**
  135. * test Group deletion via API
  136. *
  137. * @test
  138. */
  139. public function testGroupDeletion()
  140. {
  141. $group = factory(Group::class)->create();
  142. $response = $this->actingAs($this->user, 'api')
  143. ->json('DELETE', '/api/groups/' . $group->id)
  144. ->assertStatus(204);
  145. }
  146. }