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 use \PHPUnit\Framework\TestCase;
23 
24 require_once dirname(dirname(dirname(dirname(__DIR__)))) .
25  '/lib/php/Plugin/FO_Plugin.php';
26 
31 class UserTest extends TestCase
32 {
42  private $dbHelper;
47  private $userDao;
48 
53  private $restHelper;
58  protected function setUp() : void
59  {
60  global $container;
61  $container = M::mock('ContainerBuilder');
62  $this->restHelper = M::mock(RestHelper::class);
63  $this->userDao = M::mock(UserDao::class);
64 
65  $this->restHelper->shouldReceive('getDbHelper')->andReturn($this->dbHelper);
66  $this->restHelper->shouldReceive('getUserDao')
67  ->andReturn($this->userDao);
68 
69  $container->shouldReceive('get')->withArgs(array(
70  'helper.restHelper'))->andReturn($this->restHelper);
71  }
72 
74 
80  public function testConstructor()
81  {
82  $user = new User(1, "fossy", "Admin user", "fossy@gmail.com", "admin", 4, "fossy@gmail.com", "monk", 3, null);
83  $this->assertInstanceOf(User::class, $user);
84  }
85 
90  protected function tearDown() : void
91  {
92  $this->addToAssertionCount(
93  \Hamcrest\MatcherAssert::getCount() - $this->assertCountBefore);
94  M::close();
95  }
96 
110  public function testDataFormatV1()
111  {
112  $this->testDataFormat(ApiVersion::V1);
113  }
114 
122  public function testDataFormatV2()
123  {
124  $this->testDataFormat(ApiVersion::V2);
125  }
126 
132  private function testDataFormat($version)
133  {
134  if($version==ApiVersion::V1){
135  $expectedCurrentUser = [
136  "id" => 2,
137  "name" => 'fossy',
138  "description" => 'super user',
139  "email" => 'fossy@localhost',
140  "accessLevel" => 'admin',
141  "rootFolderId" => 2,
142  "defaultGroup" => 0,
143  "emailNotification" => true,
144  "agents" => [
145  "bucket" => true,
146  "copyright_email_author" => true,
147  "ecc" => false,
148  "keyword" => false,
149  "mimetype" => false,
150  "monk" => false,
151  "nomos" => true,
152  "ojo" => true,
153  "package" => false,
154  "heritage" => false,
155  "patent" => false,
156  "scanoss" => false,
157  "reso" => false,
158  "compatibility" => false
159  ]
160  ];
161  } else{
162  $expectedCurrentUser = [
163  "id" => 2,
164  "name" => 'fossy',
165  "description" => 'super user',
166  "email" => 'fossy@localhost',
167  "accessLevel" => 'admin',
168  "rootFolderId" => 2,
169  "defaultGroup" => "fossy",
170  "emailNotification" => true,
171  "agents" => [
172  "bucket" => true,
173  "copyrightEmailAuthor" => true,
174  "ecc" => false,
175  "keyword" => false,
176  "mimetype" => false,
177  "monk" => false,
178  "nomos" => true,
179  "ojo" => true,
180  "pkgagent" => false,
181  "ipra" => false,
182  "softwareHeritage" => false,
183  "scanoss" => false,
184  "reso" => false,
185  "compatibility" => false
186  ]
187  ];
188  }
189  $expectedNonAdminUser = [
190  "id" => 8,
191  "name" => 'userii',
192  "description" => 'very useri',
193  "defaultGroup" => 0,
194  ];
195 
196  $actualCurrentUserV1 = new User(2, 'fossy', 'super user', 'fossy@localhost',
197  PLUGIN_DB_ADMIN, 2, true, "bucket,copyright,nomos,ojo", 0);
198 
199  $this->userDao->shouldReceive('getGroupNameById')->withArgs([0])->andReturn("fossy");
200 
201  $actualCurrentUserV2 = new User(2, 'fossy', 'super user', 'fossy@localhost',
202  PLUGIN_DB_ADMIN, 2, true, "bucket,copyright,nomos,ojo", "fossy");
203  $actualNonAdminUser = new User(8, 'userii', 'very useri', null, null, null,
204  null, null, 0);
205  if ($version == ApiVersion::V2) {
206  $this->assertEquals($expectedCurrentUser, $actualCurrentUserV2->getArray($version));
207  } else {
208  $this->assertEquals($expectedCurrentUser, $actualCurrentUserV1->getArray($version));
209  }
210  $this->assertEquals($expectedNonAdminUser, $actualNonAdminUser->getArray());
211  }
212 }
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:90
#define PLUGIN_DB_ADMIN
Plugin requires admin level permission on DB.
Definition: libfossology.h:39