15 require_once dirname(__DIR__, 4) .
'/lib/php/Plugin/FO_Plugin.php';
30 use Slim\Psr7\Request;
61 protected function setUp() : void
64 $container = M::mock(
'ContainerBuilder');
65 $this->dbHelper = M::mock(DbHelper::class);
66 $this->restHelper = M::mock(RestHelper::class);
67 $this->userDao = M::mock(UserDao::class);
69 $this->restHelper->shouldReceive(
'getDbHelper')->andReturn($this->dbHelper);
70 $this->restHelper->shouldReceive(
'getUserDao')
71 ->andReturn($this->userDao);
73 $container->shouldReceive(
'get')->withArgs(array(
74 'helper.restHelper'))->andReturn($this->restHelper);
76 $this->assertCountBefore = \Hamcrest\MatcherAssert::getCount();
86 $this->addToAssertionCount(
87 \Hamcrest\MatcherAssert::getCount() - $this->assertCountBefore);
100 $response->getBody()->seek(0);
101 return json_decode($response->getBody()->getContents(),
true);
111 $userArray = array();
112 foreach ($userIds as $userId) {
115 } elseif ($userId > 2 && $userId <= 4) {
117 } elseif ($userId == 5) {
122 $user =
new User($userId,
"user$userId",
"User $userId",
123 "user$userId@example.com", $accessLevel, 2, 4,
"");
124 $userArray[] = $user;
155 $userArray = [
'user_pk' => $userId];
157 if ($version == ApiVersion::V2) {
158 $userArray = [
'user_pk' => $userId];
159 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')
160 ->withArgs([$userId])->andReturn($userArray);
162 $request = M::mock(Request::class);
163 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')
164 ->withArgs([$userName])->andReturn($userArray);
165 $request->shouldReceive(
'getAttribute')->andReturn($version);
166 $this->dbHelper->shouldReceive(
'doesIdExist')
167 ->withArgs([
"users",
"user_pk", $userId])->andReturn(
true);
168 $this->dbHelper->shouldReceive(
'getUsers')->withArgs([$userId])
170 $expectedResponse = (
new ResponseHelper())->withJson($user[0]->getArray($version), 200);
171 $actualResponse = $this->userController->getUsers($request,
new ResponseHelper(),
172 [
'pathParam' => $userId]);
173 $this->assertEquals($expectedResponse->getStatusCode(),
174 $actualResponse->getStatusCode());
204 $request = M::mock(Request::class);
205 if ($version == ApiVersion::V2) {
206 $userArray = [
'user_pk' => $userId];
207 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')
208 ->withArgs([$userId])->andReturn($userArray);
210 $request->shouldReceive(
'getAttribute')->andReturn($version);
211 $this->dbHelper->shouldReceive(
'doesIdExist')
212 ->withArgs([
"users",
"user_pk", $userId])->andReturn(
false);
213 $this->expectException(HttpNotFoundException::class);
216 [
'pathParam' => $userId]);
244 $users = $this->
getUsers([2, 3, 4]);
245 if ($version == ApiVersion::V2) {
246 $userArray = [
'user_pk' => $userId];
247 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')
248 ->withArgs([$userId])->andReturn($userArray);
250 $request = M::mock(Request::class);
251 $request->shouldReceive(
'getAttribute')->andReturn($version);
252 $this->dbHelper->shouldReceive(
'getUsers')->withArgs([
null])
256 foreach ($users as $user) {
257 $allUsers[] = $user->getArray($version);
260 $expectedResponse = (
new ResponseHelper())->withJson($allUsers, 200);
261 $actualResponse = $this->userController->getUsers($request,
new ResponseHelper(), []);
262 $this->assertEquals($expectedResponse->getStatusCode(),
263 $actualResponse->getStatusCode());
293 $userArray = [
'user_pk' => $userId];
294 $request = M::mock(Request::class);
295 $request->shouldReceive(
'getAttribute')->andReturn($version);
296 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')
297 ->withArgs([$userId])->andReturn($userArray);
298 $this->dbHelper->shouldReceive(
'doesIdExist')
299 ->withArgs([
"users",
"user_pk", $userId])->andReturn(
true);
300 $this->dbHelper->shouldReceive(
'deleteUser')->withArgs([$userId]);
301 $info =
new Info(202,
"User will be deleted", InfoType::INFO);
302 $expectedResponse = (
new ResponseHelper())->withJson($info->getArray(),
304 $actualResponse = $this->userController->deleteUser($request,
new ResponseHelper(),
305 [
'pathParam' => $userId]);
306 $this->assertEquals($expectedResponse->getStatusCode(),
307 $actualResponse->getStatusCode());
337 $userArray = [
'user_pk' => $userId];
338 $request = M::mock(Request::class);
339 $request->shouldReceive(
'getAttribute')->andReturn($version);
340 $this->restHelper->getUserDao()->shouldReceive(
'getUserByName')
341 ->withArgs([$userId])->andReturn($userArray);
342 $this->dbHelper->shouldReceive(
'doesIdExist')
343 ->withArgs([
"users",
"user_pk", $userId])->andReturn(
false);
344 $this->expectException(HttpNotFoundException::class);
347 [
'pathParam' => $userId]);
376 $request = M::mock(Request::class);
377 $request->shouldReceive(
'getAttribute')->andReturn($version);
378 $this->restHelper->shouldReceive(
'getUserId')->andReturn($userId);
379 $this->dbHelper->shouldReceive(
'getUsers')->withArgs([$userId])
381 $this->userDao->shouldReceive(
'getUserAndDefaultGroupByUserName')->withArgs([$user[0]->getArray()[
"name"]])
382 ->andReturn([
"group_name" =>
"fossy"]);
384 $expectedUser = $user[0]->getArray($version);
385 if ($version == ApiVersion::V1) {
386 $expectedUser[
"default_group"] =
"fossy";
388 $expectedResponse = (
new ResponseHelper())->withJson($expectedUser, 200);
390 $actualResponse = $this->userController->getCurrentUser($request,
392 $this->assertEquals($expectedResponse->getStatusCode(),
393 $actualResponse->getStatusCode());
405 $request = M::mock(Request::class);
406 $request->shouldReceive(
'getHeaderLine')
407 ->withArgs([
'Content-Type'])->andReturn(
'');
408 $request->shouldReceive(
'getAttribute')->andReturn(ApiVersion::V1);
409 $request->shouldReceive(
'getParsedBody')->andReturn(
null);
411 $this->expectException(HttpBadRequestException::class);
412 $this->expectExceptionMessage(
"Request body is empty or malformed.");
414 $this->userController->addUser($request,
new ResponseHelper(), []);
424 $request = M::mock(Request::class);
425 $request->shouldReceive(
'getHeaderLine')
426 ->withArgs([
'Content-Type'])->andReturn(
'');
427 $request->shouldReceive(
'getAttribute')->andReturn(ApiVersion::V1);
428 $request->shouldReceive(
'getParsedBody')->andReturn([
'email' =>
'test@test.com']);
430 $this->expectException(HttpBadRequestException::class);
431 $this->expectExceptionMessage(
"Username must be specified.");
433 $this->userController->addUser($request,
new ResponseHelper(), []);
Contains the constants and helpers for authentication of user.
Controller for User 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.
Test cases for UserController.
testDeleteUserDoesNotExists($version=ApiVersion::V2)
testGetSpecificUserNotFoundV2()
tearDown()
Remove test objects.
testGetAllUsers($version=ApiVersion::V2)
testGetSpecificUserNotFoundV1()
testDeleteUser($version=ApiVersion::V2)
testDeleteUserDoesNotExistsV1()
testGetSpecificUserNotFound($version=ApiVersion::V2)
testGetCurrentUser($version=ApiVersion::V2)
testGetSpecificUser($version=ApiVersion::V2)
getResponseJson($response)
setUp()
Setup test objects.
testDeleteUserDoesNotExistsV2()
#define PLUGIN_DB_WRITE
Plugin requires write permission on DB.
#define PLUGIN_DB_READ
Plugin requires read permission on DB.
#define PLUGIN_DB_ADMIN
Plugin requires admin level permission on DB.