FOSSology  4.5.1
Open Source License Compliance by Open Source Software
UserTest.php
Go to the documentation of this file.
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2020 Siemens AG
4  Author: Gaurav Mishra <mishra.gaurav@siemens.com>
5 
6  SPDX-License-Identifier: GPL-2.0-only
7 */
14 
20 use Mockery as M;
21 
22 require_once dirname(dirname(dirname(dirname(__DIR__)))) .
23  '/lib/php/Plugin/FO_Plugin.php';
24 
29 class UserTest extends \PHPUnit\Framework\TestCase
30 {
40  private $dbHelper;
45  private $userDao;
46 
51  private $restHelper;
56  protected function setUp() : void
57  {
58  global $container;
59  $container = M::mock('ContainerBuilder');
60  $this->restHelper = M::mock(RestHelper::class);
61  $this->userDao = M::mock(UserDao::class);
62 
63  $this->restHelper->shouldReceive('getDbHelper')->andReturn($this->dbHelper);
64  $this->restHelper->shouldReceive('getUserDao')
65  ->andReturn($this->userDao);
66 
67  $container->shouldReceive('get')->withArgs(array(
68  'helper.restHelper'))->andReturn($this->restHelper);
69  }
70 
75  protected function tearDown() : void
76  {
77  $this->addToAssertionCount(
78  \Hamcrest\MatcherAssert::getCount() - $this->assertCountBefore);
79  M::close();
80  }
81 
95  public function testDataFormatV1()
96  {
97  $this->testDataFormat(ApiVersion::V1);
98  }
99 
107  public function testDataFormatV2()
108  {
109  $this->testDataFormat(ApiVersion::V2);
110  }
111 
117  private function testDataFormat($version)
118  {
119  if($version==ApiVersion::V1){
120  $expectedCurrentUser = [
121  "id" => 2,
122  "name" => 'fossy',
123  "description" => 'super user',
124  "email" => 'fossy@localhost',
125  "accessLevel" => 'admin',
126  "rootFolderId" => 2,
127  "defaultGroup" => 0,
128  "emailNotification" => true,
129  "agents" => [
130  "bucket" => true,
131  "copyright_email_author" => true,
132  "ecc" => false,
133  "keyword" => false,
134  "mimetype" => false,
135  "monk" => false,
136  "nomos" => true,
137  "ojo" => true,
138  "package" => false,
139  "heritage" => false,
140  "patent" => false,
141  "scanoss" => false,
142  "reso" => false,
143  "compatibility" => false
144  ]
145  ];
146  } else{
147  $expectedCurrentUser = [
148  "id" => 2,
149  "name" => 'fossy',
150  "description" => 'super user',
151  "email" => 'fossy@localhost',
152  "accessLevel" => 'admin',
153  "rootFolderId" => 2,
154  "defaultGroup" => "fossy",
155  "emailNotification" => true,
156  "agents" => [
157  "bucket" => true,
158  "copyrightEmailAuthor" => true,
159  "ecc" => false,
160  "keyword" => false,
161  "mimetype" => false,
162  "monk" => false,
163  "nomos" => true,
164  "ojo" => true,
165  "pkgagent" => false,
166  "ipra" => false,
167  "softwareHeritage" => false,
168  "scanoss" => false,
169  "reso" => false,
170  "compatibility" => false
171  ]
172  ];
173  }
174  $expectedNonAdminUser = [
175  "id" => 8,
176  "name" => 'userii',
177  "description" => 'very useri',
178  "defaultGroup" => 0,
179  ];
180 
181  $actualCurrentUserV1 = new User(2, 'fossy', 'super user', 'fossy@localhost',
182  PLUGIN_DB_ADMIN, 2, true, "bucket,copyright,nomos,ojo", 0);
183 
184  $this->userDao->shouldReceive('getGroupNameById')->withArgs([0])->andReturn("fossy");
185 
186  $actualCurrentUserV2 = new User(2, 'fossy', 'super user', 'fossy@localhost',
187  PLUGIN_DB_ADMIN, 2, true, "bucket,copyright,nomos,ojo", "fossy");
188  $actualNonAdminUser = new User(8, 'userii', 'very useri', null, null, null,
189  null, null, 0);
190  if ($version == ApiVersion::V2) {
191  $this->assertEquals($expectedCurrentUser, $actualCurrentUserV2->getArray($version));
192  } else {
193  $this->assertEquals($expectedCurrentUser, $actualCurrentUserV1->getArray($version));
194  }
195  $this->assertEquals($expectedNonAdminUser, $actualNonAdminUser->getArray());
196  }
197 }
Provides helper methods to access database for REST api.
Definition: DbHelper.php:38
Provides various DAO helper functions for REST api.
Definition: RestHelper.php:32
Model to hold user information.
Definition: User.php:21
tearDown()
Remove test objects.
Definition: UserTest.php:75
#define PLUGIN_DB_ADMIN
Plugin requires admin level permission on DB.
Definition: libfossology.h:39