diff options
author | vipsoft <vipsoft@59fd770c-687e-43c8-a1e3-f5a4ff64c105> | 2009-08-27 00:22:59 +0400 |
---|---|---|
committer | vipsoft <vipsoft@59fd770c-687e-43c8-a1e3-f5a4ff64c105> | 2009-08-27 00:22:59 +0400 |
commit | c40ed0590784288d7ac10703e469232ad4fc5eba (patch) | |
tree | e51b1f0bcba24d682b9499446f91ada0e264d1c7 /plugins/SitesManager/tests | |
parent | 0f25f8b7168c509994b49f1c4a6ee1c0bae57eb6 (diff) |
fixes #540 - move plugin unit tests from tests/core/*.php to plugins/*/tests/*.php
Diffstat (limited to 'plugins/SitesManager/tests')
-rw-r--r-- | plugins/SitesManager/tests/SitesManager.test.php | 648 |
1 files changed, 648 insertions, 0 deletions
diff --git a/plugins/SitesManager/tests/SitesManager.test.php b/plugins/SitesManager/tests/SitesManager.test.php new file mode 100644 index 0000000000..fa3740f850 --- /dev/null +++ b/plugins/SitesManager/tests/SitesManager.test.php @@ -0,0 +1,648 @@ +<?php +if(!defined("PIWIK_PATH_TEST_TO_ROOT")) { + define('PIWIK_PATH_TEST_TO_ROOT', getcwd().'/../..'); +} +if(!defined('PIWIK_CONFIG_TEST_INCLUDED')) +{ + require_once PIWIK_PATH_TEST_TO_ROOT . "/tests/config_test.php"; +} + +require_once "Database.test.php"; + +class Test_Piwik_SitesManager extends Test_Database +{ + public function setUp() + { + parent::setUp(); + + // setup the access layer + $pseudoMockAccess = new FakeAccess; + FakeAccess::$superUser = true; + Zend_Registry::set('access', $pseudoMockAccess); + } + + /** + * empty name -> exception + */ + public function test_addSite_emptyName() + { + try { + Piwik_SitesManager_API::addSite("",array("http://piwik.net")); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + } + + /** + * no urls -> exception + */ + public function test_addSite_noUrls() + { + try { + Piwik_SitesManager_API::addSite("name",array()); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + } + + /** + * wrong urls -> exception + */ + public function test_addSite_wrongUrls1() + { + try { + Piwik_SitesManager_API::addSite("name",array("")); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + } + /** + * wrong urls -> exception + */ + public function test_addSite_wrongUrls2() + { + try { + Piwik_SitesManager_API::addSite("name",""); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + } + + /** + * wrong urls -> exception + */ + public function test_addSite_wrongUrls3() + { + try { + Piwik_SitesManager_API::addSite("name","httpww://piwik.net"); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + } + + /** + * wrong urls -> exception + */ + public function test_addSite_wrongUrls4() + { + try { + Piwik_SitesManager_API::addSite("name","httpww://piwik.net/gqg~#"); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + } + + /** + * one url -> one main_url and nothing inserted as alias urls + */ + public function test_addSite_oneUrl() + { + $url = "http://piwik.net/"; + $urlOK = "http://piwik.net"; + $idsite = Piwik_SitesManager_API::addSite("name",$url); + $this->assertIsA( $idsite,'int'); + + $siteInfo = Piwik_SitesManager_API::getSiteFromId($idsite); + $this->assertEqual($siteInfo['main_url'], $urlOK); + + $siteUrls = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + $this->assertTrue(count($siteUrls)===1); + } + + /** + * several urls -> one main_url and others as alias urls + */ + public function test_addSite_severalUrls() + { + $urls = array("http://piwik.net/","http://piwik.com","https://piwik.net/test/"); + $urlsOK = array("http://piwik.net","http://piwik.com","https://piwik.net/test"); + $idsite = Piwik_SitesManager_API::addSite("super website",$urls); + $this->assertIsA( $idsite,'int'); + + $siteInfo = Piwik_SitesManager_API::getSiteFromId($idsite); + $this->assertEqual($siteInfo['main_url'], $urlsOK[0]); + + $siteUrls = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + $this->assertEqual($siteUrls, $urlsOK); + } + + /** + * strange name + */ + public function test_addSite_strangeName() + { + $name = "supertest(); ~@@()''!£\$'%%^'!£"; + $idsite = Piwik_SitesManager_API::addSite($name,"http://piwik.net"); + $this->assertIsA( $idsite,'int'); + + $siteInfo = Piwik_SitesManager_API::getSiteFromId($idsite); + $this->assertEqual($siteInfo['name'], $name); + + } + /** + * normal case + */ + public function test_addSite() + { + $name = "website "; + $idsite = Piwik_SitesManager_API::addSite($name,array("http://piwik.net","http://piwik.com/test/")); + $this->assertIsA( $idsite,'int'); + + $siteInfo = Piwik_SitesManager_API::getSiteFromId($idsite); + $this->assertEqual($siteInfo['name'], $name); + $this->assertEqual($siteInfo['main_url'], "http://piwik.net"); + + $siteUrls = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + $this->assertEqual($siteUrls, array("http://piwik.net","http://piwik.com/test")); + + return $idsite; + } + + /** + * no duplicate -> all the urls are saved + */ + public function test_addSiteUrls_noDuplicate() + { + $idsite = $this->test_addSite(); + + $siteUrlsBefore = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + + $toAdd = array( "http://piwik1.net", + "http://piwik2.net", + "http://piwik3.net/test/", + "http://localhost/test", + "http://localho5.st/test", + "http://l42578gqege.f4", + "http://super.com/test/test/atqata675675/te" + ); + $toAddValid = array("http://piwik1.net", + "http://piwik2.net", + "http://piwik3.net/test", + "http://localhost/test", + "http://localho5.st/test", + "http://l42578gqege.f4", + "http://super.com/test/test/atqata675675/te"); + + $insertedUrls = Piwik_SitesManager_API::addSiteAliasUrls($idsite, $toAdd); + $this->assertEqual($insertedUrls, count($toAdd)); + + $siteUrlsAfter = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + + $shouldHave = array_merge($siteUrlsBefore, $toAddValid); + sort($shouldHave); + + sort($siteUrlsAfter); + + $this->assertEqual($shouldHave, $siteUrlsAfter); + } + + /** + * duplicate -> don't save the already existing URLs + */ + public function test_addSiteUrls_duplicate() + { + $idsite = $this->test_addSite(); + + $siteUrlsBefore = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + + $toAdd = array_merge($siteUrlsBefore, array("http://piwik1.net","http://piwik2.net")); + + $insertedUrls = Piwik_SitesManager_API::addSiteAliasUrls($idsite, $toAdd); + $this->assertEqual($insertedUrls, count($toAdd) - count($siteUrlsBefore)); + + $siteUrlsAfter = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + + $shouldHave = $toAdd; + sort($shouldHave); + + sort($siteUrlsAfter); + + $this->assertEqual($shouldHave, $siteUrlsAfter); + } + + /** + * case empty array => nothing happens + */ + public function test_addSiteUrls_noUrlsToAdd1() + { + $idsite = $this->test_addSite(); + + $siteUrlsBefore = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + + $toAdd = array(); + + $insertedUrls = Piwik_SitesManager_API::addSiteAliasUrls($idsite, $toAdd); + $this->assertEqual($insertedUrls, count($toAdd)); + + $siteUrlsAfter = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + + $shouldHave = $siteUrlsBefore; + sort($shouldHave); + + sort($siteUrlsAfter); + + $this->assertEqual($shouldHave, $siteUrlsAfter); + } + + /** + * case array only duplicate => nothing happens + */ + public function test_addSiteUrls_noUrlsToAdd2() + { + $idsite = $this->test_addSite(); + + $siteUrlsBefore = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + + $toAdd = $siteUrlsBefore; + + $insertedUrls = Piwik_SitesManager_API::addSiteAliasUrls($idsite, $toAdd); + $this->assertEqual($insertedUrls, 0); + + $siteUrlsAfter = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + + $shouldHave = $siteUrlsBefore; + sort($shouldHave); + + sort($siteUrlsAfter); + + $this->assertEqual($shouldHave, $siteUrlsAfter); + } + /** + * wrong format urls => exception + */ + public function test_addSiteUrls_wrongUrlsFormat3() + { + $idsite = $this->test_addSite(); + $toAdd = array("htt{}p://pigeq.com/test"); + try { + $insertedUrls = Piwik_SitesManager_API::addSiteAliasUrls($idsite, $toAdd); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + } + + /** + * wrong idsite => no exception because simply no access to this resource + */ + public function test_addSiteUrls_wrongIdSite1() + { + $toAdd = array("http://pigeq.com/test"); + try { + $insertedUrls = Piwik_SitesManager_API::addSiteAliasUrls(-1, $toAdd); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + } + + /** + * wrong idsite => exception + */ + public function test_addSiteUrls_wrongIdSite2() + { + $toAdd = array("http://pigeq.com/test"); + + try { + $insertedUrls = Piwik_SitesManager_API::addSiteAliasUrls(155, $toAdd); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + } + + /** + * no Id -> empty array + */ + function test_getAllSitesId_noId() + { + $ids = Piwik_SitesManager_API::getAllSitesId(); + $this->assertEqual(array(),$ids); + } + + /** + * several Id -> normal array + */ + function test_getAllSitesId_severalId() + { + $name="tetq"; + $idsites = array( + Piwik_SitesManager_API::addSite($name,array("http://piwik.net","http://piwik.com/test/")), + Piwik_SitesManager_API::addSite($name,array("http://piwik.net","http://piwik.com/test/")), + Piwik_SitesManager_API::addSite($name,array("http://piwik.net","http://piwik.com/test/")), + Piwik_SitesManager_API::addSite($name,array("http://piwik.net","http://piwik.com/test/")), + Piwik_SitesManager_API::addSite($name,array("http://piwik.net","http://piwik.com/test/")), + ); + + $ids = Piwik_SitesManager_API::getAllSitesId(); + $this->assertEqual($idsites,$ids); + } + + /** + * wrong id => exception + */ + function test_getSiteFromId_wrongId1() + { + + try { + $siteInfo = Piwik_SitesManager_API::getSiteFromId(0); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + + } + /** + * wrong id => exception + */ + function test_getSiteFromId_wrongId2() + { + + try { + $siteInfo = Piwik_SitesManager_API::getSiteFromId("x1"); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + + } + /** + * wrong id : no access => exception + */ + function test_getSiteFromId_wrongId3() + { + $idsite = Piwik_SitesManager_API::addSite("site",array("http://piwik.net","http://piwik.com/test/")); + $this->assertEqual($idsite,1); + + // set noaccess to site 1 + FakeAccess::setIdSitesView (array(2)); + FakeAccess::setIdSitesAdmin (array()); + + try { + $siteInfo = Piwik_SitesManager_API::getSiteFromId(1); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + + } + /** + * normal case + */ + function test_getSiteFromId_normalId() + { + $name = "website ''"; + $idsite = Piwik_SitesManager_API::addSite($name,array("http://piwik.net","http://piwik.com/test/")); + $this->assertIsA( $idsite,'int'); + + $siteInfo = Piwik_SitesManager_API::getSiteFromId($idsite); + $this->assertEqual($siteInfo['name'], $name); + $this->assertEqual($siteInfo['main_url'], "http://piwik.net"); + } + + + /** + * there is no admin site available -> array() + */ + function test_getSitesWithAdminAccess_noResult() + { + FakeAccess::setIdSitesAdmin (array()); + + $sites = Piwik_SitesManager_API::getSitesWithAdminAccess(); + $this->assertEqual($sites, array()); + } + + /** + * normal case, admin and view and noaccess website => return only admin + */ + function test_getSitesWithAdminAccess() + { + $idsite = Piwik_SitesManager_API::addSite("site1",array("http://piwik.net","http://piwik.com/test/")); + $idsite = Piwik_SitesManager_API::addSite("site2",array("http://piwik.com/test/")); + $idsite = Piwik_SitesManager_API::addSite("site3",array("http://piwik.org")); + + $resultWanted = array( + 0 => array("idsite" => 1, "name" => "site1", "main_url" =>"http://piwik.net"), + 1 => array("idsite" => 3, "name" => "site3", "main_url" =>"http://piwik.org"), + ); + + FakeAccess::setIdSitesAdmin (array(1,3)); + + $sites = Piwik_SitesManager_API::getSitesWithAdminAccess(); + + // we dont test the ts_created + unset($sites[0]['ts_created']); + unset($sites[1]['ts_created']); + $this->assertEqual($sites, $resultWanted); + } + + /** + * there is no admin site available -> array() + */ + function test_getSitesWithViewAccess_noResult() + { + FakeAccess::setIdSitesView (array()); + FakeAccess::setIdSitesAdmin (array()); + + $sites = Piwik_SitesManager_API::getSitesWithViewAccess(); + $this->assertEqual($sites, array()); + } + + /** + * normal case, admin and view and noaccess website => return only admin + */ + function test_getSitesWithViewAccess() + { + $idsite = Piwik_SitesManager_API::addSite("site1",array("http://piwik.net","http://piwik.com/test/")); + $idsite = Piwik_SitesManager_API::addSite("site2",array("http://piwik.com/test/")); + $idsite = Piwik_SitesManager_API::addSite("site3",array("http://piwik.org")); + + $resultWanted = array( + 0 => array("idsite" => 1, "name" => "site1", "main_url" =>"http://piwik.net"), + 1 => array("idsite" => 3, "name" => "site3", "main_url" =>"http://piwik.org"), + ); + + FakeAccess::setIdSitesView (array(1,3)); + FakeAccess::setIdSitesAdmin (array()); + + $sites = Piwik_SitesManager_API::getSitesWithViewAccess(); + // we dont test the ts_created + unset($sites[0]['ts_created']); + unset($sites[1]['ts_created']); + $this->assertEqual($sites, $resultWanted); + } + + /** + * there is no admin site available -> array() + */ + function test_getSitesWithAtLeastViewAccess_noResult() + { + FakeAccess::setIdSitesView (array()); + FakeAccess::setIdSitesAdmin (array()); + + $sites = Piwik_SitesManager_API::getSitesWithAtLeastViewAccess(); + $this->assertEqual($sites, array()); + } + + /** + * normal case, admin and view and noaccess website => return only admin + */ + function test_getSitesWithAtLeastViewAccess() + { + $idsite = Piwik_SitesManager_API::addSite("site1",array("http://piwik.net","http://piwik.com/test/")); + $idsite = Piwik_SitesManager_API::addSite("site2",array("http://piwik.com/test/")); + $idsite = Piwik_SitesManager_API::addSite("site3",array("http://piwik.org")); + + $resultWanted = array( + 0 => array("idsite" => 1, "name" => "site1", "main_url" =>"http://piwik.net"), + 1 => array("idsite" => 3, "name" => "site3", "main_url" =>"http://piwik.org"), + ); + + FakeAccess::setIdSitesView (array(1,3)); + FakeAccess::setIdSitesAdmin (array()); + + $sites = Piwik_SitesManager_API::getSitesWithAtLeastViewAccess(); + // we dont test the ts_created + unset($sites[0]['ts_created']); + unset($sites[1]['ts_created']); + $this->assertEqual($sites, $resultWanted); + } + + + /** + * no urls for this site => array() + */ + function test_getSiteUrlsFromId_noUrls() + { + $idsite = Piwik_SitesManager_API::addSite("site1",array("http://piwik.net")); + + $urls = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + $this->assertEqual(array("http://piwik.net"),$urls); + } + + /** + * normal case + */ + function test_getSiteUrlsFromId_manyUrls() + { + $site = array("http://piwik.net", + "http://piwik.org", + "http://piwik.org", + "http://piwik.com"); + sort($site); + + $idsite = Piwik_SitesManager_API::addSite("site1",$site); + + + $siteWanted = array("http://piwik.net", + "http://piwik.org", + "http://piwik.com"); + sort($siteWanted); + $urls = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + + + $this->assertEqual($siteWanted, $urls); + } + + /** + * wrongId => exception + */ + function test_getSiteUrlsFromId_wrongId() + { + FakeAccess::setIdSitesView (array(3)); + FakeAccess::setIdSitesAdmin (array()); + + try { + Piwik_SitesManager_API::getSiteUrlsFromId(1); + } + catch (Exception $expected) { + return; + } + $this->fail("Exception not raised."); + } + + /** + * one url => no change to alias urls + */ + function test_updateSite_oneUrl() + { + $urls = array("http://piwiknew.com", + "http://piwiknew.net", + "http://piwiknew.org", + "http://piwiknew.fr"); + $idsite = Piwik_SitesManager_API::addSite("site1",$urls); + + $newMainUrl = "http://main.url"; + Piwik_SitesManager_API::updateSite($idsite, "test toto@{}", $newMainUrl ); + + $allUrls = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + + $this->assertEqual($allUrls[0], $newMainUrl); + $aliasUrls = array_slice($allUrls,1); + $this->assertEqual($aliasUrls,array()); + } + + /** + * strange name and NO URL => name ok, main_url not updated + */ + function test_updateSite_strangeNameNoUrl() + { + $idsite = Piwik_SitesManager_API::addSite("site1","http://main.url"); + $newName ="test toto@{'786'}"; + + Piwik_SitesManager_API::updateSite($idsite, $newName ); + + $site = Piwik_SitesManager_API::getSiteFromId($idsite); + + $this->assertEqual($site['name'],$newName); + // url didn't change because parameter url NULL in updateSite + $this->assertEqual($site['main_url'],"http://main.url"); + + $this->assertEqual(count(null),0); + + } + + /** + * several urls => both main and alias are updated + */ + function test_updateSite_severalUrls() + { + $urls = array("http://piwiknew.com", + "http://piwiknew.net", + "http://piwiknew.org", + "http://piwiknew.fr"); + $idsite = Piwik_SitesManager_API::addSite("site1",$urls); + + $newurls = array("http://piwiknew2.com", + "http://piwiknew2.net", + "http://piwiknew2.org", + "http://piwiknew2.fr"); + Piwik_SitesManager_API::updateSite($idsite, "test toto@{}",$newurls ); + + $allUrls = Piwik_SitesManager_API::getSiteUrlsFromId($idsite); + sort($allUrls); + sort($newurls); + + $this->assertEqual($allUrls,$newurls); + + } +} + |