Skip to content

Commit 78777a0

Browse files
committed
Make sure exam-locking endpoint returns group view along with user's view, so the UI can update permission hints.
1 parent 095bcb1 commit 78777a0

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

app/V1Module/presenters/GroupsPresenter.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1180,7 +1180,10 @@ public function actionLockStudent(string $id, string $userId)
11801180
$examLock = new GroupExamLock($exam, $user, $user->getIpLockRaw());
11811181
$this->groupExamLocks->persist($examLock);
11821182

1183-
$this->sendSuccessResponse($this->userViewFactory->getUser($user));
1183+
$this->sendSuccessResponse([
1184+
'user' => $this->userViewFactory->getUser($user),
1185+
'group' => $this->groupViewFactory->getGroup($group),
1186+
]);
11841187
}
11851188

11861189
public function checkUnlockStudent(string $id, string $userId)

tests/Security/UserLocking.phpt

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,16 @@ class UserLocking extends Tester\TestCase
145145
);
146146
$this->presenter->users->refresh($student);
147147

148-
Assert::equal($student->getId(), $payload['id']);
149-
Assert::equal($group->getId(), $payload['privateData']['groupLock']);
150-
Assert::equal($_SERVER['REMOTE_ADDR'], $payload['privateData']['ipLock']);
151-
Assert::equal($group->getExamEnd()->getTimestamp(), $payload['privateData']['groupLockExpiration']);
152-
Assert::equal($group->getExamEnd()->getTimestamp(), $payload['privateData']['ipLockExpiration']);
148+
Assert::count(2, $payload);
149+
Assert::true(array_key_exists("user", $payload));
150+
Assert::true(array_key_exists("group", $payload));
151+
152+
Assert::equal($student->getId(), $payload['user']['id']);
153+
Assert::equal($group->getId(), $payload['user']['privateData']['groupLock']);
154+
Assert::equal($_SERVER['REMOTE_ADDR'], $payload['user']['privateData']['ipLock']);
155+
Assert::equal($group->getExamEnd()->getTimestamp(), $payload['user']['privateData']['groupLockExpiration']);
156+
Assert::equal($group->getExamEnd()->getTimestamp(), $payload['user']['privateData']['ipLockExpiration']);
157+
Assert::equal($group->getId(), $payload['group']['id']);
153158

154159
Assert::true($student->isIpLocked());
155160
Assert::true($student->verifyIpLock($this->ip));
@@ -179,11 +184,16 @@ class UserLocking extends Tester\TestCase
179184
);
180185
$this->presenter->users->refresh($student);
181186

182-
Assert::equal($student->getId(), $payload['id']);
183-
Assert::equal($group->getId(), $payload['privateData']['groupLock']);
184-
Assert::equal($_SERVER['REMOTE_ADDR'], $payload['privateData']['ipLock']);
185-
Assert::equal($group->getExamEnd()->getTimestamp(), $payload['privateData']['groupLockExpiration']);
186-
Assert::equal($group->getExamEnd()->getTimestamp(), $payload['privateData']['ipLockExpiration']);
187+
Assert::count(2, $payload);
188+
Assert::true(array_key_exists("user", $payload));
189+
Assert::true(array_key_exists("group", $payload));
190+
191+
Assert::equal($student->getId(), $payload['user']['id']);
192+
Assert::equal($group->getId(), $payload['user']['privateData']['groupLock']);
193+
Assert::equal($_SERVER['REMOTE_ADDR'], $payload['user']['privateData']['ipLock']);
194+
Assert::equal($group->getExamEnd()->getTimestamp(), $payload['user']['privateData']['groupLockExpiration']);
195+
Assert::equal($group->getExamEnd()->getTimestamp(), $payload['user']['privateData']['ipLockExpiration']);
196+
Assert::equal($group->getId(), $payload['group']['id']);
187197

188198
Assert::true($student->isIpLocked());
189199
Assert::true($student->verifyIpLock($this->ip));

0 commit comments

Comments
 (0)