public function testGetItems($session_token)
{
// test retrieve all users
$res = $this->doHttpRequest('GET', 'User/', ['headers' => ['Session-Token' => $session_token], 'query' => ['expand_dropdowns' => true]]);
$this->assertNotEquals(null, $res, $this->last_error);
$this->assertEquals(200, $res->getStatusCode());
$body = $res->getBody();
$data = json_decode($body, true);
$this->assertGreaterThanOrEqual(4, count($data));
$this->assertArrayHasKey('id', $data[0]);
$this->assertArrayHasKey('name', $data[0]);
$this->assertArrayNotHasKey('password', $data[0]);
$this->assertArrayHasKey('is_active', $data[0]);
$this->assertFalse(is_numeric($data[0]['entities_id']));
// for expand_dropdowns
// test retrieve partial users
$res = $this->doHttpRequest('GET', 'User/', ['headers' => ['Session-Token' => $session_token], 'query' => ['range' => '0-1', 'expand_dropdowns' => true]]);
$this->assertNotEquals(null, $res, $this->last_error);
$this->assertEquals(206, $res->getStatusCode());
$body = $res->getBody();
$data = json_decode($body, true);
$this->assertEquals(2, count($data));
$this->assertArrayHasKey('id', $data[0]);
$this->assertArrayHasKey('name', $data[0]);
$this->assertArrayNotHasKey('password', $data[0]);
$this->assertArrayHasKey('is_active', $data[0]);
$this->assertFalse(is_numeric($data[0]['entities_id']));
// for expand_dropdowns
// test retrieve 1 user with a text filter
$res = $this->doHttpRequest('GET', 'User/', ['headers' => ['Session-Token' => $session_token], 'query' => ['searchText' => array('name' => 'gl')]]);
$this->assertNotEquals(null, $res, $this->last_error);
$this->assertEquals(200, $res->getStatusCode());
$body = $res->getBody();
$data = json_decode($body, true);
$this->assertEquals(1, count($data));
$this->assertArrayHasKey('id', $data[0]);
$this->assertArrayHasKey('name', $data[0]);
$this->assertEquals('glpi', $data[0]['name']);
// test retrieve invalid range of users
try {
$res = $this->doHttpRequest('GET', 'User/', ['headers' => ['Session-Token' => $session_token], 'query' => ['range' => '100-105', 'expand_dropdowns' => true]]);
} catch (ClientException $e) {
$response = $e->getResponse();
$this->assertEquals(400, $response->getStatusCode());
}
// Test only_id param
$res = $this->doHttpRequest('GET', 'User/', ['headers' => ['Session-Token' => $session_token], 'query' => ['only_id' => true]]);
$this->assertNotEquals(null, $res, $this->last_error);
$this->assertEquals(200, $res->getStatusCode());
$body = $res->getBody();
$data = json_decode($body, true);
$this->assertNotEquals(false, $data);
$this->assertGreaterThanOrEqual(4, count($data));
$this->assertArrayHasKey('id', $data[0]);
$this->assertArrayNotHasKey('name', $data[0]);
$this->assertArrayNotHasKey('password', $data[0]);
$this->assertArrayNotHasKey('is_active', $data[0]);
// test retrieve all config
$res = $this->doHttpRequest('GET', 'Config/', ['headers' => ['Session-Token' => $session_token], 'query' => ['expand_dropdowns' => true]]);
$this->assertNotEquals(null, $res, $this->last_error);
$this->assertEquals(200, $res->getStatusCode());
$body = $res->getBody();
$data = json_decode($body, true);
foreach ($data as $config_row) {
$this->assertNotEquals('smtp_passwd', $config_row['name']);
$this->assertNotEquals('proxy_passwd', $config_row['name']);
}
}