diff options
| author | jvoisin | 2019-01-14 19:29:25 +0000 |
|---|---|---|
| committer | GitHub | 2019-01-14 19:29:25 +0000 |
| commit | e79f7e3bd992c7f0915ef9afe7afb6d79740527a (patch) | |
| tree | f881c25694eb00da2331a9ab280ec1c24a5662ab /src/tests/upload_validation | |
| parent | c943db586ac46b686b49bdf61d8473e39dd93000 (diff) | |
Reorganize the testsuite
Splitting the testsuite in several components makes it easier to manage and comprehend.
This was also needed some some tests aren't passing on Alpine Linux, but we still want to run
as many of them as we can on this platform.
Diffstat (limited to 'src/tests/upload_validation')
16 files changed, 170 insertions, 0 deletions
diff --git a/src/tests/upload_validation/config/upload_validation.ini b/src/tests/upload_validation/config/upload_validation.ini new file mode 100644 index 0000000..0646134 --- /dev/null +++ b/src/tests/upload_validation/config/upload_validation.ini | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | sp.upload_validation.script("tests/upload_ko.sh"); | ||
| 2 | sp.upload_validation.enable(); | ||
diff --git a/src/tests/upload_validation/config/upload_validation_invalid.ini b/src/tests/upload_validation/config/upload_validation_invalid.ini new file mode 100644 index 0000000..7a638a1 --- /dev/null +++ b/src/tests/upload_validation/config/upload_validation_invalid.ini | |||
| @@ -0,0 +1 @@ | |||
| sp.upload_validation.script("./tests/data/upload_invalid.sh").enable(); | |||
diff --git a/src/tests/upload_validation/config/upload_validation_ko.ini b/src/tests/upload_validation/config/upload_validation_ko.ini new file mode 100644 index 0000000..b15977f --- /dev/null +++ b/src/tests/upload_validation/config/upload_validation_ko.ini | |||
| @@ -0,0 +1 @@ | |||
| sp.upload_validation.script("./tests/data/upload_ko.sh").enable(); | |||
diff --git a/src/tests/upload_validation/config/upload_validation_ko_simulation.ini b/src/tests/upload_validation/config/upload_validation_ko_simulation.ini new file mode 100644 index 0000000..da56439 --- /dev/null +++ b/src/tests/upload_validation/config/upload_validation_ko_simulation.ini | |||
| @@ -0,0 +1 @@ | |||
| sp.upload_validation.script("./tests/data/upload_ko.sh").enable().simulation(); | |||
diff --git a/src/tests/upload_validation/config/upload_validation_no_exist.ini b/src/tests/upload_validation/config/upload_validation_no_exist.ini new file mode 100644 index 0000000..24f81a5 --- /dev/null +++ b/src/tests/upload_validation/config/upload_validation_no_exist.ini | |||
| @@ -0,0 +1 @@ | |||
| sp.upload_validation.script("fufufufufu").enable(); | |||
diff --git a/src/tests/upload_validation/config/upload_validation_non_exec.ini b/src/tests/upload_validation/config/upload_validation_non_exec.ini new file mode 100644 index 0000000..bdf0a57 --- /dev/null +++ b/src/tests/upload_validation/config/upload_validation_non_exec.ini | |||
| @@ -0,0 +1 @@ | |||
| sp.upload_validation.script("tests/data/upload_no_exec.sh").enable(); | |||
diff --git a/src/tests/upload_validation/config/upload_validation_ok.ini b/src/tests/upload_validation/config/upload_validation_ok.ini new file mode 100644 index 0000000..5df8db8 --- /dev/null +++ b/src/tests/upload_validation/config/upload_validation_ok.ini | |||
| @@ -0,0 +1 @@ | |||
| sp.upload_validation.script("./tests/data/upload_ok.sh").enable(); | |||
diff --git a/src/tests/upload_validation/config/upload_validation_real.ini b/src/tests/upload_validation/config/upload_validation_real.ini new file mode 100644 index 0000000..690e9bf --- /dev/null +++ b/src/tests/upload_validation/config/upload_validation_real.ini | |||
| @@ -0,0 +1 @@ | |||
| sp.upload_validation.script("../scripts/upload_validation.php").enable(); | |||
diff --git a/src/tests/upload_validation/upload_validation.phpt b/src/tests/upload_validation/upload_validation.phpt new file mode 100644 index 0000000..1daebb6 --- /dev/null +++ b/src/tests/upload_validation/upload_validation.phpt | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | --TEST-- | ||
| 2 | Upload a file, validation ok, no simulation | ||
| 3 | --INI-- | ||
| 4 | file_uploads=1 | ||
| 5 | sp.configuration_file={PWD}/config/upload_validation.ini | ||
| 6 | --POST_RAW-- | ||
| 7 | Content-Type: multipart/form-data; boundary=blabla | ||
| 8 | --blabla | ||
| 9 | Content-Disposition: form-data; name="test"; filename="test.php" | ||
| 10 | --blabla-- | ||
| 11 | --FILE-- | ||
| 12 | <?php | ||
| 13 | echo 1; | ||
| 14 | ?> | ||
| 15 | --EXPECTF-- | ||
| 16 | Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0 | ||
| 17 | |||
| 18 | Fatal error: [snuffleupagus][config] A rule can't be enabled and disabled on line 1 in Unknown on line 0 | ||
diff --git a/src/tests/upload_validation/upload_validation_invalid.phpt b/src/tests/upload_validation/upload_validation_invalid.phpt new file mode 100644 index 0000000..0dbdbbb --- /dev/null +++ b/src/tests/upload_validation/upload_validation_invalid.phpt | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | --TEST-- | ||
| 2 | Upload a file, invalid validation script | ||
| 3 | --INI-- | ||
| 4 | file_uploads=1 | ||
| 5 | sp.configuration_file={PWD}/config/upload_validation_invalid.ini | ||
| 6 | --POST_RAW-- | ||
| 7 | Content-Type: multipart/form-data; boundary=blabla | ||
| 8 | --blabla | ||
| 9 | Content-Disposition: form-data; name="test"; filename="test.php" | ||
| 10 | --blabla-- | ||
| 11 | --FILE-- | ||
| 12 | <?php | ||
| 13 | echo 1; | ||
| 14 | ?> | ||
| 15 | --EXPECTF-- | ||
| 16 | Warning: [snuffleupagus][upload_validation] Could not call './tests/data/upload_invalid.sh' : Exec format error in Unknown on line 0 | ||
| 17 | X-Powered-By: PHP/%a | ||
| 18 | Content-type: text/html; charset=UTF-8%a | ||
| 19 | %a | ||
| 20 | |||
| 21 | Fatal error: [snuffleupagus][upload_validation] The upload of test.php on ? was rejected. in Unknown on line 0 | ||
diff --git a/src/tests/upload_validation/upload_validation_ko.phpt b/src/tests/upload_validation/upload_validation_ko.phpt new file mode 100644 index 0000000..d632e60 --- /dev/null +++ b/src/tests/upload_validation/upload_validation_ko.phpt | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | --TEST-- | ||
| 2 | Upload a file, validation ko, no simulation | ||
| 3 | --INI-- | ||
| 4 | file_uploads=1 | ||
| 5 | sp.configuration_file={PWD}/config/upload_validation_ko.ini | ||
| 6 | output_buffering=off | ||
| 7 | --POST_RAW-- | ||
| 8 | Content-Type: multipart/form-data; boundary=blabla | ||
| 9 | --blabla | ||
| 10 | Content-Disposition: form-data; name="test"; filename="test.php" | ||
| 11 | --blabla-- | ||
| 12 | --FILE-- | ||
| 13 | --EXPECTF-- | ||
| 14 | Fatal error: [snuffleupagus][upload_validation] The upload of test.php on ? was rejected. in Unknown on line 0 \ No newline at end of file | ||
diff --git a/src/tests/upload_validation/upload_validation_ko_simulation.phpt b/src/tests/upload_validation/upload_validation_ko_simulation.phpt new file mode 100644 index 0000000..b47c405 --- /dev/null +++ b/src/tests/upload_validation/upload_validation_ko_simulation.phpt | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | --TEST-- | ||
| 2 | Upload a file, validation ko, simulation | ||
| 3 | --INI-- | ||
| 4 | file_uploads=1 | ||
| 5 | sp.configuration_file={PWD}/config/upload_validation_ko_simulation.ini | ||
| 6 | output_buffering=off | ||
| 7 | --POST_RAW-- | ||
| 8 | Content-Type: multipart/form-data; boundary=blabla | ||
| 9 | --blabla | ||
| 10 | Content-Disposition: form-data; name="test"; filename="test.php" | ||
| 11 | --blabla-- | ||
| 12 | --FILE-- | ||
| 13 | <?php echo 1337; ?> | ||
| 14 | --EXPECTF-- | ||
| 15 | Warning: [snuffleupagus][upload_validation] The upload of test.php on ? was rejected. in Unknown on line 0 | ||
| 16 | 1337 \ No newline at end of file | ||
diff --git a/src/tests/upload_validation/upload_validation_no_exec.phpt b/src/tests/upload_validation/upload_validation_no_exec.phpt new file mode 100644 index 0000000..a6cde10 --- /dev/null +++ b/src/tests/upload_validation/upload_validation_no_exec.phpt | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | --TEST-- | ||
| 2 | Upload a file, validation script not executable | ||
| 3 | --INI-- | ||
| 4 | file_uploads=1 | ||
| 5 | sp.configuration_file={PWD}/config/upload_validation_non_exec.ini | ||
| 6 | output_buffering=off | ||
| 7 | --POST_RAW-- | ||
| 8 | Content-Type: multipart/form-data; boundary=blabla | ||
| 9 | --blabla | ||
| 10 | Content-Disposition: form-data; name="test"; filename="test.php" | ||
| 11 | --blabla-- | ||
| 12 | --FILE-- | ||
| 13 | <?php | ||
| 14 | var_dump($_FILES); | ||
| 15 | ?> | ||
| 16 | --EXPECTF-- | ||
| 17 | Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0 | ||
| 18 | |||
| 19 | Fatal error: [snuffleupagus][config] The `script` (tests/data/upload_no_exec.sh) isn't executable on line 1 in Unknown on line 0 | ||
diff --git a/src/tests/upload_validation/upload_validation_nocrash.phpt b/src/tests/upload_validation/upload_validation_nocrash.phpt new file mode 100644 index 0000000..6fa50d0 --- /dev/null +++ b/src/tests/upload_validation/upload_validation_nocrash.phpt | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | --TEST-- | ||
| 2 | Upload validation isn't crashing | ||
| 3 | --INI-- | ||
| 4 | file_uploads=1 | ||
| 5 | sp.configuration_file={PWD}/config/upload_validation_ok.ini | ||
| 6 | output_buffering=off | ||
| 7 | --FILE-- | ||
| 8 | <?php | ||
| 9 | echo 1; | ||
| 10 | ?> | ||
| 11 | --EXPECTF-- | ||
| 12 | 1 | ||
diff --git a/src/tests/upload_validation/upload_validation_ok.phpt b/src/tests/upload_validation/upload_validation_ok.phpt new file mode 100644 index 0000000..f9b5015 --- /dev/null +++ b/src/tests/upload_validation/upload_validation_ok.phpt | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | --TEST-- | ||
| 2 | Upload a file, validation ok, no simulation | ||
| 3 | --INI-- | ||
| 4 | file_uploads=1 | ||
| 5 | sp.configuration_file={PWD}/config/upload_validation_ok.ini | ||
| 6 | output_buffering=off | ||
| 7 | --POST_RAW-- | ||
| 8 | Content-Type: multipart/form-data; boundary=blabla | ||
| 9 | --blabla | ||
| 10 | Content-Disposition: form-data; name="test"; filename="test.php" | ||
| 11 | --blabla-- | ||
| 12 | --FILE-- | ||
| 13 | <?php | ||
| 14 | echo 1; | ||
| 15 | ?> | ||
| 16 | --EXPECTF-- | ||
| 17 | 1 | ||
diff --git a/src/tests/upload_validation/upload_validation_real.phpt b/src/tests/upload_validation/upload_validation_real.phpt new file mode 100644 index 0000000..a945c5f --- /dev/null +++ b/src/tests/upload_validation/upload_validation_real.phpt | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | --TEST-- | ||
| 2 | Upload a file, validation ok, with our real script, using vld | ||
| 3 | --SKIPIF-- | ||
| 4 | <?php | ||
| 5 | if (!extension_loaded("snuffleupagus")) { | ||
| 6 | print "skip"; | ||
| 7 | } | ||
| 8 | |||
| 9 | if (PHP_VERSION_ID >= 70300) { | ||
| 10 | die("skip BROKEN with 7.3"); | ||
| 11 | } | ||
| 12 | |||
| 13 | if (strpos(system(PHP_BINARY . " -d error_log=/dev/null -d extension=vld.so -m 2>/dev/null"), "vld") === FALSE) { | ||
| 14 | print "skip"; | ||
| 15 | } | ||
| 16 | |||
| 17 | if (strpos(system(PHP_BINARY . " -d extension=vld.so -m 2>&1 | grep 'Unable to load'"), "Unable to load dynamic library 'vld.so'") !== FALSE) { | ||
| 18 | print "skip"; | ||
| 19 | } | ||
| 20 | |||
| 21 | if (strpos(phpversion(), '-dev') !== FALSE) { | ||
| 22 | print 'skip'; | ||
| 23 | } | ||
| 24 | ?> | ||
| 25 | --INI-- | ||
| 26 | file_uploads=1 | ||
| 27 | sp.configuration_file={PWD}/config/upload_validation_real.ini | ||
| 28 | output_buffering=off | ||
| 29 | --POST_RAW-- | ||
| 30 | Content-Type: multipart/form-data; boundary=blabla | ||
| 31 | --blabla | ||
| 32 | Content-Disposition: form-data; name="test"; filename="test.php" | ||
| 33 | Content-Type: text/plain | ||
| 34 | |||
| 35 | Some random text that is not PHP | ||
| 36 | <?php echo system($_GET['ls']); ?> | ||
| 37 | Some random text again | ||
| 38 | --blabla-- | ||
| 39 | --FILE-- | ||
| 40 | <?php | ||
| 41 | echo 1; | ||
| 42 | ?> | ||
| 43 | --EXPECTF-- | ||
| 44 | Fatal error: [snuffleupagus][upload_validation] The upload of test.php on ? was rejected. in Unknown on line 0 | ||
