sLogin = "import-".$sUid; $this->CreateContactlessUser($this->sLogin, self::$aURP_Profiles['Administrator'], $this->sPassword); $this->sPortalLogin = "import-portaluser-".$sUid; $this->CreateContactlessUser($this->sPortalLogin, self::$aURP_Profiles['Portal user'], $this->sPassword); } public function testExportWithExpressionAndFields() { $aParams = [ 'expression' => 'SELECT User', 'fields' => 'login', 'format' => 'csv', 'filename' => 'toto.csv', 'charset' => 'UTF-8', ]; $sOutput = $this->performExportTesting($aParams, $this->sLogin); $sExpectedHeader = <<
assertStringContainsString($sExpectedHeader, $sOutput, "Header ($sExpectedHeader)\n should be in export-v2 answer: \n$sOutput"); $this->assertStringContainsString($this->sLogin, $sOutput, "Login ({$this->sLogin})\n should be in export-v2 answer: \n$sOutput"); } public function testExportWithExpressionAndWithoutFields() { $aParams = [ 'expression' => 'SELECT User', 'format' => 'csv', 'filename' => 'toto.csv', 'charset' => 'UTF-8', ]; $sOutput = $this->performExportTesting($aParams, $this->sLogin); $sExpectedHeader = <<
Obsolete","Person->Organization","Person->Organization->Obsolete" HEADER; $this->assertStringContainsString($sExpectedHeader, $sOutput, "Header ($sExpectedHeader)\n should be in export-v2 answer: \n$sOutput"); $this->assertTrue(false !== strpos($sOutput, $this->sLogin), "Login ({$this->sLogin})\n should be in export-v2 answer: \n$sOutput"); } public function testExportWithOQLRequestAndWithoutFields() { $oOuery = $this->createObject( QueryOQL::class, [ 'name' => "TestExport-".uniqid(), 'description' => "blabla", "oql" => "SELECT User", ] ); $aParams = [ 'query' => $oOuery->GetKey(), 'format' => 'spreadsheet', 'filename' => 'toto.csv', 'charset' => 'UTF-8', ]; $sOutput = $this->performExportTesting($aParams, $this->sLogin); $sExpectedHeader = <<
Person Last name First name Email Organization Login Language Status log Type of account Full name Person Person->Obsolete Person->Organization Person->Organization->Obsolete HEADER; $this->assertStringContainsString("$sExpectedHeader", $sOutput, "Header ($sExpectedHeader)\n should be in export-v2 answer: \n$sOutput"); $this->assertStringContainsString($this->sLogin, $sOutput, "Login ({$this->sLogin})\n should be in export-v2 answer: \n$sOutput"); } public function testExportWithOqlRequestAndWithoutFieldsButNoReadRights() { $oOuery = $this->createObject( QueryOQL::class, [ 'name' => "TestExport-".uniqid(), 'description' => "blabla", "oql" => "SELECT User", ] ); $aParams = [ 'query' => $oOuery->GetKey(), 'format' => 'csv', 'filename' => 'toto.csv', 'charset' => 'UTF-8', ]; try { $this->performExportTesting($aParams, $this->sPortalLogin); } catch (\Exception $e) { $this->assertStringContainsString("PHP Error (parsing, or runtime) ", $e->getMessage()); $this->assertStringContainsString("ERROR: Missing parameter: fields", $e->getMessage()); } } public function testExportWithOQLRequestAndFields() { $oOuery = $this->createObject( QueryOQL::class, [ 'name' => "TestExport-".uniqid(), 'description' => "blabla", "fields" => "login, status", "oql" => "SELECT User", ] ); $aParams = [ 'query' => $oOuery->GetKey(), 'fields' => 'login', 'format' => 'spreadsheet', 'filename' => 'toto.csv', 'charset' => 'UTF-8', ]; $sOutput = $this->performExportTesting($aParams, $this->sLogin); $sExpectedHeader = <<
Login HEADER; $this->assertStringContainsString("$sExpectedHeader", $sOutput, "Header ($sExpectedHeader)\n should be in export-v2 answer: \n$sOutput"); $this->assertStringContainsString($this->sLogin, $sOutput, "Login ({$this->sLogin})\n should be in export-v2 answer: \n$sOutput"); } public function testExportWithExpressionAndWithoutFieldsButNoReadRights() { $aParams = [ 'expression' => 'SELECT User', 'format' => 'csv', 'filename' => 'toto.csv', 'charset' => 'UTF-8', ]; try { $this->performExportTesting($aParams, $this->sPortalLogin); } catch (\Exception $e) { $this->assertStringContainsString("PHP Error (parsing, or runtime) ", $e->getMessage()); $this->assertStringContainsString("ERROR: Missing parameter: fields", $e->getMessage()); } } private function performExportTesting(array $aParams, $sLogin, $iExpectedExitCode = 0) { $aRes = \utils::ExecITopScript('webservices/export-v2.php', $aParams, $sLogin, $this->sPassword); $aOutput = $aRes[1]; $sOutput = implode("\n", $aOutput); $iRes = $aRes[0]; $this->assertEquals($iExpectedExitCode, $iRes, "exit code: $iRes | $sOutput"); return $sOutput; } }