chg: [Cerebrates] tests previewOrgs previewSG

pull/9461/head
Christophe Vandeplas 2024-01-15 16:58:54 +00:00
parent 8bda0592a1
commit 575c90b5b0
3 changed files with 222 additions and 1 deletions

View File

@ -13,10 +13,115 @@ class CerebratesFixture extends TestFixture
public const SERVER_A_ID = 1000;
public const SERVER_A_NAME = 'Cerebrate A';
public const SERVER_A_URL = 'http://foobar.local';
public const SERVER_B_ID = 2000;
public const SERVER_B_NAME = 'Cerebrate B';
public const CEREBRATE_ORG_LIST = [
[
"id" => 1,
"uuid" => "1e3492dd-4123-42d6-a0be-8d45951cf6a5",
"name" => "default_organisation",
"url" => null,
"nationality" => null,
"sector" => null,
"type" => null,
"contacts" => null,
"created" => "2023-12-09T11:05:30+00:00",
"modified" => "2023-12-09T11:05:30+00:00",
"tags" => [],
"meta_fields" => [],
"org_groups" => [],
"alignments" => [],
"MetaTemplates" => []
],
[
"id" => 2,
"uuid" => "833f8b50-e201-4395-b5d8-ac645594e3d5",
"name" => "ORGNAME",
"url" => null,
"nationality" => "",
"sector" => "",
"type" => "ADMIN",
"contacts" => null,
"created" => "2023-12-10T14:09:20+00:00",
"modified" => "2023-12-10T14:09:20+00:00",
"tags" => [],
"meta_fields" => [],
"org_groups" => [],
"alignments" => [],
"MetaTemplates" => []
]
];
public const CEREBRATE_SG_LIST = [
[
"id" => 1,
"uuid" => "6b6742b7-babc-42c2-9c9b-4b6b1e81ea38",
"name" => "SG_cerebrate_1",
"releasability" => "BEL",
"description" => "",
"organisation_id" => 1,
"user_id" => 1,
"active" => true,
"local" => true,
"created" => "2024-01-13T09:33:54+00:00",
"modified" => "2024-01-13T09:33:54+00:00",
"user" => [
"id" => 1,
"username" => "admin"
],
"organisation" => [
"id" => 1,
"uuid" => "1e3492dd-4123-42d6-a0be-8d45951cf6a5",
"name" => "default_organisation",
"url" => null,
"nationality" => null,
"sector" => null,
"type" => null,
"contacts" => null,
"created" => "2023-12-09T11:05:30+00:00",
"modified" => "2023-12-09T11:05:30+00:00"
],
"sharing_group_orgs" => [
[
"id" => 1,
"uuid" => "1e3492dd-4123-42d6-a0be-8d45951cf6a5",
"name" => "default_organisation",
"url" => null,
"nationality" => null,
"sector" => null,
"type" => null,
"contacts" => null,
"created" => "2023-12-09T11:05:30+00:00",
"modified" => "2023-12-09T11:05:30+00:00",
"_joinData" => [
"sharing_group_id" => 1,
"organisation_id" => 1,
"deleted" => false,
"extend" => false]
],
[
"id" => 2,
"uuid" => "833f8b50-e201-4395-b5d8-ac645594e3d5",
"name" => "ORGNAME",
"url" => null,
"nationality" => "",
"sector" => "",
"type" => "ADMIN",
"contacts" => null,
"created" => "2023-12-10T14:09:20+00:00",
"modified" => "2023-12-10T14:09:20+00:00",
"_joinData" => [
"sharing_group_id" => 1,
"organisation_id" => 2,
"deleted" => false,
"extend" => false]
]
]
]
];
/**
* Init method
*
@ -30,7 +135,7 @@ class CerebratesFixture extends TestFixture
[
'id' => self::SERVER_A_ID,
'name' => self::SERVER_A_NAME,
'url' => $faker->url(),
'url' => self::SERVER_A_URL,
'authkey' => $faker->sha1(),
// 'open' => 1,
'org_id' => OrganisationsFixture::ORGANISATION_A_ID,

View File

@ -0,0 +1,58 @@
<?php
declare(strict_types=1);
namespace App\Test\TestCase\Api\Cerebrates;
use App\Test\Fixture\AuthKeysFixture;
use App\Test\Fixture\CerebratesFixture;
use App\Test\Helper\ApiTestTrait;
use Cake\Http\TestSuite\HttpClientTrait;
use Cake\TestSuite\TestCase;
class PreviewOrgsCerebrateApiTest extends TestCase
{
use ApiTestTrait;
use HttpClientTrait;
protected const ENDPOINT = '/cerebrates/preview_orgs';
protected $fixtures = [
'app.Organisations',
'app.Cerebrates',
'app.Roles',
'app.Users',
'app.AuthKeys'
];
public function testPreviewOrgs(): void
{
$this->skipOpenApiValidations();
$this->setAuthToken(AuthKeysFixture::ADMIN_API_KEY);
$headers = [
'Content-Type: application/json',
'Connection: close',
];
$response = json_encode(CerebratesFixture::CEREBRATE_ORG_LIST);
$this->mockClientGet(
CerebratesFixture::SERVER_A_URL.'/organisations/index',
$this->newClientResponse(200, $headers, $response)
);
$url = sprintf('%s/%d', self::ENDPOINT, CerebratesFixture::SERVER_A_ID);
$this->get($url);
$this->assertResponseOk();
$this->assertResponseContains('"name": "ORGNAME"');
}
public function testPreviewOrgsNotAllowedAsRegularUser(): void
{
$this->skipOpenApiValidations();
$this->setAuthToken(AuthKeysFixture::REGULAR_USER_API_KEY);
$url = sprintf('%s/%d', self::ENDPOINT, CerebratesFixture::SERVER_A_ID);
$this->get($url);
$this->assertResponseCode(405);
}
}

View File

@ -0,0 +1,58 @@
<?php
declare(strict_types=1);
namespace App\Test\TestCase\Api\Cerebrates;
use App\Test\Fixture\AuthKeysFixture;
use App\Test\Fixture\CerebratesFixture;
use App\Test\Helper\ApiTestTrait;
use Cake\Http\TestSuite\HttpClientTrait;
use Cake\TestSuite\TestCase;
class PreviewSharingGroupsCerebrateApiTest extends TestCase
{
use ApiTestTrait;
use HttpClientTrait;
protected const ENDPOINT = '/cerebrates/preview_sharing_groups';
protected $fixtures = [
'app.Organisations',
'app.Cerebrates',
'app.Roles',
'app.Users',
'app.AuthKeys'
];
public function testPreviewSharingGroups(): void
{
$this->skipOpenApiValidations();
$this->setAuthToken(AuthKeysFixture::ADMIN_API_KEY);
$headers = [
'Content-Type: application/json',
'Connection: close',
];
$response = json_encode(CerebratesFixture::CEREBRATE_SG_LIST);
$this->mockClientGet(
CerebratesFixture::SERVER_A_URL.'/sharingGroups/index',
$this->newClientResponse(200, $headers, $response)
);
$url = sprintf('%s/%d', self::ENDPOINT, CerebratesFixture::SERVER_A_ID);
$this->get($url);
$this->assertResponseOk();
$this->assertResponseContains('"name": "SG_cerebrate_1"');
}
public function testPreviewSharingGroupsNotAllowedAsRegularUser(): void
{
$this->skipOpenApiValidations();
$this->setAuthToken(AuthKeysFixture::REGULAR_USER_API_KEY);
$url = sprintf('%s/%d', self::ENDPOINT, CerebratesFixture::SERVER_A_ID);
$this->get($url);
$this->assertResponseCode(405);
}
}