14 require_once dirname(__DIR__, 4) .
'/lib/php/Plugin/FO_Plugin.php';
34 use Slim\Psr7\Factory\StreamFactory;
35 use Slim\Psr7\Headers;
36 use Slim\Psr7\Request;
51 const YAML_LOC = __DIR__ .
'/../../../ui/api/documentation/openapi.yaml';
87 protected function setUp() : void
90 $container = M::mock(
'ContainerBuilder');
91 $this->dbHelper = M::mock(DbHelper::class);
92 $this->restHelper = M::mock(RestHelper::class);
93 $this->userDao = M::mock(UserDao::class);
94 $this->adminPlugin = M::mock(
'AdminGroupUsers');
95 $this->adminEditPlugin = M::mock(
'AdminGroupEdit');
97 $this->restHelper->shouldReceive(
'getDbHelper')->andReturn($this->dbHelper);
98 $this->restHelper->shouldReceive(
'getUserDao')
99 ->andReturn($this->userDao);
101 $this->restHelper->shouldReceive(
'getPlugin')
102 ->withArgs(array(
'group_manage_users'))->andReturn($this->adminPlugin);
104 $this->restHelper->shouldReceive(
'getPlugin')
105 ->withArgs(array(
'group_edit'))->andReturn($this->adminEditPlugin);
107 $container->shouldReceive(
'get')->withArgs(array(
108 'helper.restHelper'))->andReturn($this->restHelper);
110 $this->assertCountBefore = \Hamcrest\MatcherAssert::getCount();
111 $this->
dbManager = M::mock(DbManager::class);
112 $this->dbHelper->shouldReceive(
'getDbManager')->andReturn($this->
dbManager);
113 $this->streamFactory =
new StreamFactory();
123 $this->addToAssertionCount(
124 \Hamcrest\MatcherAssert::getCount() - $this->assertCountBefore);
136 $response->getBody()->seek(0);
137 return json_decode($response->getBody()->getContents(),
true);
147 $groupPermissions = array(
"NONE" => -1, UserDao::USER => 0,
148 UserDao::ADMIN => 1, UserDao::ADVISOR => 2);
150 $memberList = array();
151 foreach ($userIds as $userId) {
152 $key = array_rand($groupPermissions);
154 null,
null,
null,
null,
null),$groupPermissions[$key]) ;
155 $memberList[] = $userGroupMember->getArray();
167 $groupPermissions = array(
"NONE" => -1, UserDao::USER => 0,
168 UserDao::ADMIN => 1, UserDao::ADVISOR => 2);
170 $usersWithGroup = array();
171 foreach ($userIds as $userId) {
172 $perm = array_rand($groupPermissions);
174 "user_pk" => $userId,
175 "group_perm"=> $perm,
176 "user_name" => $userId.
"username",
177 "user_desc" => $userId.
"desc",
178 "user_status"=>
'active'
180 $usersWithGroup[] = $user;
182 return $usersWithGroup;
208 $groupName =
'fossyGroup';
212 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
213 $this->userDao->shouldReceive(
'addGroup')->withArgs([$groupName])
214 ->andReturn($groupId);
215 $this->userDao->shouldReceive(
'addGroupMembership')
216 ->withArgs([$groupId, $userId]);
218 $requestHeaders =
new Headers();
219 if ($version == ApiVersion::V2) {
220 $request =
new Request(
"POST",
221 new Uri(
"HTTP",
"localhost",
null,
"/groups",
"name=" . $groupName),
222 $requestHeaders, [], [], $this->streamFactory->createStream());
224 $requestHeaders->setHeader(
'name', $groupName);
225 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
226 $requestHeaders, [], [], $this->streamFactory->createStream());
228 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, $version);
230 $expectedCode = $version == ApiVersion::V2 ? 201 : 200;
231 $expectedResponse =
new Info($expectedCode,
232 "Group $groupName added.", InfoType::INFO);
234 $actualResponse = $this->groupController->createGroup($request,
237 $this->assertEquals($expectedResponse->getCode(),
238 $actualResponse->getStatusCode());
239 $this->assertEquals($expectedResponse->getArray(),
240 $this->getResponseJson($actualResponse));
270 $request = M::mock(Request::class);
271 $userArray = [
'user_pk' => $newUser];
274 if ($version == ApiVersion::V2) {
275 $this->restHelper->getUserDao()->shouldReceive(
'getGroupIdByName')->withArgs([$groupId])->andReturn($groupId);
276 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')->withArgs([$userPk])->andReturn($userArray);
278 $request->shouldReceive(
'getAttribute')->andReturn($version);
279 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
280 $this->dbHelper->shouldReceive(
'doesIdExist')
281 ->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
283 $this->userDao->shouldReceive(
'getDeletableAdminGroupMap')->withArgs([$userId,$_SESSION[
Auth::USER_LEVEL]]);
284 $this->userDao->shouldReceive(
'deleteGroup')->withArgs([$groupId]);
286 $info =
new Info(202,
"User Group will be deleted", InfoType::INFO);
287 $expectedResponse = (
new ResponseHelper())->withJson($info->getArray(),
289 $actualResponse = $this->groupController->deleteGroup($request,
new ResponseHelper(),
290 [
'pathParam' => $groupId]);
292 $this->assertEquals($expectedResponse->getStatusCode(),
293 $actualResponse->getStatusCode());
322 $groupName =
'fossyGroup';
323 $newGroupName =
'newFossyGroup';
327 if ($version == ApiVersion::V2) {
328 $this->userDao->shouldReceive(
'getGroupIdByName')
329 ->withArgs([$groupName])->andReturn($groupId);
331 $this->adminEditPlugin->shouldReceive(
'validateGroupName')
332 ->withArgs([$newGroupName])->andReturn(
"");
333 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
334 $this->dbHelper->shouldReceive(
'doesIdExist')
335 ->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
336 $this->userDao->shouldReceive(
'getDeletableAdminGroupMap')
338 ->andReturn([$groupId => $groupName]);
339 $this->userDao->shouldReceive(
'editGroup')
340 ->withArgs([$groupId, $newGroupName]);
343 $pathParam = $version == ApiVersion::V2 ? $groupName : $groupId;
345 $expectedResponse =
new Info(200,
"Group $newGroupName updated.",
347 $actualResponse = $this->groupController->updateGroup($request,
350 $this->assertEquals($expectedResponse->getCode(),
351 $actualResponse->getStatusCode());
352 $this->assertEquals($expectedResponse->getArray(),
353 $this->getResponseJson($actualResponse));
365 $this->expectException(HttpBadRequestException::class);
366 $this->groupController->updateGroup($request,
new ResponseHelper(),
367 [
'pathParam' =>
'fossyGroup']);
377 $newGroupName =
'123';
378 $this->adminEditPlugin->shouldReceive(
'validateGroupName')
379 ->withArgs([$newGroupName])
380 ->andReturn(
"Invalid: Group name cannot be numeric-only");
384 $this->expectException(HttpBadRequestException::class);
385 $this->groupController->updateGroup($request,
new ResponseHelper(),
386 [
'pathParam' =>
'fossyGroup']);
396 $groupName =
'fossyGroup';
397 $newGroupName =
'newFossyGroup';
399 $this->userDao->shouldReceive(
'getGroupIdByName')
400 ->withArgs([$groupName])->andReturn(
null);
401 $this->adminEditPlugin->shouldReceive(
'validateGroupName')
402 ->withArgs([$newGroupName])->andReturn(
"");
403 $this->dbHelper->shouldReceive(
'doesIdExist')
404 ->withArgs([
"groups",
"group_pk", 0])->andReturn(
false);
408 $this->expectException(HttpNotFoundException::class);
409 $this->groupController->updateGroup($request,
new ResponseHelper(),
410 [
'pathParam' => $groupName]);
421 $groupName =
'fossyGroup';
422 $newGroupName =
'newFossyGroup';
426 $this->userDao->shouldReceive(
'getGroupIdByName')
427 ->withArgs([$groupName])->andReturn($groupId);
428 $this->adminEditPlugin->shouldReceive(
'validateGroupName')
429 ->withArgs([$newGroupName])->andReturn(
"");
430 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
431 $this->dbHelper->shouldReceive(
'doesIdExist')
432 ->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
433 $this->userDao->shouldReceive(
'getDeletableAdminGroupMap')
438 $this->expectException(HttpForbiddenException::class);
439 $this->groupController->updateGroup($request,
new ResponseHelper(),
440 [
'pathParam' => $groupName]);
451 $groupName =
'fossyGroup';
452 $newGroupName =
'newFossyGroup';
456 $this->userDao->shouldReceive(
'getGroupIdByName')
457 ->withArgs([$groupName])->andReturn($groupId);
458 $this->adminEditPlugin->shouldReceive(
'validateGroupName')
459 ->withArgs([$newGroupName])->andReturn(
"");
460 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
461 $this->dbHelper->shouldReceive(
'doesIdExist')
462 ->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
463 $this->userDao->shouldReceive(
'getDeletableAdminGroupMap')
465 ->andReturn([$groupId => $groupName]);
466 $this->userDao->shouldReceive(
'editGroup')
467 ->withArgs([$groupId, $newGroupName])
468 ->andThrow(
new \Exception(
"Group exists."));
472 $this->expectException(HttpConflictException::class);
473 $this->groupController->updateGroup($request,
new ResponseHelper(),
474 [
'pathParam' => $groupName]);
484 $version = ApiVersion::V2)
486 $body = $this->streamFactory->createStream(json_encode([
487 "name" => $newGroupName
489 $requestHeaders =
new Headers();
490 $requestHeaders->setHeader(
'Content-Type',
'application/json');
491 $request =
new Request(
"PUT",
new Uri(
"HTTP",
"localhost"),
492 $requestHeaders, [], [], $body);
493 return $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, $version);
521 $groupList = array();
522 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
524 $this->userDao->shouldReceive(
'getDeletableAdminGroupMap')->withArgs([$userId,
526 $expectedResponse = (
new ResponseHelper())->withJson($groupList, 200);
527 $actualResponse = $this->groupController->getDeletableGroups(
null,
new ResponseHelper(), []);
528 $this->assertEquals($expectedResponse->getStatusCode(), $actualResponse->getStatusCode());
560 $request = M::mock(Request::class);
561 $groupIds = [1,2,3,4,5,6];
562 $userArray = [
'user_pk' => $newuser];
565 if ($version == ApiVersion::V2) {
566 $this->restHelper->getUserDao()->shouldReceive(
'getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupIds[0]);
567 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')->withArgs([$userPk])->andReturn($userArray);
569 $request->shouldReceive(
'getAttribute')->andReturn($version);
570 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userIds[0]);
571 $this->dbHelper->shouldReceive(
'doesIdExist')
572 ->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
573 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')
574 ->withArgs([$userIds[0], $groupId])->andReturn(
true);
576 $this->
dbManager->shouldReceive(
'prepare')->withArgs([M::any(),M::any()]);
577 $this->
dbManager->shouldReceive(
'execute')->withArgs([M::any(),array($groupId)])->andReturn(1);
579 $this->
dbManager->shouldReceive(
'freeResult')->withArgs([1]);
583 $users[] =
new User($user[
"user_pk"], $user[
"user_name"], $user[
"user_desc"],
584 null,
null,
null,
null,
null);
585 $this->dbHelper->shouldReceive(
"getUsers")->withArgs([$user[
'user_pk']])->andReturn($users);
587 $expectedResponse = (
new ResponseHelper())->withJson($memberList, 200);
589 $actualResponse = $this->groupController->getGroupMembers($request,
new ResponseHelper(), [
'pathParam' => $groupId]);
590 $this->assertEquals($expectedResponse->getStatusCode(),$actualResponse->getStatusCode());
605 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
606 $this->dbHelper->shouldReceive(
'doesIdExist')
607 ->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
608 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')
609 ->withArgs([$userId, $groupId])->andReturn(
false);
611 $requestHeaders =
new Headers();
612 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost"),
613 $requestHeaders, [], [], $this->streamFactory->createStream());
614 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, ApiVersion::V1);
616 $this->expectException(HttpForbiddenException::class);
617 $this->groupController->getGroupMembers($request,
new ResponseHelper(),
618 [
'pathParam' => $groupId]);
632 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
633 $this->dbHelper->shouldReceive(
'doesIdExist')
634 ->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
false);
635 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')
636 ->withArgs([$userId, $groupId])->andReturn(
false);
638 $requestHeaders =
new Headers();
639 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost"),
640 $requestHeaders, [], [], $this->streamFactory->createStream());
641 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, ApiVersion::V1);
643 $this->expectException(HttpNotFoundException::class);
644 $this->groupController->getGroupMembers($request,
new ResponseHelper(),
645 [
'pathParam' => $groupId]);
662 $this->restHelper->shouldReceive(
'getUserId')->andReturn($callerId);
663 $this->dbHelper->shouldReceive(
'doesIdExist')
664 ->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
665 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')
666 ->withArgs([$callerId, $groupId])->andReturn(
false);
668 $this->
dbManager->shouldReceive(
'prepare')->withArgs([M::any(),M::any()]);
669 $this->
dbManager->shouldReceive(
'execute')->withArgs([M::any(),array($groupId)])->andReturn(1);
671 $this->
dbManager->shouldReceive(
'freeResult')->withArgs([1]);
675 $users[] =
new User($user[
"user_pk"], $user[
"user_name"], $user[
"user_desc"],
676 null,
null,
null,
null,
null);
677 $this->dbHelper->shouldReceive(
"getUsers")->withArgs([$user[
'user_pk']])->andReturn($users);
679 $requestHeaders =
new Headers();
680 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost"),
681 $requestHeaders, [], [], $this->streamFactory->createStream());
682 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, ApiVersion::V1);
684 $expectedResponse = (
new ResponseHelper())->withJson($memberList, 200);
685 $actualResponse = $this->groupController->getGroupMembers($request,
687 $this->assertEquals($expectedResponse->getStatusCode(),
688 $actualResponse->getStatusCode());
725 $groupIds = [1,2,3,4,5,6];
726 $userArray = [
'user_pk' => $newuser];
730 if ($version == ApiVersion::V2) {
731 $this->restHelper->getUserDao()->shouldReceive(
'getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupId);
732 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')->withArgs([$userId])->andReturn($userArray);
734 $this->dbHelper->shouldReceive(
'doesIdExist')->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
735 $this->dbHelper->shouldReceive(
'doesIdExist')->withArgs([
"users",
"user_pk",$newuser])->andReturn(
true);
736 $this->
dbManager->shouldReceive(
'getSingleRow')->withArgs([M::any(),M::any(),M::any()])->andReturn($emptyArr);
737 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
738 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')->withArgs([$userId, $groupId])->andReturn(
true);
740 $this->
dbManager->shouldReceive(
'prepare')->withArgs([M::any(),M::any()]);
741 $this->
dbManager->shouldReceive(
'execute')->withArgs([M::any(),array($groupId, $newuser,$newPerm)])->andReturn(1);
742 $this->
dbManager->shouldReceive(
'freeResult')->withArgs([1]);
744 $body = $this->streamFactory->createStream(json_encode([
747 $requestHeaders =
new Headers();
748 $requestHeaders->setHeader(
'Content-Type',
'application/json');
749 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
750 $requestHeaders, [], [], $body);
751 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
752 $expectedResponse =
new Info(201,
"User added to group.", InfoType::INFO);
754 $actualResponse = $this->groupController->addMember($request,
new ResponseHelper(), [
'pathParam' => $groupId,
'userPathParam' => $newuser]);
755 $this->assertEquals($expectedResponse->getCode(),$actualResponse->getStatusCode());
756 $this->assertEquals($expectedResponse->getArray(),$this->getResponseJson($actualResponse));
787 $groupIds = [1,2,3,4,5,6];
788 $userArray = [
'user_pk' => $newuser];
792 if ($version == ApiVersion::V2) {
793 $this->restHelper->getUserDao()->shouldReceive(
'getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupId);
794 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')->withArgs([$userId])->andReturn($userArray);
796 $this->dbHelper->shouldReceive(
'doesIdExist')->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
797 $this->dbHelper->shouldReceive(
'doesIdExist')->withArgs([
"users",
"user_pk",$newuser])->andReturn(
true);
798 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
799 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')->withArgs([$userId, $groupId])->andReturn(
false);
801 $body = $this->streamFactory->createStream(json_encode([
804 $requestHeaders =
new Headers();
805 $requestHeaders->setHeader(
'Content-Type',
'application/json');
806 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
807 $requestHeaders, [], [], $body);
808 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
809 $this->expectException(HttpForbiddenException::class);
812 [
'pathParam' => $groupId,
'userPathParam' => $newuser]);
823 $this->testAddMemberUserGroupAdmin(ApiVersion::V1);
833 $this->testAddMemberUserGroupAdmin();
835 private function testAddMemberUserGroupAdmin($version = ApiVersion::V2)
841 $groupIds = [1,2,3,4,5,6];
842 $userArray = [
'user_pk' => $newuser];
846 if ($version == ApiVersion::V2) {
847 $this->restHelper->getUserDao()->shouldReceive(
'getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupId);
848 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')->withArgs([$userId])->andReturn($userArray);
850 $this->dbHelper->shouldReceive(
'doesIdExist')->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
851 $this->dbHelper->shouldReceive(
'doesIdExist')->withArgs([
"users",
"user_pk",$newuser])->andReturn(
true);
852 $this->
dbManager->shouldReceive(
'getSingleRow')->withArgs([M::any(),M::any(),M::any()])->andReturn($emptyArr);
853 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
854 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')->withArgs([$userId, $groupId])->andReturn(
true);
856 $this->
dbManager->shouldReceive(
'prepare')->withArgs([M::any(),M::any()]);
857 $this->
dbManager->shouldReceive(
'execute')->withArgs([M::any(),array($groupId, $newuser,$newPerm)])->andReturn(1);
858 $this->
dbManager->shouldReceive(
'freeResult')->withArgs([1]);
860 $body = $this->streamFactory->createStream(json_encode([
863 $requestHeaders =
new Headers();
864 $requestHeaders->setHeader(
'Content-Type',
'application/json');
865 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
866 $requestHeaders, [], [], $body);
867 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
868 $expectedResponse =
new Info(201,
"User added to group.", InfoType::INFO);
870 $actualResponse = $this->groupController->addMember($request,
new ResponseHelper(), [
'pathParam' => $groupId,
'userPathParam' => $newuser]);
871 $this->assertEquals($expectedResponse->getCode(),$actualResponse->getStatusCode());
872 $this->assertEquals($expectedResponse->getArray(),$this->getResponseJson($actualResponse));
909 $groupIds = [1,2,3,4,5,6];
910 $userArray = [
'user_pk' => $newuser];
914 if ($version == ApiVersion::V2) {
915 $this->restHelper->getUserDao()->shouldReceive(
'getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupId);
916 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')->withArgs([$userId])->andReturn($userArray);
918 $this->dbHelper->shouldReceive(
'doesIdExist')->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
919 $this->dbHelper->shouldReceive(
'doesIdExist')->withArgs([
"users",
"user_pk",$newuser])->andReturn(
true);
920 $this->
dbManager->shouldReceive(
'getSingleRow')->withArgs([M::any(),M::any(),M::any()])->andReturn(
true);
921 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
922 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')->withArgs([$userId, $groupId])->andReturn(
true);
924 $body = $this->streamFactory->createStream(json_encode([
927 $requestHeaders =
new Headers();
928 $requestHeaders->setHeader(
'Content-Type',
'application/json');
929 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
930 $requestHeaders, [], [], $body);
931 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
932 $this->expectException(HttpBadRequestException::class);
935 [
'pathParam' => $groupId,
'userPathParam' => $newuser]);
962 $group_user_member_pk = 1;
966 $groupIds = [1,2,3,4,5,6];
967 $userArray = [
'user_pk' => $userPk];
971 if ($version == ApiVersion::V2) {
972 $this->restHelper->getUserDao()->shouldReceive(
'getGroupIdByName')->withArgs([$groupIds[0]])->andReturn($groupId);
973 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')->withArgs([$userId])->andReturn($userArray);
975 $this->dbHelper->shouldReceive(
'doesIdExist')->withArgs([
"groups",
"group_pk", $groupIds[0]])->andReturn(
true);
976 $this->dbHelper->shouldReceive(
'doesIdExist')->withArgs([
"users",
"user_pk",$userPk])->andReturn(
true);
977 $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]);
978 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
979 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')->withArgs([$userPk, $groupIds[0]])->andReturn(
true);
980 $this->userDao->shouldReceive(
'getUserByName')->withArgs([M::any(),M::any()]);
982 $this->adminPlugin->shouldReceive(
'updateGUMPermission')->withArgs([$group_user_member_pk,$newPerm, $this->
dbManager ]);
984 $body = $this->streamFactory->createStream(json_encode([
987 $requestHeaders =
new Headers();
988 $requestHeaders->setHeader(
'Content-Type',
'application/json');
989 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
990 $requestHeaders, [], [], $body);
991 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
992 $expectedResponse =
new Info(202,
"Permission updated successfully.", InfoType::INFO);
994 $actualResponse = $this->groupController->changeUserPermission($request,
new ResponseHelper(), [
'pathParam' => $groupIds[0],
'userPathParam' => $userId]);
995 $this->assertEquals($expectedResponse->getCode(),$actualResponse->getStatusCode());
996 $this->assertEquals($expectedResponse->getArray(),$this->getResponseJson($actualResponse));
1027 $userArray = [
'user_pk' => $userId];
1030 if ($version == ApiVersion::V2) {
1031 $this->userDao->shouldReceive(
'getUserByName')
1032 ->withArgs([$userId])->andReturn($userArray);
1033 $this->userDao->shouldReceive(
'getGroupIdByName')
1034 ->withArgs([$groupId])->andReturn($groupId);
1036 $this->restHelper->shouldReceive(
'getUserId')->andReturn(1);
1037 $this->dbHelper->shouldReceive(
'doesIdExist')
1038 ->withArgs([
"groups",
"group_pk", $groupId])->andReturn(
true);
1039 $this->dbHelper->shouldReceive(
'doesIdExist')
1040 ->withArgs([
"users",
"user_pk", $userId])->andReturn(
true);
1041 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')->andReturn(
true);
1042 $this->
dbManager->shouldReceive(
'getSingleRow')->withArgs([M::any(), M::any(), M::any()])
1043 ->andReturn([
'group_user_member_pk' => $groupMemberPk]);
1044 $this->adminPlugin->shouldReceive(
'updateGUMPermission')
1045 ->withArgs([$groupMemberPk, -1, $this->
dbManager]);
1047 $requestHeaders =
new Headers();
1048 $request =
new Request(
"DELETE",
new Uri(
"HTTP",
"localhost"),
1049 $requestHeaders, [], [], $this->streamFactory->createStream());
1050 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, $version);
1052 $expectedResponse =
new Info(202,
"User will be removed from group.", InfoType::INFO);
1053 $actualResponse = $this->groupController->deleteGroupMember($request,
1054 new ResponseHelper(), [
'pathParam' => $groupId,
'userPathParam' => $userId]);
1056 $this->assertEquals($expectedResponse->getCode(), $actualResponse->getStatusCode());
1057 $this->assertEquals($expectedResponse->getArray(), $this->getResponseJson($actualResponse));
1071 $this->userDao->shouldReceive(
'getUserByName')
1072 ->withArgs([$userId])->andReturn(
null);
1074 $requestHeaders =
new Headers();
1075 $request =
new Request(
"DELETE",
new Uri(
"HTTP",
"localhost"),
1076 $requestHeaders, [], [], $this->streamFactory->createStream());
1077 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, ApiVersion::V2);
1079 $this->expectException(HttpNotFoundException::class);
1080 $this->groupController->deleteGroupMember($request,
1081 new ResponseHelper(), [
'pathParam' => $groupId,
'userPathParam' => $userId]);
1096 $this->userDao->shouldReceive(
'getUserByName')
1097 ->withArgs([$userId])->andReturn(
null);
1099 $body = $this->streamFactory->createStream(json_encode([
"perm" => $newPerm]));
1100 $requestHeaders =
new Headers();
1101 $requestHeaders->setHeader(
'Content-Type',
'application/json');
1102 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
1103 $requestHeaders, [], [], $body);
1104 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, ApiVersion::V2);
1106 $this->expectException(HttpNotFoundException::class);
1107 $this->groupController->addMember($request,
1108 new ResponseHelper(), [
'pathParam' => $groupId,
'userPathParam' => $userId]);
1123 $this->userDao->shouldReceive(
'getUserByName')
1124 ->withArgs([$userId])->andReturn(
null);
1126 $body = $this->streamFactory->createStream(json_encode([
"perm" => $newPerm]));
1127 $requestHeaders =
new Headers();
1128 $requestHeaders->setHeader(
'Content-Type',
'application/json');
1129 $request =
new Request(
"PATCH",
new Uri(
"HTTP",
"localhost"),
1130 $requestHeaders, [], [], $body);
1131 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME, ApiVersion::V2);
1133 $this->expectException(HttpNotFoundException::class);
1134 $this->groupController->changeUserPermission($request,
1135 new ResponseHelper(), [
'pathParam' => $groupId,
'userPathParam' => $userId]);
Contains the constants and helpers for authentication of user.
Controller for Group model.
Provides helper methods to access database for REST api.
Override Slim response for withJson function.
Provides various DAO helper functions for REST api.
Different type of infos provided by REST.
Info model to contain general error and return values.
Model to hold user information.
Tests for GroupController.
setUp()
Setup test objects.
testUpdateGroupNotFoundV2()
testGetGroupMembersGlobalAdminV1()
getUpdateGroupRequest($newGroupName, $version=ApiVersion::V2)
testAddMemberUserNotAdminV1()
testChangeUserPermissionV2()
tearDown()
Remove test objects.
testDeleteGroupMemberSuccessV2()
testGetDeletableGroupsV1()
testChangeUserPermissionUserNotFoundV2()
testUpdateGroup($version=ApiVersion::V2)
testCreateGroup($version=ApiVersion::V2)
testChangeUserPermissionV1()
getResponseJson($response)
testDeleteGroupMemberSuccess($version=ApiVersion::V2)
testChangeUserPermission($version=ApiVersion::V2)
testDeleteGroupMemberSuccessV1()
testAddMemberUserAlreadyMember($version=ApiVersion::V2)
testAddMemberUserAlreadyMemberV1()
testGetGroupMembersGroupNotFoundV1()
testUpdateGroupNoNameProvidedV2()
testUpdateGroupNameAlreadyExistsV2()
testAddMemberUserNotMember($version=ApiVersion::V2)
testGetGroupMembers($version=ApiVersion::V2)
testDeleteGroup($version=ApiVersion::V2)
testGetDeletableGroups($version=ApiVersion::V2)
testAddMemberUserNotMemberV1()
getUsersWithGroup($userIds)
getGroupMembers($userIds)
testAddMemberUserNotAdmin($version=ApiVersion::V2)
testAddMemberUserNotMemberV2()
testAddMemberUserNotAdminV2()
testUpdateGroupInvalidNameV2()
testAddMemberUserNotFoundV2()
testDeleteGroupMemberUserNotFoundV2()
testAddMemberUserGroupAdminV1()
testUpdateGroupNotGroupAdminV2()
testGetDeletableGroupsV2()
testAddMemberUserAlreadyMemberV2()
testAddMemberUserGroupAdminV2()
testGetGroupMembersNotGroupAdminV1()
fo_dbManager * dbManager
fo_dbManager object