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 12ba9015b0SKlap-in function setUp() { 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 31*4002c084SKlap-in function getUri() { 32ba9015b0SKlap-in $w = $this->width ? 'w='.$this->width.'&' : ''; 33ba9015b0SKlap-in $h = $this->height ? 'h='.$this->height.'&' : ''; 34*4002c084SKlap-in return '/lib/exe/fetch.php?'.$w.$h.'{%token%}media='.rawurlencode($this->media); 35ba9015b0SKlap-in } 36ba9015b0SKlap-in 37*4002c084SKlap-in function fetchResponse($token) { 38ba9015b0SKlap-in $request = new TestRequest(); 39*4002c084SKlap-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 44*4002c084SKlap-in * and not-modified image request with valid token 45*4002c084SKlap-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() { 51*4002c084SKlap-in $valid_token_resize = 'tok='.media_get_token($this->media, $this->width, $this->height).'&'; 52ba9015b0SKlap-in 53*4002c084SKlap-in $this->handlevalidresponse($valid_token_resize); 54*4002c084SKlap-in 55*4002c084SKlap-in //original size 56*4002c084SKlap-in $this->width = $this->height = 0; 57*4002c084SKlap-in $valid_token_original = 'tok='.media_get_token($this->media, $this->width, $this->height).'&'; 58*4002c084SKlap-in 59*4002c084SKlap-in $this->handlevalidresponse($valid_token_original); 60*4002c084SKlap-in 61*4002c084SKlap-in } 62*4002c084SKlap-in 63*4002c084SKlap-in /** 64*4002c084SKlap-in * Performs asserts for valid request 65*4002c084SKlap-in * 66*4002c084SKlap-in * @param $valid_token 67*4002c084SKlap-in */ 68*4002c084SKlap-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() { 82*4002c084SKlap-in $invalid_tokens = array( 83*4002c084SKlap-in 'invalid_token_wrongid' => media_get_token('junk', 200, 100), 84*4002c084SKlap-in 'invalid_token_wrongh' => media_get_token($this->media, 200, 10), 85*4002c084SKlap-in 'invalid_token_wrongw' => media_get_token($this->media, 20, 100), 86*4002c084SKlap-in 'invalid_token_wrongwh' => media_get_token($this->media, 20, 10) 87*4002c084SKlap-in ); 88*4002c084SKlap-in foreach($invalid_tokens as $invalid_token) 89*4002c084SKlap-in $this->assertEquals(412, $this->fetchResponse('tok='.$invalid_token.'&')->getStatusCode()); 90*4002c084SKlap-in 91ba9015b0SKlap-in } 92ba9015b0SKlap-in 93ba9015b0SKlap-in /** 94ba9015b0SKlap-in * modified image request with no token 95*4002c084SKlap-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 = ''; 100*4002c084SKlap-in 101*4002c084SKlap-in $this->assertEquals(412, $this->fetchResponse($no_token)->getStatusCode()); 102*4002c084SKlap-in 103*4002c084SKlap-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