summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Fuhrmannek2021-08-07 15:57:30 +0200
committerBen Fuhrmannek2021-08-07 15:57:30 +0200
commit5fbb1733f67172e4111fa512961106f4733395db (patch)
tree56ea902e1e3dab7b3f105e1e11d79d58ba870381 /src
parentbd8b5bb241ca359b65c1a3717c9905d034b9703b (diff)
unit tests for ini protection feature
Diffstat (limited to 'src')
-rw-r--r--src/tests/ini/config/sp-policy-drop.ini3
-rw-r--r--src/tests/ini/config/sp-policy-silent-fail.ini3
-rw-r--r--src/tests/ini/config/sp.ini11
-rw-r--r--src/tests/ini/ini_min_policy_drop.phpt13
-rw-r--r--src/tests/ini/ini_min_policy_silent_fail.phpt14
-rw-r--r--src/tests/ini/ini_minmax.phpt34
-rw-r--r--src/tests/ini/ini_null.phpt26
-rw-r--r--src/tests/ini/ini_regexp.phpt19
-rw-r--r--src/tests/ini/ini_regexp_drop.phpt13
-rw-r--r--src/tests/ini/ini_set.phpt12
10 files changed, 148 insertions, 0 deletions
diff --git a/src/tests/ini/config/sp-policy-drop.ini b/src/tests/ini/config/sp-policy-drop.ini
new file mode 100644
index 0000000..1c28030
--- /dev/null
+++ b/src/tests/ini/config/sp-policy-drop.ini
@@ -0,0 +1,3 @@
1sp.ini_protection.enable();
2sp.ini_protection.policy_drop();
3sp.ini.key("log_errors_max_len").min("200").max("2000");
diff --git a/src/tests/ini/config/sp-policy-silent-fail.ini b/src/tests/ini/config/sp-policy-silent-fail.ini
new file mode 100644
index 0000000..8236077
--- /dev/null
+++ b/src/tests/ini/config/sp-policy-silent-fail.ini
@@ -0,0 +1,3 @@
1sp.ini_protection.enable();
2sp.ini_protection.policy_silent_fail();
3sp.ini.key("log_errors_max_len").min("200").max("2000");
diff --git a/src/tests/ini/config/sp.ini b/src/tests/ini/config/sp.ini
new file mode 100644
index 0000000..3022e37
--- /dev/null
+++ b/src/tests/ini/config/sp.ini
@@ -0,0 +1,11 @@
1sp.ini_protection.enable();
2
3sp.ini.key("log_errors_max_len").min("200").max("2000");
4sp.ini.key("max_execution_time").min("30").max("600");
5sp.ini.key("highlight.comment").regexp("^#[0-9a-fA-F]{6}$");
6sp.ini.key("default_mimetype").set("text/plain").ro();
7
8sp.ini.key("sendmail_from").set("test@example.com").regexp(".*@example\\.com$").allow_null();
9sp.ini.key("unserialize_callback_func").set("def").regexp("^abc$");
10
11sp.ini.key("user_agent").regexp("^abc$").drop();
diff --git a/src/tests/ini/ini_min_policy_drop.phpt b/src/tests/ini/ini_min_policy_drop.phpt
new file mode 100644
index 0000000..9dddcc4
--- /dev/null
+++ b/src/tests/ini/ini_min_policy_drop.phpt
@@ -0,0 +1,13 @@
1--TEST--
2INI protection .min() + .policy_drop()
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print("skip"); ?>
5--INI--
6sp.configuration_file={PWD}/config/sp-policy-drop.ini
7--FILE--
8<?php
9var_dump(ini_set("log_errors_max_len", "199") === false);
10var_dump(ini_get("log_errors_max_len"));
11?>
12--EXPECTF--
13Fatal error: [snuffleupagus][0.0.0.0][ini_protection][drop] INI value out of range in %a/ini_min_policy_drop.php on line 2
diff --git a/src/tests/ini/ini_min_policy_silent_fail.phpt b/src/tests/ini/ini_min_policy_silent_fail.phpt
new file mode 100644
index 0000000..8ef780d
--- /dev/null
+++ b/src/tests/ini/ini_min_policy_silent_fail.phpt
@@ -0,0 +1,14 @@
1--TEST--
2INI protection .min() + .policy_silent_fail()
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print("skip"); ?>
5--INI--
6sp.configuration_file={PWD}/config/sp-policy-silent-fail.ini
7--FILE--
8<?php
9var_dump(ini_set("log_errors_max_len", "199") === false);
10var_dump(ini_get("log_errors_max_len"));
11?>
12--EXPECTF--
13bool(true)
14string(1) "0" \ No newline at end of file
diff --git a/src/tests/ini/ini_minmax.phpt b/src/tests/ini/ini_minmax.phpt
new file mode 100644
index 0000000..fc93075
--- /dev/null
+++ b/src/tests/ini/ini_minmax.phpt
@@ -0,0 +1,34 @@
1--TEST--
2INI protection .min()/.max()
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print("skip"); ?>
5--INI--
6sp.configuration_file={PWD}/config/sp.ini
7--FILE--
8<?php
9var_dump(ini_set("log_errors_max_len", "200") === false);
10var_dump(ini_get("log_errors_max_len"));
11
12var_dump(ini_set("log_errors_max_len", "2000") === false);
13var_dump(ini_get("log_errors_max_len"));
14
15var_dump(ini_set("log_errors_max_len", "199") === false);
16var_dump(ini_get("log_errors_max_len"));
17
18var_dump(ini_set("log_errors_max_len", "2001") === false);
19var_dump(ini_get("log_errors_max_len"));
20
21?>
22--EXPECTF--
23bool(false)
24string(3) "200"
25bool(false)
26string(4) "2000"
27
28Warning: [snuffleupagus][0.0.0.0][ini_protection][log] INI value out of range in %a/ini_minmax.php on line 8
29bool(true)
30string(4) "2000"
31
32Warning: [snuffleupagus][0.0.0.0][ini_protection][log] INI value out of range in %a/ini_minmax.php on line 11
33bool(true)
34string(4) "2000" \ No newline at end of file
diff --git a/src/tests/ini/ini_null.phpt b/src/tests/ini/ini_null.phpt
new file mode 100644
index 0000000..32a12c1
--- /dev/null
+++ b/src/tests/ini/ini_null.phpt
@@ -0,0 +1,26 @@
1--TEST--
2INI protection .allow_null()
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print("skip"); ?>
5--INI--
6sp.configuration_file={PWD}/config/sp.ini
7--FILE--
8<?php
9var_dump(ini_set("sendmail_from", "foo@example.com") === false);
10var_dump(ini_get("sendmail_from"));
11
12var_dump(ini_set("sendmail_from", NULL) === false);
13var_dump(ini_get("sendmail_from"));
14
15var_dump(ini_set("unserialize_callback_func", NULL) === false);
16var_dump(ini_get("unserialize_callback_func"));
17?>
18--EXPECTF--
19bool(false)
20string(15) "foo@example.com"
21bool(false)
22string(0) ""
23
24Warning: [snuffleupagus][0.0.0.0][ini_protection][log] new INI value must not be NULL or empty in %a/ini_null.php on line 8
25bool(true)
26string(3) "def" \ No newline at end of file
diff --git a/src/tests/ini/ini_regexp.phpt b/src/tests/ini/ini_regexp.phpt
new file mode 100644
index 0000000..f6c5198
--- /dev/null
+++ b/src/tests/ini/ini_regexp.phpt
@@ -0,0 +1,19 @@
1--TEST--
2INI protection .regexp()
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print("skip"); ?>
5--INI--
6sp.configuration_file={PWD}/config/sp.ini
7--FILE--
8<?php
9ini_set("highlight.comment", "#000aBc");
10var_dump(ini_get("highlight.comment"));
11
12ini_set("highlight.comment", "xxx");
13var_dump(ini_get("highlight.comment"));
14?>
15--EXPECTF--
16string(7) "#000aBc"
17
18Warning: [snuffleupagus][0.0.0.0][ini_protection][log] INI value does not match regex in %a/ini_regexp.php on line 5
19string(7) "#000aBc"
diff --git a/src/tests/ini/ini_regexp_drop.phpt b/src/tests/ini/ini_regexp_drop.phpt
new file mode 100644
index 0000000..9225470
--- /dev/null
+++ b/src/tests/ini/ini_regexp_drop.phpt
@@ -0,0 +1,13 @@
1--TEST--
2INI protection .min() + .drop()
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print("skip"); ?>
5--INI--
6sp.configuration_file={PWD}/config/sp.ini
7--FILE--
8<?php
9var_dump(ini_set("user_agent", "Foo") === false);
10var_dump(ini_get("user_agent"));
11?>
12--EXPECTF--
13Fatal error: [snuffleupagus][0.0.0.0][ini_protection][drop] INI value does not match regex in %a/ini_regexp_drop.php on line 2
diff --git a/src/tests/ini/ini_set.phpt b/src/tests/ini/ini_set.phpt
new file mode 100644
index 0000000..bfafbe8
--- /dev/null
+++ b/src/tests/ini/ini_set.phpt
@@ -0,0 +1,12 @@
1--TEST--
2INI protection .set()
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print("skip"); ?>
5--INI--
6sp.configuration_file={PWD}/config/sp.ini
7--FILE--
8<?php
9var_dump(ini_get("default_mimetype"));
10?>
11--EXPECTF--
12string(10) "text/plain" \ No newline at end of file