FOSSology  4.7.0-rc1
Open Source License Compliance by Open Source Software
GroupControllerTest.php
Go to the documentation of this file.
1 <?php
2 /*
3  * SPDX-FileCopyrightText: © 2022 Samuel Dushimimana <dushsam100@gmail.com>
4  *
5  * SPDX-License-Identifier: GPL-2.0-only
6 */
13 
14 require_once dirname(__DIR__, 4) . '/lib/php/Plugin/FO_Plugin.php';
15 
16 
32 use Mockery as M;
33 use Slim\Psr7\Factory\StreamFactory;
34 use Slim\Psr7\Headers;
35 use Slim\Psr7\Request;
36 use Slim\Psr7\Uri;
37 
38 
43 class GroupControllerTest extends \PHPUnit\Framework\TestCase
44 {
45 
50  const YAML_LOC = __DIR__ . '/../../../ui/api/documentation/openapi.yaml';
51 
57 
62  private $dbHelper;
63 
68  private $restHelper;
69 
74  private $adminPlugin;
75 
80  protected function setUp() : void
81  {
82  global $container;
83  $container = M::mock('ContainerBuilder');
84  $this->dbHelper = M::mock(DbHelper::class);
85  $this->restHelper = M::mock(RestHelper::class);
86  $this->userDao = M::mock(UserDao::class);
87  $this->adminPlugin = M::mock('AdminGroupUsers');
88 
89  $this->restHelper->shouldReceive('getDbHelper')->andReturn($this->dbHelper);
90  $this->restHelper->shouldReceive('getUserDao')
91  ->andReturn($this->userDao);
92 
93  $this->restHelper->shouldReceive('getPlugin')
94  ->withArgs(array('group_manage_users'))->andReturn($this->adminPlugin);
95 
96  $container->shouldReceive('get')->withArgs(array(
97  'helper.restHelper'))->andReturn($this->restHelper);
98  $this->groupController = new GroupController($container);
99  $this->assertCountBefore = \Hamcrest\MatcherAssert::getCount();
100  $this->dbManager = M::mock(DbManager::class);
101  $this->dbHelper->shouldReceive('getDbManager')->andReturn($this->dbManager);
102  $this->streamFactory = new StreamFactory();
103  }
104 
105 
110  protected function tearDown() : void
111  {
112  $this->addToAssertionCount(
113  \Hamcrest\MatcherAssert::getCount() - $this->assertCountBefore);
114  M::close();
115  }
116 
123  private function getResponseJson($response)
124  {
125  $response->getBody()->seek(0);
126  return json_decode($response->getBody()->getContents(), true);
127  }
128 
134  private function getGroupMembers($userIds)
135  {
136  $groupPermissions = array("NONE" => -1, UserDao::USER => 0,
137  UserDao::ADMIN => 1, UserDao::ADVISOR => 2);
138 
139  $memberList = array();
140  foreach ($userIds as $userId) {
141  $key = array_rand($groupPermissions);
142  $userGroupMember = new UserGroupMember(new User($userId, "user$userId", "User $userId",
143  null, null, null, null, null),$groupPermissions[$key]) ;
144  $memberList[] = $userGroupMember->getArray();
145  }
146  return $memberList;
147  }
148 
154  private function getUsersWithGroup($userIds)
155  {
156  $groupPermissions = array("NONE" => -1, UserDao::USER => 0,
157  UserDao::ADMIN => 1, UserDao::ADVISOR => 2);
158 
159  $usersWithGroup = array();
160  foreach ($userIds as $userId) {
161  $perm = array_rand($groupPermissions);
162  $user = [
163  "user_pk" => $userId,
164  "group_perm"=> $perm,
165  "user_name" => $userId."username",
166  "user_desc" => $userId."desc",
167  "user_status"=> 'active'
168  ];
169  $usersWithGroup[] = $user;
170  }
171  return $usersWithGroup;
172  }
178  public function testCreateGroupV1()
179  {
180  $this->testCreateGroup(ApiVersion::V1);
181  }
187  public function testCreateGroupV2()
188  {
189  $this->testCreateGroup();
190  }
195  private function testCreateGroup($version = ApiVersion::V2)
196  {
197  $groupName = 'fossyGroup';
198  $groupId = 4;
199  $userId = 1;
200 
201  $this->restHelper->shouldReceive('getUserId')->andReturn($userId);
202  $this->userDao->shouldReceive('addGroup')->withArgs([$groupName])
203  ->andReturn($groupId);
204  $this->userDao->shouldReceive('addGroupMembership')
205  ->withArgs([$groupId, $userId]);
206 
207  $requestHeaders = new Headers();
208  if ($version == ApiVersion::V2) {
209  $request = new Request("POST",
210  new Uri("HTTP", "localhost", null, "/groups", "name=" . $groupName),
211  $requestHeaders, [], [], $this->streamFactory->createStream());
212  } else {
213  $requestHeaders->setHeader('name', $groupName);
214  $request = new Request("POST", new Uri("HTTP", "localhost"),
215  $requestHeaders, [], [], $this->streamFactory->createStream());
216  }
217  $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, $version);
218 
219  $expectedCode = $version == ApiVersion::V2 ? 201 : 200;
220  $expectedResponse = new Info($expectedCode,
221  "Group $groupName added.", InfoType::INFO);
222 
223  $actualResponse = $this->groupController->createGroup($request,
224  new ResponseHelper(), []);
225 
226  $this->assertEquals($expectedResponse->getCode(),
227  $actualResponse->getStatusCode());
228  $this->assertEquals($expectedResponse->getArray(),
229  $this->getResponseJson($actualResponse));
230  }
236  public function testDeleteGroupV1()
237  {
238  $this->testDeleteGroup(ApiVersion::V1);
239  }
245  public function testDeleteGroupV2()
246  {
247  $this->testDeleteGroup();
248  }
253  private function testDeleteGroup($version = ApiVersion::V2)
254  {
255  $groupId = 4;
256  $userId = 1;
257  $userPk = 1;
258  $newUser = 2;
259  $request = M::mock(Request::class);
260  $userArray = ['user_pk' => $newUser];
261 
262  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_WRITE;
263  if ($version == ApiVersion::V2) {
264  $this->restHelper->getUserDao()->shouldReceive('getGroupIdByName')->withArgs([$groupId])->andReturn($groupId);
265  $this->restHelper->getUserDao()->shouldReceive('getUserByName')->withArgs([$userPk])->andReturn($userArray);
266  }
267  $request->shouldReceive('getAttribute')->andReturn($version);
268  $this->restHelper->shouldReceive('getUserId')->andReturn($userId);
269  $this->dbHelper->shouldReceive('doesIdExist')
270  ->withArgs(["groups", "group_pk", $groupId])->andReturn(true);
271  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_WRITE;
272  $this->userDao->shouldReceive('getDeletableAdminGroupMap')->withArgs([$userId,$_SESSION[Auth::USER_LEVEL]]);
273  $this->userDao->shouldReceive('deleteGroup')->withArgs([$groupId]);
274 
275  $info = new Info(202, "User Group will be deleted", InfoType::INFO);
276  $expectedResponse = (new ResponseHelper())->withJson($info->getArray(),
277  $info->getCode());
278  $actualResponse = $this->groupController->deleteGroup($request, new ResponseHelper(),
279  ['pathParam' => $groupId]);
280 
281  $this->assertEquals($expectedResponse->getStatusCode(),
282  $actualResponse->getStatusCode());
283  $this->assertEquals($this->getResponseJson($expectedResponse),
284  $this->getResponseJson($actualResponse));
285  }
291  public function testGetDeletableGroupsV1()
292  {
293  $this->testGetDeletableGroups(ApiVersion::V1);
294  }
300  public function testGetDeletableGroupsV2()
301  {
302  $this->testGetDeletableGroups();
303  }
308  private function testGetDeletableGroups($version = ApiVersion::V2)
309  {
310  $userId = 2;
311  $groupList = array();
312  $this->restHelper->shouldReceive('getUserId')->andReturn($userId);
313  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_WRITE;
314  $this->userDao->shouldReceive('getDeletableAdminGroupMap')->withArgs([$userId,
315  $_SESSION[Auth::USER_LEVEL]])->andReturn([]);
316  $expectedResponse = (new ResponseHelper())->withJson($groupList, 200);
317  $actualResponse = $this->groupController->getDeletableGroups(null, new ResponseHelper(), []);
318  $this->assertEquals($expectedResponse->getStatusCode(), $actualResponse->getStatusCode());
319  $this->assertEquals($this->getResponseJson($expectedResponse), $this->getResponseJson($actualResponse));
320  }
326  public function testGetGroupMembersV2()
327  {
328  $this->testGetGroupMembers();
329  }
335  public function testGetGroupMembersV1()
336  {
337  $this->testGetGroupMembers(APiVersion::V1);
338  }
343  private function testGetGroupMembers($version = ApiVersion::V2)
344  {
345  $userIds = [2];
346  $groupName = 'fossy';
347  $groupId = 1;
348  $newuser = 3;
349  $userPk = 2;
350  $memberList = $this->getGroupMembers($userIds);
351  $request = M::mock(Request::class);
352  $groupIds = [1,2,3,4,5,6];
353  $userArray = ['user_pk' => $newuser];
354 
355  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_WRITE;
356  if ($version == ApiVersion::V2) {
357  $this->restHelper->getUserDao()->shouldReceive('getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupIds[0]);
358  $this->restHelper->getUserDao()->shouldReceive('getUserByName')->withArgs([$userPk])->andReturn($userArray);
359  }
360  $request->shouldReceive('getAttribute')->andReturn($version);
361  $this->restHelper->getUserDao()->shouldReceive('getGroupIdByName')->withArgs([$groupName])->andReturn($groupId);
362  $this->restHelper->shouldReceive('getUserId')->andReturn($userIds[0]);
363  $this->userDao->shouldReceive('getAdminGroupMap')->withArgs([$userIds[0],$_SESSION[Auth::USER_LEVEL]])->andReturn([1]);
364 
365  $this->dbManager->shouldReceive('prepare')->withArgs([M::any(),M::any()]);
366  $this->dbManager->shouldReceive('execute')->withArgs([M::any(),array($groupId)])->andReturn(1);
367  $this->dbManager->shouldReceive('fetchAll')->withArgs([1])->andReturn($this->getUsersWithGroup($userIds));
368  $this->dbManager->shouldReceive('freeResult')->withArgs([1]);
369 
370  $user = $this->getUsersWithGroup($userIds)[0];
371  $users = [];
372  $users[] = new User($user["user_pk"], $user["user_name"], $user["user_desc"],
373  null, null, null, null, null);
374  $this->dbHelper->shouldReceive("getUsers")->withArgs([$user['user_pk']])->andReturn($users);
375 
376  $expectedResponse = (new ResponseHelper())->withJson($memberList, 200);
377 
378  $actualResponse = $this->groupController->getGroupMembers($request, new ResponseHelper(), ['pathParam' => $groupId]);
379  $this->assertEquals($expectedResponse->getStatusCode(),$actualResponse->getStatusCode());
380  }
390  {
391  $this->testAddMemberUserNotMember(ApiVersion::V1);
392  }
402  {
404  }
409  public function testAddMemberUserNotMember($version = ApiVersion::V2)
410  {
411  $groupId = 1;
412  $newuser = 1;
413  $newPerm = 2;
414  $emptyArr=[];
415  $groupIds = [1,2,3,4,5,6];
416  $userArray = ['user_pk' => $newuser];
417  $userId = 1;
418 
419  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_ADMIN;
420  if ($version == ApiVersion::V2) {
421  $this->restHelper->getUserDao()->shouldReceive('getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupId);
422  $this->restHelper->getUserDao()->shouldReceive('getUserByName')->withArgs([$userId])->andReturn($userArray);
423  }
424  $this->dbHelper->shouldReceive('doesIdExist')->withArgs(["groups", "group_pk", $groupId])->andReturn(true);
425  $this->dbHelper->shouldReceive('doesIdExist')->withArgs(["users","user_pk",$newuser])->andReturn(true);
426  $this->dbManager->shouldReceive('getSingleRow')->withArgs([M::any(),M::any(),M::any()])->andReturn($emptyArr);
427  $this->restHelper->shouldReceive('getUserId')->andReturn($userId);
428  $this->userDao->shouldReceive('isAdvisorOrAdmin')->withArgs([$userId, $groupId])->andReturn(true);
429 
430  $this->dbManager->shouldReceive('prepare')->withArgs([M::any(),M::any()]);
431  $this->dbManager->shouldReceive('execute')->withArgs([M::any(),array($groupId, $newuser,$newPerm)])->andReturn(1);
432  $this->dbManager->shouldReceive('freeResult')->withArgs([1]);
433 
434  $body = $this->streamFactory->createStream(json_encode([
435  "perm" => $newPerm
436  ]));
437  $requestHeaders = new Headers();
438  $requestHeaders->setHeader('Content-Type', 'application/json');
439  $request = new Request("POST", new Uri("HTTP", "localhost"),
440  $requestHeaders, [], [], $body);
441  $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
442  $expectedResponse = new Info(201, "User added to group.", InfoType::INFO);
443 
444  $actualResponse = $this->groupController->addMember($request, new ResponseHelper(), ['pathParam' => $groupId,'userPathParam' => $newuser]);
445  $this->assertEquals($expectedResponse->getCode(),$actualResponse->getStatusCode());
446  $this->assertEquals($expectedResponse->getArray(),$this->getResponseJson($actualResponse));
447  }
454  public function testAddMemberUserNotAdminV2()
455  {
456  $this->testAddMemberUserNotAdmin();
457  }
464  public function testAddMemberUserNotAdminV1()
465  {
466  $this->testAddMemberUserNotAdmin(ApiVersion::V1);
467  }
472  private function testAddMemberUserNotAdmin($version = ApiVersion::V2)
473  {
474  $groupId = 1;
475  $newuser = 1;
476  $newPerm = 2;
477  $groupIds = [1,2,3,4,5,6];
478  $userArray = ['user_pk' => $newuser];
479  $userId = 1;
480 
481  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_WRITE;
482  if ($version == ApiVersion::V2) {
483  $this->restHelper->getUserDao()->shouldReceive('getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupId);
484  $this->restHelper->getUserDao()->shouldReceive('getUserByName')->withArgs([$userId])->andReturn($userArray);
485  }
486  $this->dbHelper->shouldReceive('doesIdExist')->withArgs(["groups", "group_pk", $groupId])->andReturn(true);
487  $this->dbHelper->shouldReceive('doesIdExist')->withArgs(["users","user_pk",$newuser])->andReturn(true);
488  $this->restHelper->shouldReceive('getUserId')->andReturn($userId);
489  $this->userDao->shouldReceive('isAdvisorOrAdmin')->withArgs([$userId, $groupId])->andReturn(false);
490 
491  $body = $this->streamFactory->createStream(json_encode([
492  "perm" => $newPerm
493  ]));
494  $requestHeaders = new Headers();
495  $requestHeaders->setHeader('Content-Type', 'application/json');
496  $request = new Request("POST", new Uri("HTTP", "localhost"),
497  $requestHeaders, [], [], $body);
498  $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
499  $this->expectException(HttpForbiddenException::class);
500 
501  $this->groupController->addMember($request, new ResponseHelper(),
502  ['pathParam' => $groupId,'userPathParam' => $newuser]);
503  }
504 
512  {
513  $this->testAddMemberUserGroupAdmin(ApiVersion::V1);
514  }
522  {
523  $this->testAddMemberUserGroupAdmin();
524  }
525  private function testAddMemberUserGroupAdmin($version = ApiVersion::V2)
526  {
527  $groupId = 1;
528  $newuser = 1;
529  $newPerm = 2;
530  $emptyArr=[];
531  $groupIds = [1,2,3,4,5,6];
532  $userArray = ['user_pk' => $newuser];
533  $userId = 1;
534 
535  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_WRITE;
536  if ($version == ApiVersion::V2) {
537  $this->restHelper->getUserDao()->shouldReceive('getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupId);
538  $this->restHelper->getUserDao()->shouldReceive('getUserByName')->withArgs([$userId])->andReturn($userArray);
539  }
540  $this->dbHelper->shouldReceive('doesIdExist')->withArgs(["groups", "group_pk", $groupId])->andReturn(true);
541  $this->dbHelper->shouldReceive('doesIdExist')->withArgs(["users","user_pk",$newuser])->andReturn(true);
542  $this->dbManager->shouldReceive('getSingleRow')->withArgs([M::any(),M::any(),M::any()])->andReturn($emptyArr);
543  $this->restHelper->shouldReceive('getUserId')->andReturn($userId);
544  $this->userDao->shouldReceive('isAdvisorOrAdmin')->withArgs([$userId, $groupId])->andReturn(true);
545 
546  $this->dbManager->shouldReceive('prepare')->withArgs([M::any(),M::any()]);
547  $this->dbManager->shouldReceive('execute')->withArgs([M::any(),array($groupId, $newuser,$newPerm)])->andReturn(1);
548  $this->dbManager->shouldReceive('freeResult')->withArgs([1]);
549 
550  $body = $this->streamFactory->createStream(json_encode([
551  "perm" => $newPerm
552  ]));
553  $requestHeaders = new Headers();
554  $requestHeaders->setHeader('Content-Type', 'application/json');
555  $request = new Request("POST", new Uri("HTTP", "localhost"),
556  $requestHeaders, [], [], $body);
557  $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
558  $expectedResponse = new Info(201, "User added to group.", InfoType::INFO);
559 
560  $actualResponse = $this->groupController->addMember($request, new ResponseHelper(), ['pathParam' => $groupId,'userPathParam' => $newuser]);
561  $this->assertEquals($expectedResponse->getCode(),$actualResponse->getStatusCode());
562  $this->assertEquals($expectedResponse->getArray(),$this->getResponseJson($actualResponse));
563  }
564 
574  {
576  }
586  {
587  $this->testAddMemberUserAlreadyMember(ApiVersion::V1);
588  }
589 
594  private function testAddMemberUserAlreadyMember($version = ApiVersion::V2)
595  {
596  $groupId = 1;
597  $newuser = 1;
598  $newPerm = 2;
599  $groupIds = [1,2,3,4,5,6];
600  $userArray = ['user_pk' => $newuser];
601  $userId = 1;
602 
603  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_ADMIN;
604  if ($version == ApiVersion::V2) {
605  $this->restHelper->getUserDao()->shouldReceive('getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupId);
606  $this->restHelper->getUserDao()->shouldReceive('getUserByName')->withArgs([$userId])->andReturn($userArray);
607  }
608  $this->dbHelper->shouldReceive('doesIdExist')->withArgs(["groups", "group_pk", $groupId])->andReturn(true);
609  $this->dbHelper->shouldReceive('doesIdExist')->withArgs(["users","user_pk",$newuser])->andReturn(true);
610  $this->dbManager->shouldReceive('getSingleRow')->withArgs([M::any(),M::any(),M::any()])->andReturn(true);
611  $this->restHelper->shouldReceive('getUserId')->andReturn($userId);
612  $this->userDao->shouldReceive('isAdvisorOrAdmin')->withArgs([$userId, $groupId])->andReturn(true);
613 
614  $body = $this->streamFactory->createStream(json_encode([
615  "perm" => $newPerm
616  ]));
617  $requestHeaders = new Headers();
618  $requestHeaders->setHeader('Content-Type', 'application/json');
619  $request = new Request("POST", new Uri("HTTP", "localhost"),
620  $requestHeaders, [], [], $body);
621  $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
622  $this->expectException(HttpBadRequestException::class);
623 
624  $this->groupController->addMember($request, new ResponseHelper(),
625  ['pathParam' => $groupId,'userPathParam' => $newuser]);
626  }
627 
633  public function testChangeUserPermissionV2()
634  {
635  $this->testChangeUserPermission();
636  }
642  public function testChangeUserPermissionV1()
643  {
644  $this->testChangeUserPermission(ApiVersion::V1);
645  }
650  private function testChangeUserPermission($version = ApiVersion::V2)
651  {
652  $group_user_member_pk = 1;
653  $newPerm = 2;
654  $userPk = 1;
655  $groupId = 1;
656  $groupIds = [1,2,3,4,5,6];
657  $userArray = ['user_pk' => $userPk];
658  $userId = 1;
659 
660  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_ADMIN;
661  if ($version == ApiVersion::V2) {
662  $this->restHelper->getUserDao()->shouldReceive('getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupId);
663  $this->restHelper->getUserDao()->shouldReceive('getUserByName')->withArgs([$userId])->andReturn($userArray);
664  }
665  $this->dbHelper->shouldReceive('doesIdExist')->withArgs(["groups", "group_pk", $groupIds[0]])->andReturn(true);
666  $this->dbHelper->shouldReceive('doesIdExist')->withArgs(["users","user_pk",$userPk])->andReturn(true);
667  $this->dbManager->shouldReceive('getSingleRow')->withArgs([M::any(),M::any(),M::any()])->andReturn(['group_pk'=>$groupIds[0],'group_user_member_pk'=>$group_user_member_pk,'permission'=>$newPerm]);
668  $this->restHelper->shouldReceive('getUserId')->andReturn($userId);
669  $this->userDao->shouldReceive('isAdvisorOrAdmin')->withArgs([$userPk, $groupIds[0]])->andReturn(true);
670  $this->userDao->shouldReceive('getUserByName')->withArgs([M::any(),M::any()]);
671 
672  $this->adminPlugin->shouldReceive('updateGUMPermission')->withArgs([$group_user_member_pk,$newPerm, $this->dbManager ]);
673 
674  $body = $this->streamFactory->createStream(json_encode([
675  "perm" => $newPerm
676  ]));
677  $requestHeaders = new Headers();
678  $requestHeaders->setHeader('Content-Type', 'application/json');
679  $request = new Request("POST", new Uri("HTTP", "localhost"),
680  $requestHeaders, [], [], $body);
681  $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
682  $expectedResponse = new Info(202, "Permission updated successfully.", InfoType::INFO);
683 
684  $actualResponse = $this->groupController->changeUserPermission($request, new ResponseHelper(), ['pathParam' => $groupIds[0],'userPathParam' => $userId]);
685  $this->assertEquals($expectedResponse->getCode(),$actualResponse->getStatusCode());
686  $this->assertEquals($expectedResponse->getArray(),$this->getResponseJson($actualResponse));
687  }
688 
695  {
697  }
698 
705  {
706  $this->testDeleteGroupMemberSuccess(ApiVersion::V1);
707  }
708 
712  private function testDeleteGroupMemberSuccess($version = ApiVersion::V2)
713  {
714  $groupId = 1;
715  $userId = 2;
716  $groupMemberPk = 5;
717  $userArray = ['user_pk' => $userId];
718 
719  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_ADMIN;
720  if ($version == ApiVersion::V2) {
721  $this->userDao->shouldReceive('getUserByName')
722  ->withArgs([$userId])->andReturn($userArray);
723  $this->userDao->shouldReceive('getGroupIdByName')
724  ->withArgs([$groupId])->andReturn($groupId);
725  }
726  $this->restHelper->shouldReceive('getUserId')->andReturn(1);
727  $this->dbHelper->shouldReceive('doesIdExist')
728  ->withArgs(["groups", "group_pk", $groupId])->andReturn(true);
729  $this->dbHelper->shouldReceive('doesIdExist')
730  ->withArgs(["users", "user_pk", $userId])->andReturn(true);
731  $this->userDao->shouldReceive('isAdvisorOrAdmin')->andReturn(true);
732  $this->dbManager->shouldReceive('getSingleRow')->withArgs([M::any(), M::any(), M::any()])
733  ->andReturn(['group_user_member_pk' => $groupMemberPk]);
734  $this->adminPlugin->shouldReceive('updateGUMPermission')
735  ->withArgs([$groupMemberPk, -1, $this->dbManager]);
736 
737  $requestHeaders = new Headers();
738  $request = new Request("DELETE", new Uri("HTTP", "localhost"),
739  $requestHeaders, [], [], $this->streamFactory->createStream());
740  $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, $version);
741 
742  $expectedResponse = new Info(202, "User will be removed from group.", InfoType::INFO);
743  $actualResponse = $this->groupController->deleteGroupMember($request,
744  new ResponseHelper(), ['pathParam' => $groupId, 'userPathParam' => $userId]);
745 
746  $this->assertEquals($expectedResponse->getCode(), $actualResponse->getStatusCode());
747  $this->assertEquals($expectedResponse->getArray(), $this->getResponseJson($actualResponse));
748  }
749 
756  {
757  $groupId = 1;
758  $userId = 99;
759 
760  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_ADMIN;
761  $this->userDao->shouldReceive('getUserByName')
762  ->withArgs([$userId])->andReturn(null);
763 
764  $requestHeaders = new Headers();
765  $request = new Request("DELETE", new Uri("HTTP", "localhost"),
766  $requestHeaders, [], [], $this->streamFactory->createStream());
767  $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, ApiVersion::V2);
768 
769  $this->expectException(HttpNotFoundException::class);
770  $this->groupController->deleteGroupMember($request,
771  new ResponseHelper(), ['pathParam' => $groupId, 'userPathParam' => $userId]);
772  }
773 
779  public function testAddMemberUserNotFoundV2()
780  {
781  $groupId = 1;
782  $userId = 99;
783  $newPerm = 1;
784 
785  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_ADMIN;
786  $this->userDao->shouldReceive('getUserByName')
787  ->withArgs([$userId])->andReturn(null);
788 
789  $body = $this->streamFactory->createStream(json_encode(["perm" => $newPerm]));
790  $requestHeaders = new Headers();
791  $requestHeaders->setHeader('Content-Type', 'application/json');
792  $request = new Request("POST", new Uri("HTTP", "localhost"),
793  $requestHeaders, [], [], $body);
794  $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, ApiVersion::V2);
795 
796  $this->expectException(HttpNotFoundException::class);
797  $this->groupController->addMember($request,
798  new ResponseHelper(), ['pathParam' => $groupId, 'userPathParam' => $userId]);
799  }
800 
807  {
808  $groupId = 1;
809  $userId = 99;
810  $newPerm = 1;
811 
812  $_SESSION[Auth::USER_LEVEL] = Auth::PERM_ADMIN;
813  $this->userDao->shouldReceive('getUserByName')
814  ->withArgs([$userId])->andReturn(null);
815 
816  $body = $this->streamFactory->createStream(json_encode(["perm" => $newPerm]));
817  $requestHeaders = new Headers();
818  $requestHeaders->setHeader('Content-Type', 'application/json');
819  $request = new Request("PATCH", new Uri("HTTP", "localhost"),
820  $requestHeaders, [], [], $body);
821  $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, ApiVersion::V2);
822 
823  $this->expectException(HttpNotFoundException::class);
824  $this->groupController->changeUserPermission($request,
825  new ResponseHelper(), ['pathParam' => $groupId, 'userPathParam' => $userId]);
826  }
827 }
Contains the constants and helpers for authentication of user.
Definition: Auth.php:24
Provides helper methods to access database for REST api.
Definition: DbHelper.php:38
Override Slim response for withJson function.
Provides various DAO helper functions for REST api.
Definition: RestHelper.php:32
Different type of infos provided by REST.
Definition: InfoType.php:16
Info model to contain general error and return values.
Definition: Info.php:19
Model to hold user information.
Definition: User.php:21
fo_dbManager * dbManager
fo_dbManager object
Definition: process.c:16