function testAddAndRemove() { $this->addCountriesToTestDB(); $user = new UserAccountModel(); $user->setEmail("*****@*****.**"); $user->setUsername("test"); $user->setPassword("password"); $userRepo = new UserAccountRepository(); $userRepo->create($user); $siteModel = new \models\SiteModel(); $siteModel->setTitle("Test"); $siteModel->setSlug("test"); $siteRepository = new \repositories\SiteRepository(); $countryRepository = new \repositories\CountryRepository(); $siteRepository->create($siteModel, $user, array($countryRepository->loadByTwoCharCode("GB")), $this->getSiteQuotaUsedForTesting(), true); // ########################################## Not there $userHasNoEditorPermissionsInSiteRepo = new UserHasNoEditorPermissionsInSiteRepository(); $this->assertFalse($userHasNoEditorPermissionsInSiteRepo->isUserInSite($user, $siteModel)); $userAccountRepoBuilder = new \repositories\builders\UserAccountRepositoryBuilder(); $userAccountRepoBuilder->setUserHasNoEditorPermissionsInSite($siteModel); $this->assertEquals(0, count($userAccountRepoBuilder->fetchAll())); // ########################################## Add $userHasNoEditorPermissionsInSiteRepo->addUserToSite($user, $siteModel); // ########################################## There $this->assertTrue($userHasNoEditorPermissionsInSiteRepo->isUserInSite($user, $siteModel)); $userAccountRepoBuilder = new \repositories\builders\UserAccountRepositoryBuilder(); $userAccountRepoBuilder->setUserHasNoEditorPermissionsInSite($siteModel); $this->assertEquals(1, count($userAccountRepoBuilder->fetchAll())); // ########################################## Remove $userHasNoEditorPermissionsInSiteRepo->removeUserFromSite($user, $siteModel); // ########################################## There $this->assertFalse($userHasNoEditorPermissionsInSiteRepo->isUserInSite($user, $siteModel)); $userAccountRepoBuilder = new \repositories\builders\UserAccountRepositoryBuilder(); $userAccountRepoBuilder->setUserHasNoEditorPermissionsInSite($siteModel); $this->assertEquals(0, count($userAccountRepoBuilder->fetchAll())); }
} foreach ($parentAreas as $key => $value) { if (!$value) { die("No area for " . $key); } } // JSON $file = $argv[1]; $data = json_decode(file_get_contents($file)); if (!$data) { die; } $areaMapItInfoRepo = new \com\meetyournextmp\repositories\AreaMapItInfoRepository(); $countryRepo = new \repositories\CountryRepository(); $areaRepo = new \repositories\AreaRepository(); $gb = $countryRepo->loadByTwoCharCode("GB"); $siteRepo = new \repositories\SiteRepository(); $site = $siteRepo->loadById($CONFIG->singleSiteID); foreach ($data as $json_blob) { print $json_blob->name . "\n"; $areaMapItInfo = $areaMapItInfoRepo->getByCodeGSS($json_blob->codes->gss); if ($areaMapItInfo) { print " ... found area ID " . $areaMapItInfo->getAreaId() . "\n"; $areaMapItInfo->setName($json_blob->name); $areaMapItInfo->setCodeGss($json_blob->codes->gss); if (isset($json_blob->codes->unit_id)) { $areaMapItInfo->setCodeUnitId($json_blob->codes->unit_id); } $areaMapItInfo->setMapitId($json_blob->id); $areaMapItInfoRepo->edit($areaMapItInfo); } else {
/** @return Array Roady to be made into JSON */ protected function run() { // This would be nice, but then we wouldn't delete candidates mistakenly marked as standing // $url = 'http://yournextmp.popit.mysociety.org/api/v0.1/search/persons?q=_exists_:standing_in.2015.post_id&page='; $url = 'https://yournextmp.popit.mysociety.org/api/v0.1/persons?page='; $page = 0; $morePages = true; $countryRepo = new \repositories\CountryRepository(); $areaRepo = new \repositories\AreaRepository(); $gb = $countryRepo->loadByTwoCharCode("GB"); $siteRepo = new \repositories\SiteRepository(); $site = $siteRepo->loadById($this->app['config']->singleSiteID); // TODO assumes single site! $areaMapItInfoRepo = new \com\meetyournextmp\repositories\AreaMapItInfoRepository(); $humanPopItInfoRepo = new \com\meetyournextmp\repositories\HumanPopItInfoRepository(); $humanRepo = new HumanRepository(); $areaRepo = new \repositories\AreaRepository(); while ($morePages) { ++$page; $this->logVerbose("Getting page " . $page); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url . $page); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'Meet Your Next MP'); $data = curl_exec($ch); $response = curl_getinfo($ch); curl_close($ch); if ($response['http_code'] != 200) { return array('result' => 'error', 'errorHTTPCode' => 200); } $dataObj = json_decode($data); foreach ($dataObj->result as $humanObj) { $this->logVerbose("Human " . $humanObj->name . " POPITID " . $humanObj->id); /** @var $humanPopItInfo HumanPopItInfoModel */ $humanPopItInfo = $humanPopItInfoRepo->getByPopItID($humanObj->id); $human = null; $standing = false; if (isset($humanObj->standing_in)) { $standingIn = get_object_vars($humanObj->standing_in); $standingIn2015 = null; if (isset($standingIn['2015'])) { $standingIn2015 = get_object_vars($standingIn['2015']); $standing = true; } $partyMemberships = isset($humanObj->party_memberships) ? get_object_vars($humanObj->party_memberships) : array(); $partyMemberships2015 = null; if (isset($partyMemberships['2015'])) { $partyMemberships2015 = get_object_vars($partyMemberships['2015']); } } if ($standing) { $facebook = null; $twitter = null; $imageURL = null; $imageProxyURL = null; $imageHumanURL = null; if (isset($humanObj->links)) { foreach ($humanObj->links as $linkData) { $linkDataArray = get_object_vars($linkData); if ($linkDataArray['note'] == 'facebook page') { $facebook = $linkDataArray['url']; } } } if (isset($humanObj->contact_details)) { foreach ($humanObj->contact_details as $linkData) { $linkDataArray = get_object_vars($linkData); if ($linkDataArray['type'] == 'twitter') { $twitter = $linkDataArray['value']; } } } if (isset($humanObj->images)) { foreach ($humanObj->images as $imageData) { $imageDataArray = get_object_vars($imageData); $imageProxyURL = $imageDataArray['proxy_url'] . '/300/0'; $imageURL = $imageDataArray['url']; $imageHumanURL = $imageProxyURL ? $imageProxyURL : $imageURL; } } $this->logVerbose(" - Standing in 2015!"); $description = "Standing in " . $standingIn2015['name'] . " for " . $partyMemberships2015['name'] . "."; $humanUrl = "https://yournextmp.com/person/" . $humanObj->id; $bits = explode('/', $standingIn2015['mapit_url']); $mapItID = $bits[4]; if ($humanPopItInfo) { $this->logVerbose(" - Found existing record"); $human = $humanRepo->loadById($humanPopItInfo->getHumanId()); if ($human->getIsDeleted()) { $this->logVerbose(" - Undeleting existing Human record"); $humanRepo->undelete($human); } if ($human->getTitle() != $humanObj->name || $description != $human->getDescription() || $human->getEmail() != $humanObj->email || $human->getUrl() != $humanUrl || $human->getTwitter() != $twitter || $human->getParty() != $partyMemberships2015['name'] || $human->getImageUrl() != $imageHumanURL) { $this->logVerbose(" - Updating existing Human record"); $human->setTitle($humanObj->name); $human->setDescription($description); $human->setEmail($humanObj->email); $human->setTwitter($twitter); $human->setParty($partyMemberships2015['name']); $human->setImageUrl($imageHumanURL); $human->setUrl($humanUrl); $humanRepo->edit($human); } $humanPopItInfo->setMapitId($mapItID); $humanPopItInfo->setName($humanObj->name); if (isset($humanObj->gender)) { $humanPopItInfo->setGenderFromString($humanObj->gender); } if (isset($humanObj->email)) { $humanPopItInfo->setEmail($humanObj->email); } $humanPopItInfo->setParty($partyMemberships2015['name']); // TODO if we reenable this we need to make sure it works for "YYYY" format to. //if (isset($humanObj->birth_date)) { // $humanPopItInfo->setBirthDate($humanObj->birth_date); //} $humanPopItInfo->setFacebook($facebook); $humanPopItInfo->setTwitter($twitter); $humanPopItInfo->setImageUrl($imageURL); $humanPopItInfo->setImageProxyUrl($imageProxyURL); $humanPopItInfoRepo->edit($humanPopItInfo); } else { $this->logVerbose(" - Adding new record"); $human = new \com\meetyournextmp\models\HumanModel(); $human->setTitle($humanObj->name); $human->setDescription($description); $human->setEmail($humanObj->email); $human->setTwitter($twitter); $human->setImageUrl($imageHumanURL); $human->setUrl($humanUrl); $human->setParty($partyMemberships2015['name']); $humanRepo->create($human, $site); $humanPopItInfo = new \com\meetyournextmp\models\HumanPopItInfoModel(); $humanPopItInfo->setHumanId($human->getId()); $humanPopItInfo->setPopitId($humanObj->id); $humanPopItInfo->setMapitId($mapItID); $humanPopItInfo->setName($humanObj->name); if (isset($humanObj->gender)) { $humanPopItInfo->setGenderFromString($humanObj->gender); } if (isset($humanObj->email)) { $humanPopItInfo->setEmail($humanObj->email); } $humanPopItInfo->setParty($partyMemberships2015['name']); // TODO if we reenable this we need to make sure it works for "YYYY" format to. //if (isset($humanObj->birth_date)) { // $humanPopItInfo->setBirthDate($humanObj->birth_date); //} $humanPopItInfo->setFacebook($facebook); $humanPopItInfo->setTwitter($twitter); $humanPopItInfo->setImageUrl($imageURL); $humanPopItInfo->setImageProxyUrl($imageProxyURL); $humanPopItInfoRepo->create($humanPopItInfo); } $areaMapItInfo = $areaMapItInfoRepo->getByMapItID($humanPopItInfo->getMapitId()); if ($areaMapItInfo) { $area = $areaRepo->loadById($areaMapItInfo->getAreaId()); if ($area) { $humanRepo->addHumanToArea($human, $area); $humanRepo->removeHumanFromAllButOneArea($human, $area); } } } else { $this->logVerbose(" - NOT Standing in 2015!"); if ($humanPopItInfo) { $human = $humanRepo->loadById($humanPopItInfo->getHumanId()); if ($human && !$human->getIsDeleted()) { $this->logVerbose(" - Deleteing "); $humanRepo->delete($human); } } } // Next Task - have any humans been merged into this one? foreach ($humanObj->versions as $humanVersion) { $idOfOldRecord = $humanVersion->data->id; if ($idOfOldRecord != $humanObj->id) { $this->logVerbose(" - found a record that was merged into this one: " . $idOfOldRecord); $humanPopItInfoOfOldRecord = $humanPopItInfoRepo->getByPopItID($idOfOldRecord); if ($humanPopItInfoOfOldRecord) { $this->logVerbose(" - found HumanPopIt for old record "); $humanOfOldRecord = $humanRepo->loadById($humanPopItInfoOfOldRecord->getHumanId()); if ($humanOfOldRecord) { $this->logVerbose(" - found Human for old record"); if (!$humanOfOldRecord->getIsDeleted()) { if ($human) { $this->logVerbose(" - marking duplicate human of old record "); $humanRepo->markDuplicate($humanOfOldRecord, $human); } else { $this->logVerbose(" - deleting human of old record"); $humanRepo->delete($humanOfOldRecord); } } else { $this->logVerbose(" - human for old record already deleted"); } } } } } } $morePages = $dataObj->has_more; } return array('result' => 'ok'); }
function testParentChildSearches() { $this->addCountriesToTestDB(); TimeSource::mock(2014, 5, 1, 7, 0, 0); $user = new UserAccountModel(); $user->setEmail("*****@*****.**"); $user->setUsername("test"); $user->setPassword("password"); $userRepo = new UserAccountRepository(); $userRepo->create($user); $site = new SiteModel(); $site->setTitle("Test"); $site->setSlug("test"); $siteRepo = new SiteRepository(); $siteRepo->create($site, $user, array(), $this->getSiteQuotaUsedForTesting()); $countryRepo = new \repositories\CountryRepository(); $gb = $countryRepo->loadByTwoCharCode("GB"); $areaParent = new \models\AreaModel(); $areaParent->setTitle("Parent"); $areaCentre = new \models\AreaModel(); $areaCentre->setTitle("Centre"); $areaChild = new \models\AreaModel(); $areaChild->setTitle("Child"); $areaRepo = new \repositories\AreaRepository(); $areaRepo->create($areaParent, null, $site, $gb); $areaRepo->create($areaCentre, $areaParent, $site, $gb); $areaRepo->create($areaChild, $areaCentre, $site, $gb); $areaRepo->buildCacheAreaHasParent($areaParent); $areaRepo->buildCacheAreaHasParent($areaCentre); $areaRepo->buildCacheAreaHasParent($areaChild); $commentParent = new \org\openacalendar\comments\models\AreaCommentModel(); $commentParent->setTitle("Parent"); $commentCentre = new \org\openacalendar\comments\models\AreaCommentModel(); $commentCentre->setTitle("Centre"); $commentChild = new \org\openacalendar\comments\models\AreaCommentModel(); $commentChild->setTitle("Child"); $areaCommentRepo = new \org\openacalendar\comments\repositories\AreaCommentRepository(); TimeSource::mock(2014, 5, 1, 7, 0, 0); $areaCommentRepo->create($commentParent, $areaParent, $user); TimeSource::mock(2014, 5, 1, 7, 0, 1); $areaCommentRepo->create($commentCentre, $areaCentre, $user); TimeSource::mock(2014, 5, 1, 7, 0, 2); $areaCommentRepo->create($commentChild, $areaChild, $user); ##################################### Test Centre $areaCommentRepoBuilder = new \org\openacalendar\comments\repositories\builders\AreaCommentRepositoryBuilder(); $areaCommentRepoBuilder->setArea($areaCentre, false, false); $areaComments = $areaCommentRepoBuilder->fetchAll(); $this->assertEquals(1, count($areaComments)); $this->assertEquals($commentCentre->getId(), $areaComments[0]->getId()); ##################################### Test Centre + Parents $areaCommentRepoBuilder = new \org\openacalendar\comments\repositories\builders\AreaCommentRepositoryBuilder(); $areaCommentRepoBuilder->setArea($areaCentre, true, false); $areaComments = $areaCommentRepoBuilder->fetchAll(); $this->assertEquals(2, count($areaComments)); $this->assertEquals($commentParent->getId(), $areaComments[0]->getId()); $this->assertEquals($commentCentre->getId(), $areaComments[1]->getId()); ##################################### Test Centre + Children $areaCommentRepoBuilder = new \org\openacalendar\comments\repositories\builders\AreaCommentRepositoryBuilder(); $areaCommentRepoBuilder->setArea($areaCentre, false, true); $areaComments = $areaCommentRepoBuilder->fetchAll(); $this->assertEquals(2, count($areaComments)); $this->assertEquals($commentCentre->getId(), $areaComments[0]->getId()); $this->assertEquals($commentChild->getId(), $areaComments[1]->getId()); ##################################### Test Centre + Parents + Children $areaCommentRepoBuilder = new \org\openacalendar\comments\repositories\builders\AreaCommentRepositoryBuilder(); $areaCommentRepoBuilder->setArea($areaCentre, true, true); $areaComments = $areaCommentRepoBuilder->fetchAll(); $this->assertEquals(3, count($areaComments)); $this->assertEquals($commentParent->getId(), $areaComments[0]->getId()); $this->assertEquals($commentCentre->getId(), $areaComments[1]->getId()); $this->assertEquals($commentChild->getId(), $areaComments[2]->getId()); ##################################### Test Child + Children $areaCommentRepoBuilder = new \org\openacalendar\comments\repositories\builders\AreaCommentRepositoryBuilder(); $areaCommentRepoBuilder->setArea($areaChild, false, true); $areaComments = $areaCommentRepoBuilder->fetchAll(); $this->assertEquals(1, count($areaComments)); $this->assertEquals($commentChild->getId(), $areaComments[0]->getId()); }
function testEventInNoAreaHumanInCentre() { $this->addCountriesToTestDB(); TimeSource::mock(2014, 5, 1, 7, 0, 0); $user = new UserAccountModel(); $user->setEmail("*****@*****.**"); $user->setUsername("test"); $user->setPassword("password"); $userWatching = new UserAccountModel(); $userWatching->setEmail("*****@*****.**"); $userWatching->setUsername("test1"); $userWatching->setPassword("password"); $userRepo = new UserAccountRepository(); $userRepo->create($user); $userRepo->create($userWatching); $site = new SiteModel(); $site->setTitle("Test"); $site->setSlug("test"); $siteRepo = new SiteRepository(); $siteRepo->create($site, $user, array(), $this->getSiteQuotaUsedForTesting()); $countryRepo = new \repositories\CountryRepository(); $gb = $countryRepo->loadByTwoCharCode("GB"); $areaParent = new \models\AreaModel(); $areaParent->setTitle("Parent"); $areaChild = new \models\AreaModel(); $areaChild->setTitle("Child"); $areaOtherChild = new \models\AreaModel(); $areaOtherChild->setTitle("Other Child"); $areaRepo = new \repositories\AreaRepository(); $areaRepo->create($areaParent, null, $site, $gb); $areaRepo->create($areaChild, $areaParent, $site, $gb); $areaRepo->create($areaOtherChild, $areaParent, $site, $gb); $areaRepo->buildCacheAreaHasParent($areaParent); $areaRepo->buildCacheAreaHasParent($areaChild); $areaRepo->buildCacheAreaHasParent($areaOtherChild); $event = new EventModel(); $event->setSummary("test"); $event->setDescription("test test"); $event->setStartAt($this->mktime(2014, 5, 10, 19, 0, 0, 'Europe/London')); $event->setEndAt($this->mktime(2014, 5, 10, 21, 0, 0, 'Europe/London')); $event->setUrl("http://www.info.com"); $event->setTicketUrl("http://www.tickets.com"); $eventRepository = new EventRepository(); $eventRepository->create($event, $site, $user); $human = new \com\meetyournextmp\models\HumanModel(); $human->setTitle("Bob"); $humanRepo = new \com\meetyournextmp\repositories\HumanRepository(); $humanRepo->create($human, $site, null); $humanRepo->addHumanToArea($human, $areaChild, null); $humanRepo->addHumanToEvent($human, $event, null); $userWatchesAreaRepo = new \repositories\UserWatchesAreaRepository(); //////////////////////////////// TEST ALL EVENTS $erb = new \repositories\builders\EventRepositoryBuilder(); $events = $erb->fetchAll(); $this->assertEquals(1, count($events)); $hrb = new \repositories\builders\HistoryRepositoryBuilder(); $hrb->setIncludeAreaHistory(false); $hrb->setIncludeEventHistory(true); $histories = $hrb->fetchAll(); $this->assertEquals(1, count($histories)); //////////////////////////////// TEST OTHER CHILD $erb = new \repositories\builders\EventRepositoryBuilder(); $erb->setArea($areaOtherChild); $events = $erb->fetchAll(); $this->assertEquals(0, count($events)); $hrb = new \repositories\builders\HistoryRepositoryBuilder(); $hrb->getHistoryRepositoryBuilderConfig()->setArea($areaOtherChild); $hrb->setIncludeAreaHistory(false); $hrb->setIncludeEventHistory(true); $histories = $hrb->fetchAll(); $this->assertEquals(0, count($histories)); //////////////////////////////// TEST CHILD $erb = new \repositories\builders\EventRepositoryBuilder(); $erb->setArea($areaChild); $events = $erb->fetchAll(); $this->assertEquals(1, count($events)); $hrb = new \repositories\builders\HistoryRepositoryBuilder(); $hrb->getHistoryRepositoryBuilderConfig()->setArea($areaChild); $hrb->setIncludeAreaHistory(false); $hrb->setIncludeEventHistory(true); $histories = $hrb->fetchAll(); $this->assertEquals(1, count($histories)); //////////////////////////////// TEST PARENT $erb = new \repositories\builders\EventRepositoryBuilder(); $erb->setArea($areaChild); $events = $erb->fetchAll(); $this->assertEquals(1, count($events)); $hrb = new \repositories\builders\HistoryRepositoryBuilder(); $hrb->getHistoryRepositoryBuilderConfig()->setArea($areaChild); $hrb->setIncludeAreaHistory(false); $hrb->setIncludeEventHistory(true); $histories = $hrb->fetchAll(); $this->assertEquals(1, count($histories)); //////////////////////////////// USER WATCHES NOTHING $erb = new \repositories\builders\EventRepositoryBuilder(); $erb->setUserAccount($userWatching, false, true, true, true); $events = $erb->fetchAll(); $this->assertEquals(0, count($events)); //////////////////////////////// USER WATCHES PARENT $userWatchesAreaRepo->startUserWatchingArea($userWatching, $areaParent); $erb = new \repositories\builders\EventRepositoryBuilder(); $erb->setUserAccount($userWatching, false, true, true, true); $events = $erb->fetchAll(); $this->assertEquals(1, count($events)); //////////////////////////////// USER WATCHES CHILD $userWatchesAreaRepo->stopUserWatchingArea($userWatching, $areaParent); $userWatchesAreaRepo->startUserWatchingArea($userWatching, $areaChild); $erb = new \repositories\builders\EventRepositoryBuilder(); $erb->setUserAccount($userWatching, false, true, true, true); $events = $erb->fetchAll(); $this->assertEquals(1, count($events)); }
function testSiteOwnerSpecificEdit() { global $CONFIG; $CONFIG->newUsersAreEditors = true; $this->addCountriesToTestDB(); $userOwner = new UserAccountModel(); $userOwner->setEmail("*****@*****.**"); $userOwner->setUsername("test"); $userOwner->setPassword("password"); $userVerified = new UserAccountModel(); $userVerified->setEmail("*****@*****.**"); $userVerified->setUsername("verified"); $userVerified->setPassword("password"); $userUnverified = new UserAccountModel(); $userUnverified->setEmail("*****@*****.**"); $userUnverified->setUsername("unverified"); $userUnverified->setPassword("password"); $userRepo = new UserAccountRepository(); $userRepo->create($userOwner); $userRepo->verifyEmail($userOwner); $userRepo->create($userVerified); $userRepo->verifyEmail($userVerified); $userRepo->create($userUnverified); // reload user object so all flags set correctly $userOwner = $userRepo->loadByUserName($userOwner->getUsername()); $userVerified = $userRepo->loadByUserName($userVerified->getUsername()); $userUnverified = $userRepo->loadByUserName($userUnverified->getUsername()); $extensionsManager = new ExtensionManager($this->app); $userPerRepo = new \repositories\UserPermissionsRepository($extensionsManager); $siteModel = new \models\SiteModel(); $siteModel->setTitle("Test"); $siteModel->setSlug("test"); $siteRepository = new \repositories\SiteRepository(); $countryRepository = new \repositories\CountryRepository(); $siteRepository->create($siteModel, $userOwner, array($countryRepository->loadByTwoCharCode("GB")), $this->getSiteQuotaUsedForTesting(), false); ## Check! $extensionsManager = new ExtensionManager($this->app); $userPerRepo = new \repositories\UserPermissionsRepository($extensionsManager); $permissions = $userPerRepo->getPermissionsForUserInSite($userOwner, $siteModel, false); $this->assertEquals(2, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForUserInSite($userOwner, $siteModel, true); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForUserInSite($userVerified, $siteModel, false); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForUserInSite($userVerified, $siteModel, true); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForUserInSite($userUnverified, $siteModel, false); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForUserInSite($userUnverified, $siteModel, true); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForAnonymousInSite($siteModel, false, false); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForAnyUserInSite($siteModel, false, false); $this->assertEquals(0, count($permissions->getPermissions())); $permissions = $userPerRepo->getPermissionsForAnyVerifiedUserInSite($siteModel, false, false); $this->assertEquals(0, count($permissions->getPermissions())); }