|
50 | 50 | use PluginFormcreatorTargetProblem; |
51 | 51 | use Problem; |
52 | 52 | use Session; |
| 53 | +use PluginFormcreatorForm_Validator; |
53 | 54 | use Ticket; |
54 | 55 | use TicketValidation; |
55 | 56 | use Toolbox; |
@@ -946,4 +947,112 @@ public function testParseTags($instance, $template, $expected) { |
946 | 947 | $output = $instance->parseTags($template, $ticket, true); |
947 | 948 | $this->string($output)->isEqualTo($expected); |
948 | 949 | } |
| 950 | + |
| 951 | + public function providerCanViewItem() { |
| 952 | + $this->login('glpi', 'glpi'); |
| 953 | + $form = $this->getForm(); |
| 954 | + $formAnswer = $this->getFormAnswer([ |
| 955 | + 'plugin_formcreator_forms_id' => $form->getID(), |
| 956 | + ]); |
| 957 | + $this->logout(); |
| 958 | + |
| 959 | + yield 'Not authenticated' => [ |
| 960 | + 'formAnswer' => $formAnswer, |
| 961 | + 'expected' => false, |
| 962 | + ]; |
| 963 | + |
| 964 | + $this->login('glpi', 'glpi'); |
| 965 | + |
| 966 | + yield 'User granted to edit forms' => [ |
| 967 | + 'formAnswer' => $formAnswer, |
| 968 | + 'expected' => true, |
| 969 | + ]; |
| 970 | + |
| 971 | + $this->login('normal', 'normal'); |
| 972 | + $formAnswer = $this->getFormAnswer([ |
| 973 | + 'plugin_formcreator_forms_id' => $form->getID(), |
| 974 | + ]); |
| 975 | + |
| 976 | + yield 'User is the requester' => [ |
| 977 | + 'formAnswer' => $formAnswer, |
| 978 | + 'expected' => true, |
| 979 | + ]; |
| 980 | + |
| 981 | + $this->login('tech', 'tech'); |
| 982 | + |
| 983 | + yield 'User is not the requester' => [ |
| 984 | + 'formAnswer' => $formAnswer, |
| 985 | + 'expected' => false, |
| 986 | + ]; |
| 987 | + |
| 988 | + $form->update([ |
| 989 | + 'id' => $form->getID(), |
| 990 | + 'validation_required' => PluginFormcreatorForm_Validator::VALIDATION_USER, |
| 991 | + '_validator_users' => [ |
| 992 | + User::getIdByName('tech'), |
| 993 | + ], |
| 994 | + ]); |
| 995 | + $formAnswer = $this->getFormAnswer([ |
| 996 | + 'plugin_formcreator_forms_id' => $form->getID(), |
| 997 | + ]); |
| 998 | + |
| 999 | + yield 'User is the validator' => [ |
| 1000 | + 'formAnswer' => $formAnswer, |
| 1001 | + 'expected' => true, |
| 1002 | + ]; |
| 1003 | + |
| 1004 | + $this->login('normal', 'normal'); |
| 1005 | + |
| 1006 | + yield 'User is not the validator' => [ |
| 1007 | + 'formAnswer' => $formAnswer, |
| 1008 | + 'expected' => false, |
| 1009 | + ]; |
| 1010 | + |
| 1011 | + $group = $this->getGlpiCoreItem(Group::class, [ |
| 1012 | + 'name' => 'group' . $this->getUniqueString() |
| 1013 | + ]); |
| 1014 | + $user = $this->getGlpiCoreItem(User::class, [ |
| 1015 | + 'name' => 'user' . $this->getUniqueString(), |
| 1016 | + 'password' => 'password', |
| 1017 | + 'password2' => 'password', |
| 1018 | + ]); |
| 1019 | + |
| 1020 | + $form->update([ |
| 1021 | + 'id' => $form->getID(), |
| 1022 | + 'validation_required' => PluginFormcreatorForm_Validator::VALIDATION_GROUP, |
| 1023 | + '_validator_groups' => [ |
| 1024 | + $group->getID(), |
| 1025 | + ], |
| 1026 | + ]); |
| 1027 | + $this->login('normal', 'normal'); |
| 1028 | + $formAnswer = $this->getFormAnswer([ |
| 1029 | + 'plugin_formcreator_forms_id' => $form->getID(), |
| 1030 | + ]); |
| 1031 | + $this->login($user->fields['name'], 'password'); |
| 1032 | + |
| 1033 | + yield 'User is not a member of validator group' => [ |
| 1034 | + 'formAnswer' => $formAnswer, |
| 1035 | + 'expected' => false, |
| 1036 | + ]; |
| 1037 | + |
| 1038 | + $groupUser = new Group_User(); |
| 1039 | + $groupUser->add([ |
| 1040 | + 'groups_id' => $group->getID(), |
| 1041 | + 'users_id' => $user->getID(), |
| 1042 | + ]); |
| 1043 | + |
| 1044 | + yield 'User is a member of validator group' => [ |
| 1045 | + 'formAnswer' => $formAnswer, |
| 1046 | + 'expected' => true, |
| 1047 | + ]; |
| 1048 | + } |
| 1049 | + |
| 1050 | + /** |
| 1051 | + * @dataProvider providerCanViewItem |
| 1052 | + */ |
| 1053 | + public function testCanViewItem($formAnswer, bool $expected) { |
| 1054 | + /** @var \PluginFormcreatorFormAnswer $formAnswer */ |
| 1055 | + $output = $formAnswer->canViewItem(); |
| 1056 | + $this->boolean($output)->isEqualTo($expected); |
| 1057 | + } |
949 | 1058 | } |
0 commit comments