summaryrefslogtreecommitdiff
path: root/src/tests/upload_validation
diff options
context:
space:
mode:
authorjvoisin2019-01-14 19:29:25 +0000
committerGitHub2019-01-14 19:29:25 +0000
commite79f7e3bd992c7f0915ef9afe7afb6d79740527a (patch)
treef881c25694eb00da2331a9ab280ec1c24a5662ab /src/tests/upload_validation
parentc943db586ac46b686b49bdf61d8473e39dd93000 (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')
-rw-r--r--src/tests/upload_validation/config/upload_validation.ini2
-rw-r--r--src/tests/upload_validation/config/upload_validation_invalid.ini1
-rw-r--r--src/tests/upload_validation/config/upload_validation_ko.ini1
-rw-r--r--src/tests/upload_validation/config/upload_validation_ko_simulation.ini1
-rw-r--r--src/tests/upload_validation/config/upload_validation_no_exist.ini1
-rw-r--r--src/tests/upload_validation/config/upload_validation_non_exec.ini1
-rw-r--r--src/tests/upload_validation/config/upload_validation_ok.ini1
-rw-r--r--src/tests/upload_validation/config/upload_validation_real.ini1
-rw-r--r--src/tests/upload_validation/upload_validation.phpt18
-rw-r--r--src/tests/upload_validation/upload_validation_invalid.phpt21
-rw-r--r--src/tests/upload_validation/upload_validation_ko.phpt14
-rw-r--r--src/tests/upload_validation/upload_validation_ko_simulation.phpt16
-rw-r--r--src/tests/upload_validation/upload_validation_no_exec.phpt19
-rw-r--r--src/tests/upload_validation/upload_validation_nocrash.phpt12
-rw-r--r--src/tests/upload_validation/upload_validation_ok.phpt17
-rw-r--r--src/tests/upload_validation/upload_validation_real.phpt44
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 @@
1sp.upload_validation.script("tests/upload_ko.sh");
2sp.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--
2Upload a file, validation ok, no simulation
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/upload_validation.ini
6--POST_RAW--
7Content-Type: multipart/form-data; boundary=blabla
8--blabla
9Content-Disposition: form-data; name="test"; filename="test.php"
10--blabla--
11--FILE--
12<?php
13echo 1;
14?>
15--EXPECTF--
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17
18Fatal 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--
2Upload a file, invalid validation script
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/upload_validation_invalid.ini
6--POST_RAW--
7Content-Type: multipart/form-data; boundary=blabla
8--blabla
9Content-Disposition: form-data; name="test"; filename="test.php"
10--blabla--
11--FILE--
12<?php
13echo 1;
14?>
15--EXPECTF--
16Warning: [snuffleupagus][upload_validation] Could not call './tests/data/upload_invalid.sh' : Exec format error in Unknown on line 0
17X-Powered-By: PHP/%a
18Content-type: text/html; charset=UTF-8%a
19%a
20
21Fatal 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--
2Upload a file, validation ko, no simulation
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/upload_validation_ko.ini
6output_buffering=off
7--POST_RAW--
8Content-Type: multipart/form-data; boundary=blabla
9--blabla
10Content-Disposition: form-data; name="test"; filename="test.php"
11--blabla--
12--FILE--
13--EXPECTF--
14Fatal 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--
2Upload a file, validation ko, simulation
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/upload_validation_ko_simulation.ini
6output_buffering=off
7--POST_RAW--
8Content-Type: multipart/form-data; boundary=blabla
9--blabla
10Content-Disposition: form-data; name="test"; filename="test.php"
11--blabla--
12--FILE--
13<?php echo 1337; ?>
14--EXPECTF--
15Warning: [snuffleupagus][upload_validation] The upload of test.php on ? was rejected. in Unknown on line 0
161337 \ 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--
2Upload a file, validation script not executable
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/upload_validation_non_exec.ini
6output_buffering=off
7--POST_RAW--
8Content-Type: multipart/form-data; boundary=blabla
9--blabla
10Content-Disposition: form-data; name="test"; filename="test.php"
11--blabla--
12--FILE--
13<?php
14var_dump($_FILES);
15?>
16--EXPECTF--
17Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
18
19Fatal 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--
2Upload validation isn't crashing
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/upload_validation_ok.ini
6output_buffering=off
7--FILE--
8<?php
9echo 1;
10?>
11--EXPECTF--
121
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--
2Upload a file, validation ok, no simulation
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/upload_validation_ok.ini
6output_buffering=off
7--POST_RAW--
8Content-Type: multipart/form-data; boundary=blabla
9--blabla
10Content-Disposition: form-data; name="test"; filename="test.php"
11--blabla--
12--FILE--
13<?php
14echo 1;
15?>
16--EXPECTF--
171
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--
2Upload a file, validation ok, with our real script, using vld
3--SKIPIF--
4<?php
5if (!extension_loaded("snuffleupagus")) {
6 print "skip";
7}
8
9if (PHP_VERSION_ID >= 70300) {
10 die("skip BROKEN with 7.3");
11}
12
13if (strpos(system(PHP_BINARY . " -d error_log=/dev/null -d extension=vld.so -m 2>/dev/null"), "vld") === FALSE) {
14 print "skip";
15}
16
17if (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
21if (strpos(phpversion(), '-dev') !== FALSE) {
22 print 'skip';
23}
24?>
25--INI--
26file_uploads=1
27sp.configuration_file={PWD}/config/upload_validation_real.ini
28output_buffering=off
29--POST_RAW--
30Content-Type: multipart/form-data; boundary=blabla
31--blabla
32Content-Disposition: form-data; name="test"; filename="test.php"
33Content-Type: text/plain
34
35Some random text that is not PHP
36<?php echo system($_GET['ls']); ?>
37Some random text again
38--blabla--
39--FILE--
40<?php
41echo 1;
42?>
43--EXPECTF--
44Fatal error: [snuffleupagus][upload_validation] The upload of test.php on ? was rejected. in Unknown on line 0