MediaWikiBagOStuff -> SqlBagOStuff in comment, both are the same since r55079
[mediawiki.git] / tests / HttpTest.php
blobf79bbeb22b488fbb7ab61bbecbea59d24c0beea1
1 <?php
3 class HttpTest extends PHPUnit_Framework_TestCase {
4 static $content;
5 static $headers;
6 var $test_geturl = array( "http://www.example.com/",
7 "http://pecl.php.net/feeds/pkg_apc.rss",
8 "http://toolserver.org/~jan/poll/dev/main.php?page=wiki_output&id=3",
9 "http://meta.wikimedia.org/w/index.php?title=Interwiki_map&action=raw",
10 "http://www.mediawiki.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:MediaWiki_hooks&cmlimit=500&format=php",
12 var $test_requesturl = array( "http://en.wikipedia.org/wiki/Special:Export/User:MarkAHershberger/Weekly_reports/2010-W01" );
14 var $test_posturl = array( "http://www.comp.leeds.ac.uk/cgi-bin/Perl/environment-example" => "review=test" );
16 function setup() {
17 if ( is_array( self::$content ) ) {
18 return;
20 $content = tempnam( sys_get_temp_dir(), "" );
21 $headers = tempnam( sys_get_temp_dir(), "" );
22 if ( !$content && !$headers ) {
23 die( "Couldn't create temp file!" );
26 /* Maybe use wget instead of curl here ... just to use a different codebase? */
27 foreach ( $this->test_geturl as $u ) {
28 system( "curl -0 -s -D $headers '$u' -o $content" );
29 self::$content["GET $u"] = file_get_contents( $content );
30 self::$headers["GET $u"] = file_get_contents( $headers );
32 foreach ( $this->test_requesturl as $u ) {
33 system( "curl -0 -s -X POST -H 'Content-Length: 0' -D $headers '$u' -o $content" );
34 self::$content["POST $u"] = file_get_contents( $content );
35 self::$headers["POST $u"] = file_get_contents( $headers );
37 foreach ( $this->test_posturl as $u => $postdata ) {
38 system( "curl -0 -s -X POST -d '$postdata' -D $headers '$u' -o $content" );
39 self::$content["POST $u => $postdata"] = file_get_contents( $content );
40 self::$headers["POST $u => $postdata"] = file_get_contents( $headers );
42 unlink( $content );
43 unlink( $headers );
46 /* ./phase3/includes/Import.php:1108: $data = Http::request( $method, $url ); */
47 /* ./includes/Import.php:1124: $link = Title::newFromText( "$interwiki:Special:Export/$page" ); */
48 /* ./includes/Import.php:1134: return ImportStreamSource::newFromURL( $url, "POST" ); */
49 function runHTTPRequests() {
50 global $wgForceHTTPEngine;
52 /* no postdata here because the only request I could find in code so far didn't have any */
53 foreach ( $this->test_requesturl as $u ) {
54 $r = Http::request( "POST", $u );
55 $this->assertEquals( self::$content["POST $u"], $r, "POST $u with $wgForceHTTPEngine" );
59 function testRequestPHP() {
60 global $wgForceHTTPEngine;
62 $wgForceHTTPEngine = "php";
63 self::runHTTPRequests();
66 function testRequestCurl() {
67 global $wgForceHTTPEngine;
69 $wgForceHTTPEngine = "curl";
70 self::runHTTPRequests();
73 /* ./extensions/SpamBlacklist/SpamBlacklist_body.php:164: $httpText = Http::get( $fileName ); */
74 /* ./extensions/ApiSVGProxy/ApiSVGProxy.body.php:44: $contents = Http::get( $file->getFullUrl() ); */
75 /* ./extensions/BookInformation/drivers/IsbnDb.php:24: if( ( $xml = Http::get( $uri ) ) !== false ) { */
76 /* ./extensions/BookInformation/drivers/Amazon.php:23: if( ( $xml = Http::get( $uri ) ) !== false ) { */
77 /* ./extensions/TitleBlacklist/TitleBlacklist.list.php:217: $result = Http::get( $url ); */
78 /* ./extensions/TSPoll/TSPoll.php:68: $get_server = Http::get( 'http://toolserver.org/~jan/poll/dev/main.php?page=wiki_output&id='.$id ); */
79 /* ./extensions/TSPoll/TSPoll.php:70: $get_server = Http::get( 'http://toolserver.org/~jan/poll/main.php?page=wiki_output&id='.$id ); */
80 /* ./extensions/DoubleWiki/DoubleWiki.php:56: $translation = Http::get( $url.$sep.'action=render' ); */
81 /* ./extensions/ExternalPages/ExternalPages_body.php:177: $serializedText = Http::get( $this->mPageURL ); */
82 /* ./extensions/Translate/utils/TranslationHelpers.php:143: $suggestions = Http::get( $url, $timeout ); */
83 /* ./extensions/Translate/SpecialImportTranslations.php:169: $filedata = Http::get( $url ); ; */
84 /* ./extensions/Translate/TranslateEditAddons.php:338: $suggestions = Http::get( $url, $timeout ); */
85 /* ./extensions/SecurePoll/includes/user/Auth.php:283: $value = Http::get( $url, 20, $curlParams ); */
86 /* ./extensions/DumpHTML/dumpHTML.inc:778: $contents = Http::get( $url ); */
87 /* ./extensions/DumpHTML/dumpHTML.inc:1298: $contents = Http::get( $sourceUrl ); */
88 /* ./extensions/DumpHTML/dumpHTML.inc:1373: $contents = Http::get( $sourceUrl ); */
89 /* ./phase3/maintenance/rebuildInterwiki.inc:101: $intermap = Http::get( 'http://meta.wikimedia.org/w/index.php?title=Interwiki_map&action=raw', 30 ); */
90 /* ./phase3/maintenance/findhooks.php:98: $allhookdata = Http::get( 'http://www.mediawiki.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:MediaWiki_hooks&cmlimit=500&format=php' ); */
91 /* ./phase3/maintenance/findhooks.php:109: $oldhookdata = Http::get( 'http://www.mediawiki.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Removed_hooks&cmlimit=500&format=php' ); */
92 /* ./phase3/maintenance/dumpInterwiki.inc:95: $intermap = Http::get( 'http://meta.wikimedia.org/w/index.php?title=Interwiki_map&action=raw', 30 ); */
93 /* ./phase3/includes/parser/Parser.php:3204: $text = Http::get($url); */
94 /* ./phase3/includes/filerepo/ForeignAPIRepo.php:131: $data = Http::get( $url ); */
95 /* ./phase3/includes/filerepo/ForeignAPIRepo.php:205: $thumb = Http::get( $foreignUrl ); */
96 /* ./phase3/includes/filerepo/File.php:1105: $res = Http::get( $renderUrl ); */
97 /* ./phase3/includes/GlobalFunctions.php:2760: * @deprecated Use Http::get() instead */
98 /* ./phase3/includes/GlobalFunctions.php:2764: return Http::get( $url ); */
99 /* ./phase3/includes/ExternalStoreHttp.php:18: $ret = Http::get( $url ); */
100 /* ./phase3/includes/Import.php:357: $data = Http::get( $src ); */
101 /* ./extensions/ExternalData/ED_Utils.php:291: return Http::get( $url, 'default', array(CURLOPT_SSL_VERIFYPEER => false) ); */
102 /* ./extensions/ExternalData/ED_Utils.php:293: return Http::get( $url ); */
103 /* ./extensions/ExternalData/ED_Utils.php:306: $page = Http::get( $url, 'default', array(CURLOPT_SSL_VERIFYPEER => false) ); */
104 /* ./extensions/ExternalData/ED_Utils.php:308: $page = Http::get( $url ); */
105 /* ./extensions/CodeReview/backend/Subversion.php:320: $blob = Http::get( $target, $this->mTimeout ); */
106 /* ./extensions/AmazonPlus/AmazonPlus.php:214: $this->response = Http::get( $urlstr ); */
107 /* ./extensions/StaticWiki/StaticWiki.php:24: $text = Http::get( $url ) ; */
108 /* ./extensions/StaticWiki/StaticWiki.php:64: $history = Http::get ( $wgStaticWikiExternalSite . "index.php?title=" . urlencode ( $url_title ) . "&action=history" ) ; */
109 /* ./extensions/Configure/scripts/findSettings.php:126: $cont = Http::get( "http://www.mediawiki.org/w/index.php?title={$page}&action=raw" ); */
110 /* ./extensions/TorBlock/TorBlock.class.php:148: $data = Http::get( $url ); */
111 /* ./extensions/HoneypotIntegration/HoneypotIntegration.class.php:60: $data = Http::get( $wgHoneypotURLSource, 'default', */
112 /* ./extensions/SemanticForms/includes/SF_Utils.inc:378: $page_contents = Http::get($url); */
113 /* ./extensions/LocalisationUpdate/LocalisationUpdate.class.php:172: $basefilecontents = Http::get( $basefile ); */
114 /* ./extensions/APC/SpecialAPC.php:245: $rss = Http::get( 'http://pecl.php.net/feeds/pkg_apc.rss' ); */
115 /* ./extensions/Interlanguage/Interlanguage.php:56: $a = Http::get( $url ); */
116 /* ./extensions/MWSearch/MWSearch_body.php:492: $data = Http::get( $searchUrl, $wgLuceneSearchTimeout, $httpOpts); */
117 function runHTTPGets() {
118 global $wgForceHTTPEngine;
120 foreach ( $this->test_geturl as $u ) {
121 $r = Http::get( $u );
122 $this->assertEquals( self::$content["GET $u"], $r, "Get $u with $wgForceHTTPEngine" );
126 function testGetPHP() {
127 global $wgForceHTTPEngine;
129 $wgForceHTTPEngine = "php";
130 self::runHTTPGets();
133 function testGetCurl() {
134 global $wgForceHTTPEngine;
136 $wgForceHTTPEngine = "curl";
137 self::runHTTPGets();
140 /* ./phase3/maintenance/parserTests.inc:1618: return Http::post( $url, array( 'postdata' => wfArrayToCGI( $data ) ) ); */
141 function runHTTPPosts() {
142 global $wgForceHTTPEngine;
144 foreach ( $this->test_posturl as $u => $postdata ) {
145 $r = Http::post( $u, array( "postdata" => $postdata ) );
146 $this->assertEquals( self::$content["POST $u => $postdata"], $r, "POST $u (postdata=$postdata) with $wgForceHTTPEngine" );
150 function testPostPHP() {
151 global $wgForceHTTPEngine;
153 $wgForceHTTPEngine = "php";
154 self::runHTTPPosts();
157 function testPostCurl() {
158 global $wgForceHTTPEngine;
160 $wgForceHTTPEngine = "curl";
161 self::runHTTPPosts();
164 function testDoDownload() {
167 function testStartBackgroundDownload() {
170 function testGetUploadSessionKey() {
173 function testDoSessionIdDownload() {
176 function testIsLocalURL() {
179 /* ./extensions/DonationInterface/payflowpro_gateway/payflowpro_gateway.body.php:559: $user_agent = Http::userAgent(); */
180 function testUserAgent() {
183 function testIsValidURI() {