1ba9015b0SKlap-in<?php 2ba9015b0SKlap-in 3ba9015b0SKlap-in/** 4ba9015b0SKlap-in * @group internet 5ba9015b0SKlap-in */ 6ba9015b0SKlap-inclass fetch_statuscodes_external_test extends DokuWikiTest { 7ba9015b0SKlap-in 8ba9015b0SKlap-in private $media = 'http://www.google.com/images/srpr/logo3w.png'; //used in media_get_from_url test too 9ba9015b0SKlap-in private $width = 200; 10ba9015b0SKlap-in private $height = 0; 11ba9015b0SKlap-in 12*1c33cec3SAndreas Gohr function setUp() : void { 13ba9015b0SKlap-in 14ba9015b0SKlap-in header('X-Test: check headers working'); 15ba9015b0SKlap-in $header_check = function_exists('xdebug_get_headers') ? xdebug_get_headers() : headers_list(); 16ba9015b0SKlap-in if(empty($header_check)) { 17ba9015b0SKlap-in $this->markTestSkipped('headers not returned, perhaps your sapi does not return headers, try xdebug'); 18ba9015b0SKlap-in } else { 19ba9015b0SKlap-in header_remove('X-Test'); 20ba9015b0SKlap-in } 21ba9015b0SKlap-in 22ba9015b0SKlap-in parent::setUp(); 23ba9015b0SKlap-in 24ba9015b0SKlap-in global $conf; 25ba9015b0SKlap-in $conf['fetchsize'] = 500 * 1024; //500kb 26ba9015b0SKlap-in $conf['xsendfile'] = 0; 27ba9015b0SKlap-in 28ba9015b0SKlap-in global $MIME, $EXT, $CACHE, $INPUT; // variables fetch creates in global scope -- should this be in fetch? 29ba9015b0SKlap-in } 30ba9015b0SKlap-in 314002c084SKlap-in function getUri() { 32ba9015b0SKlap-in $w = $this->width ? 'w='.$this->width.'&' : ''; 33ba9015b0SKlap-in $h = $this->height ? 'h='.$this->height.'&' : ''; 344002c084SKlap-in return '/lib/exe/fetch.php?'.$w.$h.'{%token%}media='.rawurlencode($this->media); 35ba9015b0SKlap-in } 36ba9015b0SKlap-in 374002c084SKlap-in function fetchResponse($token) { 38ba9015b0SKlap-in $request = new TestRequest(); 394002c084SKlap-in return $request->get(array(), str_replace('{%token%}', $token, $this->getUri())); 40ba9015b0SKlap-in } 41ba9015b0SKlap-in 42ba9015b0SKlap-in /** 43ba9015b0SKlap-in * modified image request with valid token 444002c084SKlap-in * and not-modified image request with valid token 454002c084SKlap-in * 46ba9015b0SKlap-in * expect: header with mime-type 47ba9015b0SKlap-in * expect: content 48ba9015b0SKlap-in * expect: no error response 49ba9015b0SKlap-in */ 50ba9015b0SKlap-in function test_valid_token() { 514002c084SKlap-in $valid_token_resize = 'tok='.media_get_token($this->media, $this->width, $this->height).'&'; 52ba9015b0SKlap-in 534002c084SKlap-in $this->handlevalidresponse($valid_token_resize); 544002c084SKlap-in 554002c084SKlap-in //original size 564002c084SKlap-in $this->width = $this->height = 0; 574002c084SKlap-in $valid_token_original = 'tok='.media_get_token($this->media, $this->width, $this->height).'&'; 584002c084SKlap-in 594002c084SKlap-in $this->handlevalidresponse($valid_token_original); 604002c084SKlap-in 614002c084SKlap-in } 624002c084SKlap-in 634002c084SKlap-in /** 644002c084SKlap-in * Performs asserts for valid request 654002c084SKlap-in * 664002c084SKlap-in * @param $valid_token 674002c084SKlap-in */ 684002c084SKlap-in private function handlevalidresponse($valid_token){ 69ba9015b0SKlap-in $response = $this->fetchResponse($valid_token); 70ba9015b0SKlap-in $this->assertTrue((bool) $response->getHeader('Content-Type')); 71ba9015b0SKlap-in $this->assertTrue((bool) ($response->getContent())); 72ba9015b0SKlap-in 73ba9015b0SKlap-in $status_code = $response->getStatusCode(); 74ba9015b0SKlap-in $this->assertTrue(is_null($status_code) || (200 == $status_code)); 75ba9015b0SKlap-in } 76ba9015b0SKlap-in 77ba9015b0SKlap-in /** 78ba9015b0SKlap-in * modified image request with invalid token 79ba9015b0SKlap-in * expect: 412 status code 80ba9015b0SKlap-in */ 81ba9015b0SKlap-in function test_invalid_token() { 824002c084SKlap-in $invalid_tokens = array( 834002c084SKlap-in 'invalid_token_wrongid' => media_get_token('junk', 200, 100), 844002c084SKlap-in 'invalid_token_wrongh' => media_get_token($this->media, 200, 10), 854002c084SKlap-in 'invalid_token_wrongw' => media_get_token($this->media, 20, 100), 864002c084SKlap-in 'invalid_token_wrongwh' => media_get_token($this->media, 20, 10) 874002c084SKlap-in ); 884002c084SKlap-in foreach($invalid_tokens as $invalid_token) 894002c084SKlap-in $this->assertEquals(412, $this->fetchResponse('tok='.$invalid_token.'&')->getStatusCode()); 904002c084SKlap-in 91ba9015b0SKlap-in } 92ba9015b0SKlap-in 93ba9015b0SKlap-in /** 94ba9015b0SKlap-in * modified image request with no token 954002c084SKlap-in * and not modified image with no token 96ba9015b0SKlap-in * expect: 412 status code 97ba9015b0SKlap-in */ 98ba9015b0SKlap-in function test_missing_token() { 99ba9015b0SKlap-in $no_token = ''; 1004002c084SKlap-in 1014002c084SKlap-in $this->assertEquals(412, $this->fetchResponse($no_token)->getStatusCode()); 1024002c084SKlap-in 1034002c084SKlap-in $this->width = $this->height = 0; 104ba9015b0SKlap-in $this->assertEquals(412, $this->fetchResponse($no_token)->getStatusCode()); 105ba9015b0SKlap-in } 106ba9015b0SKlap-in} 107ba9015b0SKlap-in//Setup VIM: ex: et ts=4 : 108