1
0
قرینه از https://github.com/matomo-org/matomo.git synced 2025-08-22 23:17:46 +00:00
Files
caddoo 9aac84c0a7 Add API endpoint for setting status (#23495)
* Add API endpoint for setting status

* update api / tests
2025-08-11 13:01:05 +12:00

112 خطوط
2.9 KiB
PHP

<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\PrivacyManager\tests\Integration;
use Piwik\Access;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\NoAccessException;
use Piwik\Plugins\PrivacyManager\API;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
/**
* @group PrivacyManager
* @group ApiTest
* @group Api
* @group Plugins
*/
class ApiTest extends IntegrationTestCase
{
/**
* @var API
*/
private $api;
/**
* @var int
*/
private $siteId;
public function setUp(): void
{
parent::setUp();
Fixture::createSuperUser();
$this->siteId = Fixture::createWebsite('2014-01-01 01:02:03');
$this->api = API::getInstance();
}
public function testSetComplianceStatusThrowsExceptionIfFeatureFlagDisabled(): void
{
$container = StaticContainer::getContainer();
$container->get(Config::class)->FeatureFlags = ['PrivacyCompliance_feature' => 'disabled'];
$this->expectExceptionMessage('Feature not available');
$this->api->setComplianceStatus(
(string) $this->siteId,
'cnil',
true
);
}
public function testSetComplianceStatusThrowsExceptionIfInvalidComplianceType(): void
{
$container = StaticContainer::getContainer();
$container->get(Config::class)->FeatureFlags = ['PrivacyCompliance_feature' => 'enabled'];
$this->expectExceptionMessage('Invalid compliance type');
$this->api->setComplianceStatus(
(string) $this->siteId,
'egg',
true
);
}
public function testSetComplianceStatusThrowsExceptionIfUserDoesntHaveSuperAdmin(): void
{
$container = StaticContainer::getContainer();
$container->get(Config::class)->FeatureFlags = ['PrivacyCompliance_feature' => 'enabled'];
$fakeAccess = $container->get(Access::class);
$fakeAccess->setSuperUserAccess(false);
$this->expectException(NoAccessException::class);
$this->api->setComplianceStatus(
(string) $this->siteId,
'cnil',
true
);
}
public function testSetComplianceStatusReturnsTheNewStateIfEnabled(): void
{
$container = StaticContainer::getContainer();
$container->get(Config::class)->FeatureFlags = ['PrivacyCompliance_feature' => 'enabled'];
$result = $this->api->setComplianceStatus(
(string) $this->siteId,
'cnil',
true
);
$this->assertTrue($result);
}
public function provideContainerConfig()
{
return array(
'Piwik\Access' => new FakeAccess()
);
}
}