1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
<?php
/**
* This php file is used to unit test Piwik::serveStaticFile()
* To make a comprehensive test suit for Piwik::serveStaticFile() (ie. being able to test combinations of request
* headers, being able to test response headers and so on) we need to simulate static file requests in a controlled
* environment
* The php code which simulates requests using Piwik::serveStaticFile() is provided in the same file (ie. this one)
* as the unit testing code for Piwik::serveStaticFile()
* This decision has a structural impact on the usual unit test file structure
* serveStaticFile.test.php has been created to avoid making too many modifications to /tests/core/Piwik.test.php
*/
use Piwik\Core\Piwik;
use Piwik\Core\Common;
define('PIWIK_DOCUMENT_ROOT', dirname(__FILE__).'/../../');
if(file_exists(PIWIK_DOCUMENT_ROOT . '/bootstrap.php'))
{
require_once PIWIK_DOCUMENT_ROOT . '/bootstrap.php';
}
error_reporting(E_ALL|E_NOTICE);
@ini_set('display_errors', defined('PIWIK_DISPLAY_ERRORS') ? PIWIK_DISPLAY_ERRORS : @ini_get('display_errors'));
@ini_set('xdebug.show_exception_trace', 0);
@ini_set('magic_quotes_runtime', 0);
if(!defined('PIWIK_USER_PATH'))
{
define('PIWIK_USER_PATH', PIWIK_DOCUMENT_ROOT);
}
if(!defined('PIWIK_INCLUDE_PATH'))
{
define('PIWIK_INCLUDE_PATH', PIWIK_DOCUMENT_ROOT);
}
require_once PIWIK_INCLUDE_PATH . '/libs/upgradephp/upgrade.php';
require_once PIWIK_INCLUDE_PATH . '/core/testMinimumPhpVersion.php';
// NOTE: the code above this comment must be PHP4 compatible
session_cache_limiter('nocache');
@date_default_timezone_set('UTC');
require_once PIWIK_INCLUDE_PATH .'/core/Loader.php';
// This is Piwik logo, the static file used in this test suit
define("TEST_FILE_LOCATION", dirname(__FILE__) . "/lipsum.txt");
define("TEST_FILE_CONTENT_TYPE", "text/plain");
// Defines http request parameters
define("FILE_MODE_REQUEST_VAR", "fileMode");
define("SRV_MODE_REQUEST_VAR", "serverMode");
define("ZLIB_OUTPUT_REQUEST_VAR", "zlibOutput");
// These constants define which action will be performed by the static server.
define("NULL_FILE_SRV_MODE", "nullFile");
define("GHOST_FILE_SRV_MODE", "ghostFile");
define("TEST_FILE_SRV_MODE", "testFile");
/**
* If the static file server has been requested, the response sent back to the browser will be the content produced by
* the execution of Piwik:serveStaticFile(). In this case, unit tests won't be executed
*/
// Getting the server mode
$staticFileServerMode = Common::getRequestVar(SRV_MODE_REQUEST_VAR, "");
// Setting zlib output compression as requested
ini_set('zlib.output_compression', Common::getRequestVar(ZLIB_OUTPUT_REQUEST_VAR, '0'));
if ($staticFileServerMode === "") {
throw new Exception("When this testing file is used as a static file server, the request parameter " .
SRV_MODE_REQUEST_VAR . " must be provided.");
}
switch ($staticFileServerMode) {
// The static file server calls Piwik::serveStaticFile with a null file
case NULL_FILE_SRV_MODE:
Piwik::serveStaticFile(null, TEST_FILE_CONTENT_TYPE);
break;
// The static file server calls Piwik::serveStaticFile with a non-existing file
case GHOST_FILE_SRV_MODE:
Piwik::serveStaticFile(TEST_FILE_LOCATION . ".ghost", TEST_FILE_CONTENT_TYPE);
break;
// The static file server calls Piwik::serveStaticFile with the test file
case TEST_FILE_SRV_MODE:
Piwik::serveStaticFile(TEST_FILE_LOCATION, TEST_FILE_CONTENT_TYPE);
break;
}
|