api = API::getInstance(); $pseudoMockAccess = new FakeAccess(); FakeAccess::$superUser = true; Access::setSingletonInstance($pseudoMockAccess); Fixture::createWebsite('2014-01-01 00:00:00'); Fixture::createWebsite('2014-01-01 00:00:00'); Fixture::createWebsite('2014-01-01 00:00:00'); $this->api->addUser('userLogin', 'password', 'userlogin@password.de'); } public function test_setUserAccess_ShouldTriggerRemoveSiteAccessEvent_IfAccessToAWebsiteIsRemoved() { $eventTriggered = false; $self = $this; Piwik::addAction('UsersManager.removeSiteAccess', function ($login, $idSites) use (&$eventTriggered, $self) { $eventTriggered = true; $self->assertEquals('userLogin', $login); $self->assertEquals(array(1, 2), $idSites); }); $this->api->setUserAccess('userLogin', 'noaccess', array(1, 2)); $this->assertTrue($eventTriggered, 'UsersManager.removeSiteAccess event was not triggered'); } public function test_setUserAccess_ShouldNotTriggerRemoveSiteAccessEvent_IfAccessIsAdded() { $eventTriggered = false; Piwik::addAction('UsersManager.removeSiteAccess', function () use (&$eventTriggered) { $eventTriggered = true; }); $this->api->setUserAccess('userLogin', 'admin', array(1, 2)); $this->assertFalse($eventTriggered, 'UsersManager.removeSiteAccess event was triggered but should not'); } }