Best Prophecy code snippet using with.getInstance
ApiTest.php
Source:ApiTest.php  
...30{31    public function setUp()32    {33        parent::setUp();34        Plugin\Manager::getInstance()->activatePlugin('MobileAppMeasurable');35        // setup the access layer36        FakeAccess::$superUser = true;37    }38    /**39     * empty name -> exception40     * @expectedException \Exception41     */42    public function test_addSite_WithEmptyName_ThrowsException()43    {44        API::getInstance()->addSite("", array("http://piwik.net"));45    }46    /**47     * DataProvider for testAddSiteWrongUrls48     */49    public function getInvalidUrlData()50    {51        return array(52            array(array()), // no urls53            array(array("")),54            array(""),55            array("5http://piwik.net"),56            array("???://piwik.net"),57        );58    }59    /**60     * wrong urls -> exception61     *62     * @dataProvider getInvalidUrlData63     * @expectedException \Exception64     */65    public function test_addSite_WithWrongUrls_ThrowsException($url)66    {67        API::getInstance()->addSite("name", $url);68    }69    /**70     * Test with valid IPs71     */72    public function test_addSite_WithExcludedIps_AndTimezone_AndCurrency_AndExcludedQueryParameters_SucceedsWhenParamsAreValid()73    {74        $ips = '1.2.3.4,1.1.1.*,1.2.*.*,1.*.*.*';75        $timezone = 'Europe/Paris';76        $currency = 'EUR';77        $excludedQueryParameters = 'p1,P2, P33333';78        $expectedExcludedQueryParameters = 'p1,P2,P33333';79        $excludedUserAgents = " p1,P2, \nP3333 ";80        $expectedExcludedUserAgents = "p1,P2,P3333";81        $expectedWebsiteType = 'mobile-\'app';82        $keepUrlFragment = 1;83        $idsite = API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 1,84            $siteSearch = 1, $searchKeywordParameters = 'search,param', $searchCategoryParameters = 'cat,category',85            $ips, $excludedQueryParameters, $timezone, $currency, $group = null, $startDate = null, $excludedUserAgents,86            $keepUrlFragment, $expectedWebsiteType);87        $siteInfo = API::getInstance()->getSiteFromId($idsite);88        $this->assertEquals($ips, $siteInfo['excluded_ips']);89        $this->assertEquals($timezone, $siteInfo['timezone']);90        $this->assertEquals($currency, $siteInfo['currency']);91        $this->assertEquals($ecommerce, $siteInfo['ecommerce']);92        $this->assertTrue(Site::isEcommerceEnabledFor($idsite));93        $this->assertEquals($siteSearch, $siteInfo['sitesearch']);94        $this->assertTrue(Site::isSiteSearchEnabledFor($idsite));95        $this->assertEquals($expectedWebsiteType, $siteInfo['type']);96        $this->assertEquals($expectedWebsiteType, Site::getTypeFor($idsite));97        $this->assertEquals($searchKeywordParameters, $siteInfo['sitesearch_keyword_parameters']);98        $this->assertEquals($searchCategoryParameters, $siteInfo['sitesearch_category_parameters']);99        $this->assertEquals($expectedExcludedQueryParameters, $siteInfo['excluded_parameters']);100        $this->assertEquals($expectedExcludedUserAgents, $siteInfo['excluded_user_agents']);101    }102    /**103     * dataProvider for testAddSiteExcludedIpsNotValid104     */105    public function getInvalidIPsData()106    {107        return array(108            array('35817587341'),109            array('ieagieha'),110            array('1.2.3'),111            array('*.1.1.1'),112            array('*.*.1.1'),113            array('*.*.*.1'),114            array('1.1.1.1.1'),115        );116    }117    /**118     * Test with invalid IPs119     *120     * @dataProvider getInvalidIPsData121     * @expectedException \Exception122     */123    public function test_addSite_WithInvalidExcludedIps_ThrowsException($ip)124    {125        API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 0,126            $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $ip);127    }128    /**129     * one url -> one main_url and nothing inserted as alias urls130     */131    public function test_addSite_WithOneUrl_Succeeds_AndCreatesNoAliasUrls()132    {133        $url = "http://piwik.net/";134        $urlOK = "http://piwik.net";135        $idsite = API::getInstance()->addSite("name", $url);136        $this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_INT, $idsite);137        $siteInfo = API::getInstance()->getSiteFromId($idsite);138        $this->assertEquals($urlOK, $siteInfo['main_url']);139        $this->assertEquals(date('Y-m-d'), date('Y-m-d', strtotime($siteInfo['ts_created'])));140        $siteUrls = API::getInstance()->getSiteUrlsFromId($idsite);141        $this->assertEquals(1, count($siteUrls));142    }143    /**144     * several urls -> one main_url and others as alias urls145     */146    public function test_addSite_WithSeveralUrls_Succeeds_AndCreatesAliasUrls()147    {148        $urls = array("http://piwik.net/", "http://piwik.com", "https://piwik.net/test/", "piwik.net/another/test");149        $urlsOK = array("http://piwik.net", "http://piwik.com", "http://piwik.net/another/test", "https://piwik.net/test");150        $idsite = API::getInstance()->addSite("super website", $urls);151        $this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_INT, $idsite);152        $siteInfo = API::getInstance()->getSiteFromId($idsite);153        $this->assertEquals($urlsOK[0], $siteInfo['main_url']);154        $siteUrls = API::getInstance()->getSiteUrlsFromId($idsite);155        $this->assertEquals($urlsOK, $siteUrls);156    }157    /**158     * strange name159     */160    public function test_addSite_WithStrangeName_Succeeds()161    {162        $name = "supertest(); ~@@()''!£\$'%%^'!£ பà¯";163        $idsite = API::getInstance()->addSite($name, "http://piwik.net");164        $this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_INT, $idsite);165        $siteInfo = API::getInstance()->getSiteFromId($idsite);166        $this->assertEquals($name, $siteInfo['name']);167    }168    /**169     * @expectedException \Exception170     * @expectedExceptionMessage Only 100 characters are allowed171     */172    public function test_addSite_ShouldFailAndNotCreatedASite_IfASettingIsInvalid()173    {174        try {175            $type = MobileAppMeasurable\Type::ID;176            $settings = array('app_id' => str_pad('test', 789, 't'));177            $this->addSiteWithType($type, $settings);178        } catch (Exception $e) {179            // make sure no site created180            $ids = API::getInstance()->getAllSitesId();181            $this->assertEquals(array(), $ids);182            throw $e;183        }184    }185    public function test_addSite_ShouldSavePassedMeasurableSettings_IfSettingsAreValid()186    {187        $type = MobileAppMeasurable\Type::ID;188        $settings = array('app_id' => 'org.piwik.mobile2');189        $idSite = $this->addSiteWithType($type, $settings);190        $this->assertSame(1, $idSite);191        $measurable = new Measurable($idSite);192        $appId = $measurable->getSettingValue('app_id');193        $this->assertSame('org.piwik.mobile2', $appId);194    }195    /**196     * adds a site197     * use by several other unit tests198     */199    protected function _addSite()200    {201        $name = "website ";202        $idsite = API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/"));203        $this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_INT, $idsite);204        $siteInfo = API::getInstance()->getSiteFromId($idsite);205        $this->assertEquals($name, $siteInfo['name']);206        $this->assertEquals("http://piwik.net", $siteInfo['main_url']);207        $siteUrls = API::getInstance()->getSiteUrlsFromId($idsite);208        $this->assertEquals(array("http://piwik.net", "http://piwik.com/test"), $siteUrls);209        return $idsite;210    }211    private function addSiteWithType($type, $settings)212    {213        return API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 0,214            $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,215            $ip = null,216            $excludedQueryParameters = null,217            $timezone = null,218            $currency = null,219            $group = null,220            $startDate = null,221            $excludedUserAgents = null,222            $keepURLFragments = null,223            $type, $settings);224    }225    private function updateSiteSettings($idSite, $newSiteName, $settings)226    {227        return API::getInstance()->updateSite($idSite,228            $newSiteName,229            $urls = null,230            $ecommerce = null,231            $siteSearch = null,232            $searchKeywordParameters = null,233            $searchCategoryParameters = null,234            $excludedIps = null,235            $excludedQueryParameters = null,236            $timezone = null,237            $currency = null,238            $group = null,239            $startDate = null,240            $excludedUserAgents = null,241            $keepURLFragments = null,242            $type = null,243            $settings);244    }245    /**246     * no duplicate -> all the urls are saved247     */248    public function test_addSiteAliasUrls_WithUniqueUrls_SavesAllUrls()249    {250        $idsite = $this->_addSite();251        $siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);252        $toAdd = array("http://piwik1.net",253                       "http://piwik2.net",254                       "http://piwik3.net/test/",255                       "http://localhost/test",256                       "http://localho5.st/test",257                       "http://l42578gqege.f4",258                       "http://super.com/test/test/atqata675675/te"259        );260        $toAddValid = array("http://piwik1.net",261                            "http://piwik2.net",262                            "http://piwik3.net/test",263                            "http://localhost/test",264                            "http://localho5.st/test",265                            "http://l42578gqege.f4",266                            "http://super.com/test/test/atqata675675/te");267        $insertedUrls = API::getInstance()->addSiteAliasUrls($idsite, $toAdd);268        $this->assertEquals(count($toAdd), $insertedUrls);269        $siteUrlsAfter = API::getInstance()->getSiteUrlsFromId($idsite);270        $shouldHave = array_merge($siteUrlsBefore, $toAddValid);271        sort($shouldHave);272        sort($siteUrlsAfter);273        $this->assertEquals($shouldHave, $siteUrlsAfter);274    }275    /**276     * duplicate -> don't save the already existing URLs277     */278    public function test_addSiteAliasUrls_WithDuplicateUrls_RemovesDuplicatesBeforeSaving()279    {280        $idsite = $this->_addSite();281        $siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);282        $toAdd = array_merge($siteUrlsBefore, array("http://piwik1.net", "http://piwik2.net"));283        $insertedUrls = API::getInstance()->addSiteAliasUrls($idsite, $toAdd);284        $this->assertEquals(count($toAdd) - count($siteUrlsBefore), $insertedUrls);285        $siteUrlsAfter = API::getInstance()->getSiteUrlsFromId($idsite);286        $shouldHave = $toAdd;287        sort($shouldHave);288        sort($siteUrlsAfter);289        $this->assertEquals($shouldHave, $siteUrlsAfter);290    }291    /**292     * case empty array => nothing happens293     */294    public function test_addSiteAliasUrls_WithNoUrls_DoesNothing()295    {296        $idsite = $this->_addSite();297        $siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);298        $toAdd = array();299        $insertedUrls = API::getInstance()->addSiteAliasUrls($idsite, $toAdd);300        $this->assertEquals(count($toAdd), $insertedUrls);301        $siteUrlsAfter = API::getInstance()->getSiteUrlsFromId($idsite);302        $shouldHave = $siteUrlsBefore;303        sort($shouldHave);304        sort($siteUrlsAfter);305        $this->assertEquals($shouldHave, $siteUrlsAfter);306    }307    /**308     * case array only duplicate => nothing happens309     */310    public function test_addSiteAliasUrls_WithAlreadyPersistedUrls_DoesNothing()311    {312        $idsite = $this->_addSite();313        $siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);314        $toAdd = $siteUrlsBefore;315        $insertedUrls = API::getInstance()->addSiteAliasUrls($idsite, $toAdd);316        $this->assertEquals(0, $insertedUrls);317        $siteUrlsAfter = API::getInstance()->getSiteUrlsFromId($idsite);318        $shouldHave = $siteUrlsBefore;319        sort($shouldHave);320        sort($siteUrlsAfter);321        $this->assertEquals($shouldHave, $siteUrlsAfter);322    }323    /**324     * wrong format urls => exception325     * @expectedException \Exception326     */327    public function test_addSiteAliasUrls_WithIncorrectFormat_ThrowsException_3()328    {329        $idsite = $this->_addSite();330        $toAdd = array("http:mpigeq");331        API::getInstance()->addSiteAliasUrls($idsite, $toAdd);332    }333    /**334     * wrong idsite => no exception because simply no access to this resource335     * @expectedException \Exception336     */337    public function test_addSiteAliasUrls_WithWrongIdSite_ThrowsException()338    {339        $toAdd = array("http://pigeq.com/test");340        API::getInstance()->addSiteAliasUrls(-1, $toAdd);341    }342    /**343     * wrong idsite => exception344     * @expectedException \Exception345     */346    public function test_addSiteAliasUrls_WithWrongIdSite_ThrowsException2()347    {348        $toAdd = array("http://pigeq.com/test");349        API::getInstance()->addSiteAliasUrls(155, $toAdd);350    }351    public function test_addSite_CorrectlySavesExcludeUnknownUrlsSetting()352    {353        $idSite = API::getInstance()->addSite("site", array("http://piwik.net"), $ecommerce = null, $siteSearch = null,354            $searchKeywordParams = null, $searchCategoryParams = null, $excludedIps = null, $excludedQueryParams = null,355            $timezone = null, $currency = null, $group = null, $startDate = null, $excludedUserAgents = null,356            $keepUrlFragments = null, $type = null, $settings = null, $excludeUnknownUrls = true);357        $site = API::getInstance()->getSiteFromId($idSite);358        $this->assertEquals(1, $site['exclude_unknown_urls']);359    }360    /**361     * no Id -> empty array362     */363    public function test_getAllSitesId_ReturnsNothing_WhenNoSitesSaved()364    {365        $ids = API::getInstance()->getAllSitesId();366        $this->assertEquals(array(), $ids);367    }368    /**369     * several Id -> normal array370     */371    public function test_getAllSitesId_ReturnsAllIds_WhenMultipleSitesPersisted()372    {373        $name = "tetq";374        $idsites = array(375            API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),376            API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),377            API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),378            API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),379            API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),380        );381        $ids = API::getInstance()->getAllSitesId();382        $this->assertEquals($idsites, $ids);383    }384    /**385     * wrong id => exception386     * @expectedException \Exception387     */388    public function test_getSiteFromId_WithWrongId_ThrowsException1()389    {390        API::getInstance()->getSiteFromId(0);391    }392    /**393     * wrong id => exception394     * @expectedException \Exception395     */396    public function test_getSiteFromId_WithWrongId_ThrowsException2()397    {398        API::getInstance()->getSiteFromId("x1");399    }400    /**401     * wrong id : no access => exception402     * @expectedException \Exception403     */404    public function test_getSiteFromId_ThrowsException_WhenTheUserDoesNotHavaAcessToTheSite()405    {406        $idsite = API::getInstance()->addSite("site", array("http://piwik.net", "http://piwik.com/test/"));407        $this->assertEquals(1, $idsite);408        // set noaccess to site 1409        FakeAccess::setIdSitesView(array(2));410        FakeAccess::setIdSitesAdmin(array());411        API::getInstance()->getSiteFromId(1);412    }413    /**414     * normal case415     */416    public function test_getSiteFromId_WithNormalId_ReturnsTheCorrectSite()417    {418        $name = "website ''";419        $idsite = API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/"));420        $this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_INT, $idsite);421        $siteInfo = API::getInstance()->getSiteFromId($idsite);422        $this->assertEquals($name, $siteInfo['name']);423        $this->assertEquals("http://piwik.net", $siteInfo['main_url']);424    }425    /**426     * there is no admin site available -> array()427     */428    public function test_getSitesWithAdminAccess_ReturnsNothing_WhenUserHasNoAdminAccess()429    {430        FakeAccess::setIdSitesAdmin(array());431        $sites = API::getInstance()->getSitesWithAdminAccess();432        $this->assertEquals(array(), $sites);433    }434    /**435     * normal case, admin and view and noaccess website => return only admin436     */437    public function test_getSitesWithAdminAccess_shouldOnlyReturnSitesHavingActuallyAdminAccess()438    {439        API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com/test/"));440        API::getInstance()->addSite("site2", array("http://piwik.com/test/"));441        API::getInstance()->addSite("site3", array("http://piwik.org"));442        $resultWanted = array(443            0 => array("idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0),444            1 => array("idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0),445        );446        FakeAccess::setIdSitesAdmin(array(1, 3));447        $sites = API::getInstance()->getSitesWithAdminAccess();448        // we don't test the ts_created449        unset($sites[0]['ts_created']);450        unset($sites[1]['ts_created']);451        $this->assertEquals($resultWanted, $sites);452    }453    public function test_getSitesWithAdminAccess_shouldApplyLimit_IfSet()454    {455        $this->createManySitesWithAdminAccess(40);456        // should return all sites by default457        $sites = API::getInstance()->getSitesWithAdminAccess();458        $this->assertReturnedSitesContainsSiteIds(range(1, 40), $sites);459        // return only 5 sites460        $sites = API::getInstance()->getSitesWithAdminAccess(false, false, 5);461        $this->assertReturnedSitesContainsSiteIds(array(1, 2, 3, 4, 5), $sites);462        // return only 10 sites463        $sites = API::getInstance()->getSitesWithAdminAccess(false, false, 10);464        $this->assertReturnedSitesContainsSiteIds(range(1, 10), $sites);465    }466    public function test_getSitesWithAdminAccess_shouldApplyPattern_IfSetAndFindBySiteName()467    {468        $this->createManySitesWithAdminAccess(40);469        // by site name470        $sites = API::getInstance()->getSitesWithAdminAccess(false, 'site38');471        $this->assertReturnedSitesContainsSiteIds(array(38), $sites);472    }473    public function test_getSitesWithAdminAccess_shouldApplyPattern_IfSetAndFindByUrl()474    {475        $this->createManySitesWithAdminAccess(40);476        $sites = API::getInstance()->getSitesWithAdminAccess(false, 'piwik38.o');477        $this->assertReturnedSitesContainsSiteIds(array(38), $sites);478    }479    public function test_getSitesWithAdminAccess_shouldApplyPattern_AndFindMany()480    {481        $this->createManySitesWithAdminAccess(40);482        $sites = API::getInstance()->getSitesWithAdminAccess(false, '5');483        $this->assertReturnedSitesContainsSiteIds(array(5, 15, 25, 35), $sites);484    }485    public function test_getSitesWithAdminAccess_shouldApplyPatternAndLimit()486    {487        $this->createManySitesWithAdminAccess(40);488        $sites = API::getInstance()->getSitesWithAdminAccess(false, '5', 2);489        $this->assertReturnedSitesContainsSiteIds(array(5, 15), $sites);490    }491    private function createManySitesWithAdminAccess($numSites)492    {493        for ($i = 1; $i <= $numSites; $i++) {494            API::getInstance()->addSite("site" . $i, array("http://piwik$i.org"));495        }496        FakeAccess::setIdSitesAdmin(range(1, $numSites));497    }498    private function assertReturnedSitesContainsSiteIds($expectedSiteIds, $sites)499    {500        $this->assertCount(count($expectedSiteIds), $sites);501        foreach ($sites as $site) {502            $key = array_search($site['idsite'], $expectedSiteIds);503            $this->assertNotFalse($key, 'Did not find expected siteId "' . $site['idsite'] . '" in the expected siteIds');504            unset($expectedSiteIds[$key]);505        }506        $siteIds = var_export($expectedSiteIds, 1);507        $this->assertEmpty($expectedSiteIds, 'Not all expected sites were found, remaining site ids: ' . $siteIds);508    }509    /**510     * there is no admin site available -> array()511     */512    public function test_getSitesWithViewAccess_ReturnsNothing_IfUserHasNoViewOrAdminAccess()513    {514        FakeAccess::setIdSitesView(array());515        FakeAccess::setIdSitesAdmin(array());516        $sites = API::getInstance()->getSitesWithViewAccess();517        $this->assertEquals(array(), $sites);518    }519    /**520     * normal case, admin and view and noaccess website => return only admin521     */522    public function test_getSitesWithViewAccess_ReturnsSitesWithViewAccess()523    {524        API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com/test/"));525        API::getInstance()->addSite("site2", array("http://piwik.com/test/"));526        API::getInstance()->addSite("site3", array("http://piwik.org"));527        $resultWanted = array(528            0 => array("idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', "excluded_ips" => "", 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0),529            1 => array("idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', "excluded_ips" => "", 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0),530        );531        FakeAccess::setIdSitesView(array(1, 3));532        FakeAccess::setIdSitesAdmin(array());533        $sites = API::getInstance()->getSitesWithViewAccess();534        // we don't test the ts_created535        unset($sites[0]['ts_created']);536        unset($sites[1]['ts_created']);537        $this->assertEquals($resultWanted, $sites);538    }539    /**540     * there is no admin site available -> array()541     */542    public function test_getSitesWithAtLeastViewAccess_ReturnsNothing_WhenUserHasNoAccess()543    {544        FakeAccess::setIdSitesView(array());545        FakeAccess::setIdSitesAdmin(array());546        $sites = API::getInstance()->getSitesWithAtLeastViewAccess();547        $this->assertEquals(array(), $sites);548    }549    /**550     * normal case, admin and view and noaccess website => return only admin551     */552    public function test_getSitesWithAtLeastViewAccess_ReturnsSitesWithViewAccess()553    {554        API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com/test/"), $ecommerce = 1);555        API::getInstance()->addSite("site2", array("http://piwik.com/test/"));556        API::getInstance()->addSite("site3", array("http://piwik.org"));557        $resultWanted = array(558            0 => array("idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 1, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0),559            1 => array("idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0),560        );561        FakeAccess::setIdSitesView(array(1, 3));562        FakeAccess::setIdSitesAdmin(array());563        $sites = API::getInstance()->getSitesWithAtLeastViewAccess();564        // we don't test the ts_created565        unset($sites[0]['ts_created']);566        unset($sites[1]['ts_created']);567        $this->assertEquals($resultWanted, $sites);568    }569    /**570     * no urls for this site => array()571     */572    public function test_getSiteUrlsFromId_ReturnsMainUrlOnly_WhenNoAliasUrls()573    {574        $idsite = API::getInstance()->addSite("site1", array("http://piwik.net"));575        $urls = API::getInstance()->getSiteUrlsFromId($idsite);576        $this->assertEquals(array("http://piwik.net"), $urls);577    }578    /**579     * normal case580     */581    public function test_getSiteUrlsFromId_ReturnsMainAndAliasUrls()582    {583        $site = array("http://piwik.net",584                      "http://piwik.org",585                      "http://piwik.org",586                      "http://piwik.com");587        sort($site);588        $idsite = API::getInstance()->addSite("site1", $site);589        $siteWanted = array("http://piwik.net",590                            "http://piwik.org",591                            "http://piwik.com");592        sort($siteWanted);593        $urls = API::getInstance()->getSiteUrlsFromId($idsite);594        $this->assertEquals($siteWanted, $urls);595    }596    /**597     * wrongId => exception598     * @expectedException \Exception599     */600    public function test_getSiteUrlsFromId_ThrowsException_WhenSiteIdIsIncorrect()601    {602        FakeAccess::setIdSitesView(array(3));603        FakeAccess::setIdSitesAdmin(array());604        API::getInstance()->getSiteUrlsFromId(1);605    }606    /**607     * one url => no change to alias urls608     */609    public function test_updateSite_WithOneUrl_RemovesAliasUrls_AndUpdatesTheSiteCorrectly()610    {611        $urls = array("http://piwiknew.com",612                      "http://piwiknew.net",613                      "http://piwiknew.org",614                      "http://piwiknew.fr");615        $idsite = API::getInstance()->addSite("site1", $urls);616        $newMainUrl = "http://main.url";617        // Also test that the group was set to empty, and is searchable618        $websites = API::getInstance()->getSitesFromGroup('');619        $this->assertEquals(1, count($websites));620        // the Update doesn't change the group field621        API::getInstance()->updateSite($idsite, "test toto@{}", $newMainUrl);622        $websites = API::getInstance()->getSitesFromGroup('');623        $this->assertEquals(1, count($websites));624        // Updating the group to something625        $group = 'something';626        API::getInstance()->updateSite($idsite, "test toto@{}", $newMainUrl, $ecommerce = 0, $ss = true, $ss_kwd = null, $ss_cat = '', $ips = null, $parametersExclude = null, $timezone = null, $currency = null, $group);627        $websites = API::getInstance()->getSitesFromGroup($group);628        $this->assertEquals(1, count($websites));629        $this->assertEquals(date('Y-m-d'), date('Y-m-d', strtotime($websites[0]['ts_created'])));630        // Updating the group to nothing631        $group = '';632        $type = 'mobileAppTest';633        API::getInstance()->updateSite($idsite, "test toto@{}", $newMainUrl, $ecommerce = 0, $ss = false, $ss_kwd = '', $ss_cat = null, $ips = null, $parametersExclude = null, $timezone = null, $currency = null, $group, $startDate = '2010-01-01', $excludedUserAgent = null, $keepUrlFragment = 1, $type);634        $websites = API::getInstance()->getSitesFromGroup($group);635        $this->assertEquals(1, count($websites));636        $this->assertEquals('2010-01-01', date('Y-m-d', strtotime($websites[0]['ts_created'])));637        // Test setting the website type638        $this->assertEquals($type, Site::getTypeFor($idsite));639        // Check Alias URLs contain only main url640        $allUrls = API::getInstance()->getSiteUrlsFromId($idsite);641        $this->assertEquals($newMainUrl, $allUrls[0]);642        $aliasUrls = array_slice($allUrls, 1);643        $this->assertEquals(array(), $aliasUrls);644    }645    /**646     * strange name and NO URL => name ok, main_url not updated647     */648    public function test_updateSite_WithStrangeName_AndNoAliasUrls_UpdatesTheName_ButNoUrls()649    {650        $idsite = API::getInstance()->addSite("site1", "http://main.url");651        $newName = "test toto@{'786'}";652        API::getInstance()->updateSite($idsite, $newName);653        $site = API::getInstance()->getSiteFromId($idsite);654        $this->assertEquals($newName, $site['name']);655        // url didn't change because parameter url NULL in updateSite656        $this->assertEquals("http://main.url", $site['main_url']);657    }658    /**659     * several urls => both main and alias are updated660     * also test the update of group field661     */662    public function test_updateSite_WithSeveralUrlsAndGroup_UpdatesGroupAndUrls()663    {664        $urls = array("http://piwiknew.com",665                      "http://piwiknew.net",666                      "http://piwiknew.org",667                      "http://piwiknew.fr");668        $group = 'GROUP Before';669        $idsite = API::getInstance()->addSite("site1", $urls, $ecommerce = 1,670            $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,671            $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group, $startDate = '2011-01-01');672        $websites = API::getInstance()->getSitesFromGroup($group);673        $this->assertEquals(1, count($websites));674        $newurls = array("http://piwiknew2.com",675                         "http://piwiknew2.net",676                         "http://piwiknew2.org",677                         "http://piwiknew2.fr");678        $groupAfter = '   GROUP After';679        API::getInstance()->updateSite($idsite, "test toto@{}", $newurls, $ecommerce = 0,680            $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,681            $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $groupAfter);682        // no result for the group before update683        $websites = API::getInstance()->getSitesFromGroup($group);684        $this->assertEquals(0, count($websites));685        // Testing that the group was updated properly (and testing that the group value is trimmed before inserted/searched)686        $websites = API::getInstance()->getSitesFromGroup($groupAfter . ' ');687        $this->assertEquals(1, count($websites));688        $this->assertEquals('2011-01-01', date('Y-m-d', strtotime($websites[0]['ts_created'])));689        // Test fetch website groups690        $expectedGroups = array(trim($groupAfter));691        $fetched = API::getInstance()->getSitesGroups();692        $this->assertEquals($expectedGroups, $fetched);693        $allUrls = API::getInstance()->getSiteUrlsFromId($idsite);694        sort($allUrls);695        sort($newurls);696        $this->assertEquals($newurls, $allUrls);697    }698    /**699     * @expectedException \Exception700     * @expectedExceptionMessage Only 100 characters are allowed701     */702    public function test_updateSite_ShouldFailAndNotUpdateSite_IfASettingIsInvalid()703    {704        $type  = MobileAppMeasurable\Type::ID;705        $idSite = $this->addSiteWithType($type, array());706        try {707            $this->updateSiteSettings($idSite, 'newSiteName', array('app_id' => str_pad('t', 589, 't')));708        } catch (Exception $e) {709            // verify nothing was updated (not even the name)710            $measurable = new Measurable($idSite);711            $this->assertNotEquals('newSiteName', $measurable->getName());712            throw $e;713        }714    }715    public function test_updateSite_ShouldSavePassedMeasurableSettings_IfSettingsAreValid()716    {717        $type = MobileAppMeasurable\Type::ID;718        $idSite = $this->addSiteWithType($type, array());719        $this->assertSame(1, $idSite);720        $this->updateSiteSettings($idSite, 'newSiteName', $settings = array('app_id' => 'org.piwik.mobile2'));721        // verify it was updated722        $measurable = new Measurable($idSite);723        $this->assertSame('newSiteName', $measurable->getName());724        $this->assertSame('org.piwik.mobile2', $measurable->getSettingValue('app_id'));725    }726    public function test_updateSite_CorreclySavesExcludedUnknownUrlSettings()727    {728        $idSite = API::getInstance()->addSite("site1", array("http://piwik.net"));729        $site = API::getInstance()->getSiteFromId($idSite);730        $this->assertEquals(0, $site['exclude_unknown_urls']);731        API::getInstance()->updateSite($idSite, $siteName = null, $urls = null, $ecommerce = null, $siteSearch = null,732            $searchKeywordParams = null, $searchCategoryParams = null, $excludedIps = null, $excludedQueryParameters = null,733            $timzeone = null, $currency = null, $group = null, $startDate = null, $excludedUserAgents = null,734            $keepUrlFragments = null, $type = null, $settings = null, $excludeUnknownUrls = true);735        $site = API::getInstance()->getSiteFromId($idSite);736        $this->assertEquals(1, $site['exclude_unknown_urls']);737    }738    /**739     * @expectedException Exception740     * @expectedExceptionMessage SitesManager_ExceptionDeleteSite741     */742    public function test_delete_ShouldNotDeleteASiteInCaseThereIsOnlyOneSite()743    {744        $siteId1 = $this->_addSite();745        $this->assertHasSite($siteId1);746        try {747            API::getInstance()->deleteSite($siteId1);748            $this->fail('an expected exception was not raised');749        } catch (Exception $e) {750            $this->assertHasSite($siteId1);751            throw $e;752        }753    }754    /**755     * @expectedException Exception756     * @expectedExceptionMessage website id = 99999498 not found757     */758    public function test_delete_ShouldTriggerException_IfGivenSiteDoesNotExist()759    {760        API::getInstance()->deleteSite(99999498);761    }762    public function test_delete_ShouldActuallyRemoveAnExistingSiteButOnlyTheGivenSite()763    {764        $this->_addSite();765        $siteId1 = $this->_addSite();766        $siteId2 = $this->_addSite();767        $this->assertHasSite($siteId1);768        $this->assertHasSite($siteId2);769        API::getInstance()->deleteSite($siteId1);770        $this->assertHasNotSite($siteId1);771        $this->assertHasSite($siteId2);772    }773    public function test_delete_ShouldTriggerAnEventOnceSiteWasActuallyDeleted()774    {775        $called = 0;776        $deletedSiteId = null;777        Piwik::addAction('SitesManager.deleteSite.end', function ($param) use (&$called, &$deletedSiteId) {778            $called++;779            $deletedSiteId = $param;780        });781        $this->_addSite();782        $siteId1 = $this->_addSite();783        API::getInstance()->deleteSite($siteId1);784        $this->assertSame(1, $called);785        $this->assertSame($siteId1, $deletedSiteId);786    }787    private function assertHasSite($idSite)788    {789        $model = new Model();790        $siteInfo = $model->getSiteFromId($idSite);791        $this->assertNotEmpty($siteInfo);792    }793    private function assertHasNotSite($idSite)794    {795        $model = new Model();796        $siteInfo = $model->getSiteFromId($idSite);797        $this->assertEmpty($siteInfo);798    }799    public function testGetSitesGroups()800    {801        $groups = array('group1', ' group1 ', '', 'group2');802        $expectedGroups = array('group1', '', 'group2');803        foreach ($groups as $group) {804            API::getInstance()->addSite("test toto@{}", 'http://example.org', $ecommerce = 1, $siteSearch = null, $searchKeywordParameters = null, $searchCategoryParameters = null, $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group);805        }806        $this->assertEquals($expectedGroups, API::getInstance()->getSitesGroups());807    }808    public function getInvalidTimezoneData()809    {810        return array(811            array('UTC+15'),812            array('Paris'),813        );814    }815    /**816     *817     * @dataProvider getInvalidTimezoneData818     * @expectedException \Exception819     */820    public function test_addSite_WithInvalidTimezone_ThrowsException($timezone)821    {822        API::getInstance()->addSite("site1", array('http://example.org'), $ecommerce = 0,823            $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $ip = '', $params = '', $timezone);824    }825    /**826     * @expectedException \Exception827     */828    public function test_addSite_WithInvalidCurrency_ThrowsException()829    {830        $invalidCurrency = 'â¬';831        API::getInstance()->addSite("site1", array('http://example.org'), $ecommerce = 0,832            $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, '', 'UTC', $invalidCurrency);833    }834    public function test_setDefaultTimezone_AndCurrency_AndExcludedQueryParameters_AndExcludedIps_UpdatesDefaultsCorreclty()835    {836        // test that they return default values837        $defaultTimezone = API::getInstance()->getDefaultTimezone();838        $this->assertEquals('UTC', $defaultTimezone);839        $defaultCurrency = API::getInstance()->getDefaultCurrency();840        $this->assertEquals('USD', $defaultCurrency);841        $excludedIps = API::getInstance()->getExcludedIpsGlobal();842        $this->assertEquals('', $excludedIps);843        $excludedQueryParameters = API::getInstance()->getExcludedQueryParametersGlobal();844        $this->assertEquals('', $excludedQueryParameters);845        // test that when not specified, defaults are set as expected846        $idsite = API::getInstance()->addSite("site1", array('http://example.org'));847        $site = new Site($idsite);848        $this->assertEquals('UTC', $site->getTimezone());849        $this->assertEquals('USD', $site->getCurrency());850        $this->assertEquals('', $site->getExcludedQueryParameters());851        $this->assertEquals('', $site->getExcludedIps());852        $this->assertEquals(false, $site->isEcommerceEnabled());853        // set the global timezone and get it854        $newDefaultTimezone = 'UTC+5.5';855        API::getInstance()->setDefaultTimezone($newDefaultTimezone);856        $defaultTimezone = API::getInstance()->getDefaultTimezone();857        $this->assertEquals($newDefaultTimezone, $defaultTimezone);858        // set the default currency and get it859        $newDefaultCurrency = 'EUR';860        API::getInstance()->setDefaultCurrency($newDefaultCurrency);861        $defaultCurrency = API::getInstance()->getDefaultCurrency();862        $this->assertEquals($newDefaultCurrency, $defaultCurrency);863        // set the global IPs to exclude and get it864        $newGlobalExcludedIps = '1.1.1.*,1.1.*.*,150.1.1.1';865        API::getInstance()->setGlobalExcludedIps($newGlobalExcludedIps);866        $globalExcludedIps = API::getInstance()->getExcludedIpsGlobal();867        $this->assertEquals($newGlobalExcludedIps, $globalExcludedIps);868        // set the global URL query params to exclude and get it869        $newGlobalExcludedQueryParameters = 'PHPSESSID,blabla, TesT';870        // removed the space871        $expectedGlobalExcludedQueryParameters = 'PHPSESSID,blabla,TesT';872        API::getInstance()->setGlobalExcludedQueryParameters($newGlobalExcludedQueryParameters);873        $globalExcludedQueryParameters = API::getInstance()->getExcludedQueryParametersGlobal();874        $this->assertEquals($expectedGlobalExcludedQueryParameters, $globalExcludedQueryParameters);875        // create a website and check that default currency and default timezone are set876        // however, excluded IPs and excluded query Params are not returned877        $idsite = API::getInstance()->addSite("site1", array('http://example.org'), $ecommerce = 0,878            $siteSearch = 0, $searchKeywordParameters = 'test1,test2', $searchCategoryParameters = 'test2,test1',879            '', '', $newDefaultTimezone);880        $site = new Site($idsite);881        $this->assertEquals($newDefaultTimezone, $site->getTimezone());882        $this->assertEquals(date('Y-m-d'), $site->getCreationDate()->toString());883        $this->assertEquals($newDefaultCurrency, $site->getCurrency());884        $this->assertEquals('', $site->getExcludedIps());885        $this->assertEquals('', $site->getExcludedQueryParameters());886        $this->assertEquals('test1,test2', $site->getSearchKeywordParameters());887        $this->assertEquals('test2,test1', $site->getSearchCategoryParameters());888        $this->assertFalse($site->isSiteSearchEnabled());889        $this->assertFalse(Site::isSiteSearchEnabledFor($idsite));890        $this->assertFalse($site->isEcommerceEnabled());891        $this->assertFalse(Site::isEcommerceEnabledFor($idsite));892    }893    public function test_getSitesIdFromSiteUrl_AsSuperUser_ReturnsTheRequestedSiteIds()894    {895        API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com"));896        API::getInstance()->addSite("site2", array("http://piwik.com", "http://piwik.net"));897        API::getInstance()->addSite("site3", array("http://piwik.com", "http://piwik.org"));898        $idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.org');899        $this->assertTrue(count($idsites) == 1);900        $idsites = API::getInstance()->getSitesIdFromSiteUrl('http://www.piwik.org');901        $this->assertTrue(count($idsites) == 1);902        $idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.net');903        $this->assertTrue(count($idsites) == 2);904        $idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');905        $this->assertTrue(count($idsites) == 3);906    }907    public function test_getSitesIdFromSiteUrl_MatchesBothHttpAndHttpsUrls_AsSuperUser()908    {909        API::getInstance()->addSite("site1", array("https://piwik.org", "http://example.com", "fb://special-url"));910        $this->assert_getSitesIdFromSiteUrl_matchesBothHttpAndHttpsUrls();911    }912    public function test_getSitesIdFromSiteUrl_MatchesBothHttpAndHttpsUrls_AsUserWithViewPermission()913    {914        API::getInstance()->addSite("site1", array("https://piwik.org", "http://example.com", "fb://special-url"));915        APIUsersManager::getInstance()->addUser("user1", "geqgegagae", "tegst@tesgt.com", "alias");916        APIUsersManager::getInstance()->setUserAccess("user1", "view", array(1));917        // Make sure we're not Super user918        FakeAccess::$superUser = false;919        FakeAccess::$identity = 'user1';920        $this->assertFalse(Piwik::hasUserSuperUserAccess());921        $this->assert_getSitesIdFromSiteUrl_matchesBothHttpAndHttpsUrls();922    }923    private function assert_getSitesIdFromSiteUrl_matchesBothHttpAndHttpsUrls()924    {925        $idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.org');926        $this->assertTrue(count($idsites) == 1);927        $idsites = API::getInstance()->getSitesIdFromSiteUrl('piwik.org');928        $this->assertTrue(count($idsites) == 1);929        $idsites = API::getInstance()->getSitesIdFromSiteUrl('https://www.piwik.org');930        $this->assertTrue(count($idsites) == 1);931        $idsites = API::getInstance()->getSitesIdFromSiteUrl('https://example.com');932        $this->assertTrue(count($idsites) == 1);933        $idsites = API::getInstance()->getSitesIdFromSiteUrl("fb://special-url");934        $this->assertTrue(count($idsites) == 1);935        $idsites = API::getInstance()->getSitesIdFromSiteUrl('https://random-example.com');936        $this->assertTrue(count($idsites) == 0);937        $idsites = API::getInstance()->getSitesIdFromSiteUrl('not-found.piwik.org');938        $this->assertTrue(count($idsites) == 0);939        $idsites = API::getInstance()->getSitesIdFromSiteUrl('piwik.org/not-found/');940        $this->assertTrue(count($idsites) == 0);941    }942    public function test_getSitesIdFromSiteUrl_AsUser()943    {944        API::getInstance()->addSite("site1", array("http://www.piwik.net", "https://piwik.com"));945        API::getInstance()->addSite("site2", array("http://piwik.com", "http://piwik.net"));946        API::getInstance()->addSite("site3", array("http://piwik.com", "http://piwik.org"));947        APIUsersManager::getInstance()->addUser("user1", "geqgegagae", "tegst@tesgt.com", "alias");948        APIUsersManager::getInstance()->setUserAccess("user1", "view", array(1));949        APIUsersManager::getInstance()->addUser("user2", "geqgegagae", "tegst2@tesgt.com", "alias");950        APIUsersManager::getInstance()->setUserAccess("user2", "view", array(1));951        APIUsersManager::getInstance()->setUserAccess("user2", "admin", array(3));952        APIUsersManager::getInstance()->addUser("user3", "geqgegagae", "tegst3@tesgt.com", "alias");953        APIUsersManager::getInstance()->setUserAccess("user3", "view", array(1, 2));954        APIUsersManager::getInstance()->setUserAccess("user3", "admin", array(3));955        FakeAccess::$superUser = false;956        FakeAccess::$identity = 'user1';957        FakeAccess::setIdSitesView(array(1));958        FakeAccess::setIdSitesAdmin(array());959        $this->assertFalse(Piwik::hasUserSuperUserAccess());960        $idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');961        $this->assertEquals(1, count($idsites));962        // testing URL normalization963        $idsites = API::getInstance()->getSitesIdFromSiteUrl('http://www.piwik.com');964        $this->assertEquals(1, count($idsites));965        $idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.net');966        $this->assertEquals(1, count($idsites));967        FakeAccess::$superUser = false;968        FakeAccess::$identity = 'user2';969        FakeAccess::setIdSitesView(array(1));970        FakeAccess::setIdSitesAdmin(array(3));971        $idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');972        $this->assertEquals(2, count($idsites));973        FakeAccess::$superUser = false;974        FakeAccess::$identity = 'user3';975        FakeAccess::setIdSitesView(array(1, 2));976        FakeAccess::setIdSitesAdmin(array(3));977        $idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');978        $this->assertEquals(3, count($idsites));979        $idsites = API::getInstance()->getSitesIdFromSiteUrl('https://www.piwik.com');980        $this->assertEquals(3, count($idsites));981    }982    public function test_getSitesFromTimezones_ReturnsCorrectIdSites()983    {984        API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'UTC');985        $idsite2 = API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'Pacific/Auckland');986        $idsite3 = API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'Pacific/Auckland');987        $idsite4 = API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'UTC+10');988        $result = API::getInstance()->getSitesIdFromTimezones(array('UTC+10', 'Pacific/Auckland'));989        $this->assertEquals(array($idsite2, $idsite3, $idsite4), $result);990    }991    public function provideContainerConfig()992    {993        return array(994            'Piwik\Access' => new FakeAccess(),995            'Piwik\Plugins\MobileAppMeasurable\Type' => new Type()996        );997    }998}...MimeTypeTest.php
Source:MimeTypeTest.php  
...20    {21        $cwd = getcwd();22        chdir(__DIR__.'/../Fixtures');23        try {24            $this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess('-test'));25        } finally {26            chdir($cwd);27        }28    }29    public function testGuessImageWithoutExtension()30    {31        $this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test'));32    }33    public function testGuessImageWithDirectory()34    {35        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');36        MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/directory');37    }38    public function testGuessImageWithFileBinaryMimeTypeGuesser()39    {40        $guesser = MimeTypeGuesser::getInstance();41        $guesser->register(new FileBinaryMimeTypeGuesser());42        $this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test'));43    }44    public function testGuessImageWithKnownExtension()45    {46        $this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test.gif'));47    }48    public function testGuessFileWithUnknownExtension()49    {50        $this->assertEquals('application/octet-stream', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/.unknownextension'));51    }52    /**53     * @requires PHP 7.054     */55    public function testGuessWithDuplicatedFileType()56    {57        if ('application/zip' === MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test.docx')) {58            $this->addToAssertionCount(1);59            return;60        }61        $this->assertSame('application/vnd.openxmlformats-officedocument.wordprocessingml.document', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test.docx'));62    }63    public function testGuessWithIncorrectPath()64    {65        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');66        MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/not_here');67    }68    public function testGuessWithNonReadablePath()69    {70        if ('\\' === \DIRECTORY_SEPARATOR) {71            $this->markTestSkipped('Can not verify chmod operations on Windows');72        }73        if (!getenv('USER') || 'root' === getenv('USER')) {74            $this->markTestSkipped('This test will fail if run under superuser');75        }76        $path = __DIR__.'/../Fixtures/to_delete';77        touch($path);78        @chmod($path, 0333);79        if ('0333' == substr(sprintf('%o', fileperms($path)), -4)) {80            $this->expectException('Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException');81            MimeTypeGuesser::getInstance()->guess($path);82        } else {83            $this->markTestSkipped('Can not verify chmod operations, change of file permissions failed');84        }85    }86    public static function tearDownAfterClass()87    {88        $path = __DIR__.'/../Fixtures/to_delete';89        if (file_exists($path)) {90            @chmod($path, 0666);91            @unlink($path);92        }93    }94}...getInstance
Using AI Code Generation
1$obj1 = with::getInstance();2$obj2 = with::getInstance();3$obj3 = with::getInstance();4$obj4 = with::getInstance();5$obj5 = with::getInstance();6$obj6 = with::getInstance();7$obj7 = with::getInstance();8$obj8 = with::getInstance();9$obj9 = with::getInstance();10$obj10 = with::getInstance();11$obj11 = with::getInstance();12$obj1->setVar1(1);13$obj2->setVar1(2);14$obj3->setVar1(3);15$obj4->setVar1(4);16$obj5->setVar1(5);17$obj6->setVar1(6);18$obj7->setVar1(7);19$obj8->setVar1(8);20$obj9->setVar1(9);21$obj10->setVar1(10);22$obj11->setVar1(11);23$obj1->getvar1();24$obj2->getvar1();25$obj3->getvar1();26$obj4->getvar1();27$obj5->getvar1();28$obj6->getvar1();29$obj7->getvar1();30$obj8->getvar1();31$obj9->getvar1();32$obj10->getvar1();33$obj11->getvar1();getInstance
Using AI Code Generation
1$object = with::getInstance();2$object->hello();3$object = with::getInstance();4$object->hello();5$object = with::getInstance();6$object->hello();7$object = with::getInstance();8$object->hello();9$object = with::getInstance();10$object->hello();11$object = with::getInstance();12$object->hello();13$object = with::getInstance();14$object->hello();15$object = with::getInstance();16$object->hello();17$object = with::getInstance();18$object->hello();19$object = with::getInstance();20$object->hello();21$object = with::getInstance();22$object->hello();23$object = with::getInstance();24$object->hello();25$object = with::getInstance();26$object->hello();27$object = with::getInstance();28$object->hello();29$object = with::getInstance();30$object->hello();31$object = with::getInstance();32$object->hello();33$object = with::getInstance();34$object->hello();getInstance
Using AI Code Generation
1$with = new with();2$with->getInstance();3$with = new with();4$with->getInstance();5$with = new with();6$with->getInstance();7$with = new with();8$with->getInstance();9$with = new with();10$with->getInstance();11$with = new with();12$with->getInstance();13$with = new with();14$with->getInstance();15$with = new with();16$with->getInstance();17$with = new with();18$with->getInstance();19$with = new with();20$with->getInstance();21$with = new with();22$with->getInstance();23$with = new with();24$with->getInstance();25$with = new with();26$with->getInstance();27$with = new with();28$with->getInstance();29$with = new with();30$with->getInstance();31$with = new with();32$with->getInstance();33$with = new with();34$with->getInstance();35$with = new with();36$with->getInstance();getInstance
Using AI Code Generation
1$object = with::getInstance();2$object->printData();3$object = with::getInstance();4$object->printData();5$object = with::getInstance();6$object->printData();7$object = with::getInstance();8$object->printData();9$object = with::getInstance();10$object->printData();11$object = with::getInstance();12$object->printData();13$object = with::getInstance();14$object->printData();15$object = with::getInstance();16$object->printData();17$object = with::getInstance();18$object->printData();19$object = with::getInstance();20$object->printData();21$object = with::getInstance();22$object->printData();23$object = with::getInstance();24$object->printData();25$object = with::getInstance();26$object->printData();27$object = with::getInstance();28$object->printData();29$object = with::getInstance();30$object->printData();31$object = with::getInstance();32$object->printData();33$object = with::getInstance();34$object->printData();getInstance
Using AI Code Generation
1$obj = Singleton::getInstance();2$obj1 = Singleton::getInstance();3$obj2 = Singleton::getInstance();4$obj3 = Singleton::getInstance();5$obj4 = Singleton::getInstance();6$obj5 = Singleton::getInstance();7$obj6 = Singleton::getInstance();8$obj7 = Singleton::getInstance();9$obj8 = Singleton::getInstance();10$obj9 = Singleton::getInstance();11$obj10 = Singleton::getInstance();12$obj11 = Singleton::getInstance();13$obj12 = Singleton::getInstance();14$obj13 = Singleton::getInstance();15$obj14 = Singleton::getInstance();16$obj15 = Singleton::getInstance();17$obj16 = Singleton::getInstance();18$obj17 = Singleton::getInstance();19$obj18 = Singleton::getInstance();20$obj19 = Singleton::getInstance();21$obj20 = Singleton::getInstance();22$obj21 = Singleton::getInstance();23$obj22 = Singleton::getInstance();24$obj23 = Singleton::getInstance();getInstance
Using AI Code Generation
1$with = with::getInstance();2$with->setVar('name', 'with');3echo $with->getVar('name');4$with = with::getInstance();5echo $with->getVar('name');6$with = with::getInstance();7echo $with->getVar('name');8$with = with::getInstance();9echo $with->getVar('name');Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Execute automation tests with getInstance on a cloud-based Grid of 3000+ real browsers and operating systems for both web and mobile applications.
Test now for FreeGet 100 minutes of automation test minutes FREE!!
