public function testSSO() { $pid = Helper::getSomeProject(); $user = Helper::getSomeUser(); Helper::getClient()->getProjects()->addUser($pid, $user['uid']); $targetUrl = "/#s=/gdc/projects/{$pid}|projectDashboardPage"; $sso = new SSO(null, null, KBGDC_API_URL); $ssoLink = $sso->getUrl(KBGDC_USERNAME, KBGDC_SSO_KEY, KBGDC_SSO_PROVIDER, $targetUrl, $user['email'], 3600, KBGDC_SSO_KEY_PASS); $stack = \GuzzleHttp\HandlerStack::create(); $lastRequest = null; $stack->push(\GuzzleHttp\Middleware::mapRequest(function (Request $request) use(&$lastRequest) { $lastRequest = $request; return $request; })); $client = new Client(['handler' => $stack, \GuzzleHttp\RequestOptions::ALLOW_REDIRECTS => true, 'verify' => false]); try { $client->request('GET', $ssoLink, ['headers' => ['Accept' => 'application/json']]); } catch (RequestException $e) { if ($e->hasResponse()) { $response = $e->getResponse()->getBody(); $this->fail("{$response} on link: {$ssoLink}"); } else { $this->fail($e->getMessage() . " on link: {$ssoLink}"); } } /** @var Request $lastRequest */ $result = $lastRequest->getUri()->__toString(); $this->assertStringEndsWith($targetUrl, urldecode($result)); }
public function testReportsExport() { $pid = Helper::getSomeProject(); Helper::initProjectModel($pid); // Create few MB csv $csvFile = Helper::getTemp()->createTmpFile(); $fp = fopen($csvFile, 'w'); fwrite($fp, "id,name" . PHP_EOL); for ($i = 1; $i < 200000; $i++) { fwrite($fp, "{$i}," . uniqid() . PHP_EOL); } shell_exec("mv {$csvFile} " . Helper::getTemp()->getTmpFolder() . "/categories.csv"); fclose($fp); $dirName = uniqid(); $webDav = new WebDav(KBGDC_USERNAME, KBGDC_PASSWORD); $webDav->createFolder($dirName); $webDav->upload(__DIR__ . '/../../data/products.csv', $dirName); $webDav->upload(Helper::getTemp()->getTmpFolder() . "/categories.csv", $dirName); $webDav->upload(__DIR__ . '/../../data/upload_info.json', $dirName); Helper::getClient()->getDatasets()->loadData($pid, $dirName); $uri = Helper::createReport($pid); $report = Helper::getClient()->get($uri); $reports = new Reports($this->client); $resultUri = $reports->export($pid, $report['report']['content']['definitions'][0]); $csvFile = Helper::getTemp()->getTmpFolder() . '/' . uniqid() . '.csv'; $this->client->getToFile($resultUri, $csvFile); $this->assertTrue(file_exists($csvFile)); $this->assertGreaterThan(4800000, filesize($csvFile)); }
public function testTimeDimensionLoadData() { $pid = Helper::getSomeProject(); Helper::cleanUpProject($pid); $name = 't' . uniqid(); $dir = sys_get_temp_dir() . '/' . uniqid(); mkdir($dir); $timeDimension = new TimeDimension($this->client); $timeDimension->create($pid, $name); $timeDimension->loadData($pid, $name, $dir); $result = $this->client->get("/gdc/md/{$pid}/data/sets"); $this->assertArrayHasKey('dataSetsInfo', $result); $this->assertArrayHasKey('sets', $result['dataSetsInfo']); $this->assertCount(1, $result['dataSetsInfo']['sets']); $this->assertArrayHasKey('meta', $result['dataSetsInfo']['sets'][0]); $this->assertArrayHasKey('identifier', $result['dataSetsInfo']['sets'][0]['meta']); $this->assertEquals("dataset.time.{$name}", $result['dataSetsInfo']['sets'][0]['meta']['identifier']); $this->assertArrayHasKey('lastUpload', $result['dataSetsInfo']['sets'][0]); $this->assertArrayHasKey('dataUploadShort', $result['dataSetsInfo']['sets'][0]['lastUpload']); $this->assertArrayHasKey('status', $result['dataSetsInfo']['sets'][0]['lastUpload']['dataUploadShort']); $this->assertEquals("OK", $result['dataSetsInfo']['sets'][0]['lastUpload']['dataUploadShort']['status']); }
public function __construct() { parent::__construct(); $this->client = new Client(KBGDC_API_URL, Helper::getLogger(), null, ['verify' => false]); $this->client->login(KBGDC_USERNAME, KBGDC_PASSWORD); }
public function testProjectsCancelInvitation() { $pid = Helper::getSomeProject(); $email = uniqid() . '@' . KBGDC_USERS_DOMAIN; $result = $this->client->get("/gdc/projects/{$pid}/roles"); $this->client->post("/gdc/projects/{$pid}/invitations", ['invitations' => [['invitation' => ['content' => ['email' => $email, 'role' => $result['projectRoles']['roles'][0]]]]]]); $projects = new Projects($this->client); $projects->cancelInvitation($pid, $email); $invitationFound = false; $result = $this->client->get("/gdc/projects/{$pid}/invitations"); foreach ($result['invitations'] as $r) { if ($email == $r['invitation']['content']['email']) { $invitationFound = true; $this->assertEquals('CANCELED', $r['invitation']['content']['status']); } } $this->assertTrue($invitationFound); }
public function testDatasetsLoadData() { $pid = Helper::getSomeProject(); Helper::initProjectModel($pid); Helper::loadData($pid); $timestamp = time(); $dirName = uniqid(); $webDav = new WebDav(KBGDC_USERNAME, KBGDC_PASSWORD); $webDav->createFolder($dirName); $webDav->upload(__DIR__ . '/../../data/categories.csv', $dirName); $webDav->upload(__DIR__ . '/../../data/products.csv', $dirName); $webDav->upload(__DIR__ . '/../../data/upload_info.json', $dirName); $this->client->getDatasets()->loadData($pid, $dirName); $result = $this->client->get("/gdc/md/{$pid}/data/sets"); $categoriesFound = false; $productsFound = false; foreach ($result['dataSetsInfo']['sets'] as $d) { if ($d['meta']['title'] == 'Categories') { $categoriesFound = true; $this->assertGreaterThan($timestamp, strtotime($d['lastUpload']['dataUploadShort']['date'])); } if ($d['meta']['title'] == 'Products') { $productsFound = true; $this->assertGreaterThan($timestamp, strtotime($d['lastUpload']['dataUploadShort']['date'])); } } $this->assertTrue($categoriesFound); $this->assertTrue($productsFound); }
public function testFiltersGetForUser() { $pid = Helper::getSomeProject(); Helper::initProjectModel($pid); Helper::loadData($pid); $user = Helper::getSomeUser(); $filter1 = uniqid(); $filter2 = uniqid(); $attrIdentifier = Identifiers::getAttributeId("categories", "id"); $attrUri = $this->client->getDatasets()->getUriForIdentifier($pid, $attrIdentifier); $attrValueUri = $this->client->getDatasets()->getAttributeValueUri($pid, $attrIdentifier, 'c1'); $uri1 = $this->client->getFilters()->create($pid, $filter1, $attrUri, '=', $attrValueUri); $uri2 = $this->client->getFilters()->create($pid, $filter2, $attrUri, '=', $attrValueUri); $this->client->getFilters()->assignToUser($pid, $user['uid'], [$uri1, $uri2]); $filters = new Filters($this->client); $this->assertEquals([$uri1, $uri2], $filters->getForUser($pid, $user['uid']), '', 0, 10, true); }