sTmpFile)){ unlink($this->sTmpFile); } } private function GetTicketViaRest($iId){ $sJsonGetContent = <<CallRestApi($sJsonGetContent); } private function UpdateTicketViaApi($iId, $description){ $sJsonUpdateContent = <<CallRestApi($sJsonUpdateContent); } private function CreateTicketViaApi($description){ $sJsonCreateContent = <<CallRestApi($sJsonCreateContent); } private function DeleteTicketFromApi($iId){ $sJson = <<CallRestApi($sJson); } public function BasicProvider(){ return [ 'call rest call' => [ 'bCallApiViaFile' => false], 'pass json_data as file' => [ 'bCallApiViaFile' => true] ]; } /** * @dataProvider BasicProvider */ public function testBasic($bCallApiViaFile) { $this->bCallApiViaFile = $bCallApiViaFile; //create ticket $description = date('dmY H:i:s'); $sOuputJson = $this->CreateTicketViaApi($description); $aJson = json_decode($sOuputJson, true); $this->assertContains("0", "".$aJson['code']); $sUserRequestKey = array_key_first($aJson['objects']); $this->assertContains('UserRequest::', $sUserRequestKey); $iId = $aJson['objects'][$sUserRequestKey]['key']; $sExpectedJsonOuput=<<assertEquals($sExpectedJsonOuput, $sOuputJson); $sExpectedJsonOuput=<<$description<\/p>"}}},"code":0,"message":"Found: 1"} JSON; $this->assertEquals($sExpectedJsonOuput, $this->GetTicketViaRest($iId)); //update ticket $description = date('Ymd H:i:s'); $sExpectedJsonOuput=<<$description<\/p>"}}},"code":0,"message":null} JSON; $this->assertEquals($sExpectedJsonOuput, $this->UpdateTicketViaApi($iId, $description)); //delete ticket $sExpectedJsonOuput=<<assertContains($sExpectedJsonOuput, $this->DeleteTicketFromApi($iId)); $sExpectedJsonOuput=<<assertEquals($sExpectedJsonOuput, $this->GetTicketViaRest($iId)); } private function CallRestApi($sJsonDataContent){ $ch = curl_init(); $aPostFields = [ 'version' => '1.3', 'auth_user' => 'admin', 'auth_pwd' => 'admin', ]; if ($this->bCallApiViaFile){ $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{ $aPostFields['json_data'] = $sJsonDataContent; } curl_setopt($ch, CURLOPT_URL, "http://localhost/iTop/webservices/rest.php"); curl_setopt($ch, CURLOPT_POST, 1);// set post data to true curl_setopt($ch, CURLOPT_POSTFIELDS, $aPostFields); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $sJson = curl_exec($ch); curl_close ($ch); return $sJson; } }