forked from moodle/moodle
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDL-52214 core: Fix the is_web_crawler() regression
In MDL-50891, the is_web_crawler() was refactored into a core_useragent method and the function itself was deprecated. However, there were no unit tests kept to check the backwards compatible behaviour. It turned out that the deprecated function leads to PHP fatal error due to a typo. This patch fixes the typo and brings back the previous unit tests. To be able to explicitly check the raised debugging message, the test case now must be subclass of advanced_testcase. Additionally fixes missing info about the function being deprecated.
- Loading branch information
Showing
3 changed files
with
61 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -29,7 +29,7 @@ | |
* @copyright 2013 Sam Hemelryk | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
class core_useragent_testcase extends basic_testcase { | ||
class core_useragent_testcase extends advanced_testcase { | ||
|
||
/** | ||
* Restores the user agent to the default one. | ||
|
@@ -1865,4 +1865,61 @@ public function test_useragent_web_crawler($useragent, $tests) { | |
$expectation = isset($tests['is_web_crawler']) ? $tests['is_web_crawler'] : false; | ||
$this->assertSame($expectation, core_useragent::is_web_crawler()); | ||
} | ||
|
||
/** | ||
* Regression tests for the deprecated is_web_crawler() function | ||
*/ | ||
public function test_deprecated_is_web_crawler() { | ||
|
||
$browsers = array( | ||
'Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))', | ||
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:18.0) Gecko/18.0 Firefox/18.0', | ||
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412 (KHTML, like Gecko) Safari/412', | ||
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10', | ||
'Opera/9.0 (Windows NT 5.1; U; en)', | ||
'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 –Nexus', | ||
'Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5', | ||
); | ||
$crawlers = array( | ||
// Google. | ||
'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', | ||
'Googlebot/2.1 (+http://www.googlebot.com/bot.html)', | ||
'Googlebot-Image/1.0', | ||
// Yahoo. | ||
'Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)', | ||
// Bing. | ||
'Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)', | ||
'Mozilla/5.0 (compatible; bingbot/2.0 +http://www.bing.com/bingbot.htm)', | ||
// MSN. | ||
'msnbot/2.1', | ||
// Yandex. | ||
'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)', | ||
'Mozilla/5.0 (compatible; YandexImages/3.0; +http://yandex.com/bots)', | ||
// AltaVista. | ||
'AltaVista V2.0B [email protected]', | ||
// ZoomSpider. | ||
'ZoomSpider - wrensoft.com [ZSEBOT]', | ||
// Baidu. | ||
'Baiduspider+(+http://www.baidu.com/search/spider_jp.html)', | ||
'Baiduspider+(+http://www.baidu.com/search/spider.htm)', | ||
'BaiDuSpider', | ||
// Ask.com. | ||
'User-Agent: Mozilla/2.0 (compatible; Ask Jeeves/Teoma)', | ||
); | ||
|
||
foreach ($browsers as $agent) { | ||
core_useragent::instance(true, $agent); | ||
$this->assertSame($agent, core_useragent::get_user_agent_string()); | ||
$this->assertFalse(is_web_crawler()); | ||
$this->assertDebuggingCalled('is_web_crawler() has been deprecated, please use core_useragent::is_web_crawler() instead.', | ||
DEBUG_DEVELOPER); | ||
} | ||
foreach ($crawlers as $agent) { | ||
core_useragent::instance(true, $agent); | ||
$this->assertSame($agent, core_useragent::get_user_agent_string()); | ||
$this->assertTrue(is_web_crawler(), "$agent should be considered a search engine"); | ||
$this->assertDebuggingCalled('is_web_crawler() has been deprecated, please use core_useragent::is_web_crawler() instead.', | ||
DEBUG_DEVELOPER); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters