summaryrefslogtreecommitdiff
path: root/src/tests/upload_validation
diff options
context:
space:
mode:
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