mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
Merge branch 'feature/restapi-pass-jsondata-asfile2' into develop
This commit is contained in:
@@ -15,8 +15,11 @@ class RestTest extends ItopDataTestCase
|
||||
{
|
||||
const USE_TRANSACTION = false;
|
||||
|
||||
const MODE = [ 'JSONDATA_AS_STRING' => 0, 'JSONDATA_AS_FILE' => 1 , 'NO_JSONDATA' => 2 ];
|
||||
|
||||
private $sTmpFile = "";
|
||||
private $bPassJsonDataAsFile = false;
|
||||
/** @var int $iJsonDataMode */
|
||||
private $sJsonDataMode;
|
||||
private $sUrl;
|
||||
private $sLogin;
|
||||
private $sPassword = "Iuytrez9876543ç_è-(";
|
||||
@@ -52,16 +55,23 @@ class RestTest extends ItopDataTestCase
|
||||
|
||||
/**
|
||||
* @dataProvider BasicProvider
|
||||
* @param bool $bPassJsonDataAsFile
|
||||
* @param int $iJsonDataMode
|
||||
*/
|
||||
public function testCreateApi($bPassJsonDataAsFile)
|
||||
public function testCreateApi($iJsonDataMode)
|
||||
{
|
||||
$this->bPassJsonDataAsFile = $bPassJsonDataAsFile;
|
||||
$this->iJsonDataMode = $iJsonDataMode;
|
||||
|
||||
//create ticket
|
||||
$description = date('dmY H:i:s');
|
||||
$sOuputJson = $this->CreateTicketViaApi($description);
|
||||
$aJson = json_decode($sOuputJson, true);
|
||||
|
||||
if ($this->iJsonDataMode === self::MODE['NO_JSONDATA']){
|
||||
$this->assertContains("3", "".$aJson['code'], $sOuputJson);
|
||||
$this->assertContains("Error: Missing parameter 'json_data'", "".$aJson['message'], $sOuputJson);
|
||||
return;
|
||||
}
|
||||
|
||||
$this->assertContains("0", "".$aJson['code'], $sOuputJson);
|
||||
$sUserRequestKey = $this->array_key_first($aJson['objects']);
|
||||
$this->assertContains('UserRequest::', $sUserRequestKey);
|
||||
@@ -99,16 +109,23 @@ JSON;
|
||||
|
||||
/**
|
||||
* @dataProvider BasicProvider
|
||||
* @param bool $bPassJsonDataAsFile
|
||||
* @param int $iJsonDataMode
|
||||
*/
|
||||
public function testUpdateApi($bPassJsonDataAsFile)
|
||||
public function testUpdateApi($iJsonDataMode)
|
||||
{
|
||||
$this->bPassJsonDataAsFile = $bPassJsonDataAsFile;
|
||||
$this->iJsonDataMode = $iJsonDataMode;
|
||||
|
||||
//create ticket
|
||||
$description = date('dmY H:i:s');
|
||||
$sOuputJson = $this->CreateTicketViaApi($description);
|
||||
$aJson = json_decode($sOuputJson, true);
|
||||
|
||||
if ($this->iJsonDataMode === self::MODE['NO_JSONDATA']){
|
||||
$this->assertContains("3", "".$aJson['code'], $sOuputJson);
|
||||
$this->assertContains("Error: Missing parameter 'json_data'", "".$aJson['message'], $sOuputJson);
|
||||
return;
|
||||
}
|
||||
|
||||
$this->assertContains("0", "".$aJson['code'], $sOuputJson);
|
||||
$sUserRequestKey = $this->array_key_first($aJson['objects']);
|
||||
$this->assertContains('UserRequest::', $sUserRequestKey);
|
||||
@@ -130,17 +147,24 @@ JSON;
|
||||
}
|
||||
/**
|
||||
* @dataProvider BasicProvider
|
||||
* @param bool $bPassJsonDataAsFile
|
||||
* @param int $iJsonDataMode
|
||||
*/
|
||||
public function testDeleteApi($bPassJsonDataAsFile)
|
||||
public function testDeleteApi($iJsonDataMode)
|
||||
{
|
||||
$this->bPassJsonDataAsFile = $bPassJsonDataAsFile;
|
||||
$this->iJsonDataMode = $iJsonDataMode;
|
||||
|
||||
//create ticket
|
||||
$description = date('dmY H:i:s');
|
||||
|
||||
$sOuputJson = $this->CreateTicketViaApi($description);
|
||||
$aJson = json_decode($sOuputJson, true);
|
||||
|
||||
if ($this->iJsonDataMode === self::MODE['NO_JSONDATA']){
|
||||
$this->assertContains("3", "".$aJson['code'], $sOuputJson);
|
||||
$this->assertContains("Error: Missing parameter 'json_data'", "".$aJson['message'], $sOuputJson);
|
||||
return;
|
||||
}
|
||||
|
||||
$this->assertContains("0", "".$aJson['code'], $sOuputJson);
|
||||
$sUserRequestKey = $this->array_key_first($aJson['objects']);
|
||||
$this->assertContains('UserRequest::', $sUserRequestKey);
|
||||
@@ -173,8 +197,9 @@ JSON;
|
||||
|
||||
public function BasicProvider(){
|
||||
return [
|
||||
'call rest call' => [ 'bCallApiViaFile' => false],
|
||||
//'pass json_data as file' => [ 'bCallApiViaFile' => true]
|
||||
'call rest call' => [ 'sJsonDataMode' => self::MODE['JSONDATA_AS_STRING']],
|
||||
'pass json_data as file' => [ 'sJsonDataMode' => self::MODE['JSONDATA_AS_FILE']],
|
||||
'no json data' => [ 'sJsonDataMode' => self::MODE['NO_JSONDATA']]
|
||||
];
|
||||
}
|
||||
|
||||
@@ -228,13 +253,13 @@ JSON;
|
||||
'auth_pwd' => $this->sPassword,
|
||||
];
|
||||
|
||||
if ($this->bPassJsonDataAsFile){
|
||||
if ($this->iJsonDataMode === self::MODE['JSONDATA_AS_STRING']){
|
||||
$this->sTmpFile = tempnam(sys_get_temp_dir(), 'jsondata_');
|
||||
file_put_contents($this->sTmpFile, $sJsonDataContent);
|
||||
|
||||
$oCurlFile = curl_file_create($this->sTmpFile);
|
||||
$aPostFields['json_data'] = $oCurlFile;
|
||||
}else{
|
||||
}else if ($this->iJsonDataMode === self::MODE['JSONDATA_AS_FILE']){
|
||||
$aPostFields['json_data'] = $sJsonDataContent;
|
||||
}
|
||||
|
||||
|
||||
@@ -70,7 +70,25 @@ $oCtx = new ContextTag(ContextTag::TAG_REST);
|
||||
|
||||
$sVersion = utils::ReadParam('version', null, false, 'raw_data');
|
||||
$sOperation = utils::ReadParam('operation', null);
|
||||
|
||||
//read json_data parameter via as a string (standard behaviour)
|
||||
$sJsonString = utils::ReadParam('json_data', null, false, 'raw_data');
|
||||
|
||||
if (empty($sJsonString)){
|
||||
//N °3455: read json_data parameter via a file passed by http protocol
|
||||
if(isset($_FILES['json_data']['tmp_name']))
|
||||
{
|
||||
$sTmpFilePath = $_FILES['json_data']['tmp_name'];
|
||||
if (is_file($sTmpFilePath)){
|
||||
$sValue = file_get_contents($sTmpFilePath);
|
||||
unlink($sTmpFilePath);
|
||||
if (! empty($sValue)){
|
||||
$sJsonString = utils::Sanitize($sValue, null, 'raw_data');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$sProvider = '';
|
||||
|
||||
$oKPI = new ExecutionKPI();
|
||||
@@ -125,7 +143,7 @@ try
|
||||
{
|
||||
throw new Exception("Missing parameter 'version' (e.g. '1.0')", RestResult::MISSING_VERSION);
|
||||
}
|
||||
|
||||
|
||||
if ($sJsonString == null)
|
||||
{
|
||||
throw new Exception("Missing parameter 'json_data'", RestResult::MISSING_JSON);
|
||||
|
||||
Reference in New Issue
Block a user