summaryrefslogtreecommitdiff
path: root/src/tests/broken_configuration
diff options
context:
space:
mode:
authorjvoisin2019-01-14 19:29:25 +0000
committerGitHub2019-01-14 19:29:25 +0000
commite79f7e3bd992c7f0915ef9afe7afb6d79740527a (patch)
treef881c25694eb00da2331a9ab280ec1c24a5662ab /src/tests/broken_configuration
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/broken_configuration')
-rw-r--r--src/tests/broken_configuration/broken_conf.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf2.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_allow_broken_disabled.phpt18
-rw-r--r--src/tests/broken_configuration/broken_conf_allow_broken_enabled.phpt16
-rw-r--r--src/tests/broken_configuration/broken_conf_config_regexp.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_config_regexp_no_closing_paren.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_cookie_encryption_without_encryption_key.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_cookie_encryption_without_env_var.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_cookie_name_and_regexp.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_enable_disable.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_eval.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_expecting_bool.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_invalid_cidr.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_invalid_cidr6.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_invalid_cidr6_no_slash.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_invalid_cidr6_too_big.phpt9
-rw-r--r--src/tests/broken_configuration/broken_conf_invalid_cidr_value.phpt18
-rw-r--r--src/tests/broken_configuration/broken_conf_invalid_filename.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_invalid_type.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_key_value.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_line_empty_string.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_line_no_closing.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_1.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_10.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_11.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_12.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_13.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_14.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_15.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_16.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_2.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_3.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_4.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_5.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_6.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_7.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_8.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_local_var_9.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_lots_of_quotes.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_missing_script.phpt16
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive.phpt11
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive10.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive11.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive12.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive2.phpt11
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive3.phpt11
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive4.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive5.phpt11
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive6.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive7.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive8.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_mutually_exclusive9.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_no_cookie_action.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_no_cookie_name.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_no_file_specified.phpt10
-rw-r--r--src/tests/broken_configuration/broken_conf_nonexisting_script.phpt16
-rw-r--r--src/tests/broken_configuration/broken_conf_quotes.phpt17
-rw-r--r--src/tests/broken_configuration/broken_conf_readonly_exec.phpt16
-rw-r--r--src/tests/broken_configuration/broken_conf_samesite.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_session_encryption.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_session_encryption_without_encryption_key.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_session_encryption_without_env_var.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_shown_in_phpinfo.phpt28
-rw-r--r--src/tests/broken_configuration/broken_conf_truncated.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_unserialize.phpt16
-rw-r--r--src/tests/broken_configuration/broken_conf_upload_validation.phpt16
-rw-r--r--src/tests/broken_configuration/broken_conf_weird_keyword.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_wrapper_whitelist.phpt18
-rw-r--r--src/tests/broken_configuration/broken_conf_wrong_quotes.phpt14
-rw-r--r--src/tests/broken_configuration/broken_conf_wrong_type.phpt14
-rw-r--r--src/tests/broken_configuration/broken_invalid_client_ip4.phpt16
-rw-r--r--src/tests/broken_configuration/broken_regexp.phpt17
-rw-r--r--src/tests/broken_configuration/broken_unmatching_brackets.phpt17
-rw-r--r--src/tests/broken_configuration/config/borken_conf_enable_disable.ini1
-rw-r--r--src/tests/broken_configuration/config/borken_conf_upload_validation.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf2.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_cookie_action.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_cookie_encryption_without_encryption_key.ini2
-rw-r--r--src/tests/broken_configuration/config/broken_conf_cookie_encryption_without_env_var.ini2
-rw-r--r--src/tests/broken_configuration/config/broken_conf_cookie_name_and_regexp.ini2
-rw-r--r--src/tests/broken_configuration/config/broken_conf_cookie_samesite.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_eval.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_expecting_bool.ini5
-rw-r--r--src/tests/broken_configuration/config/broken_conf_invalid_cidr.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_invalid_cidr6.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_invalid_cidr6_no_slash.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_invalid_cidr6_too_big.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_invalid_cidr_value.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_invalid_filename.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_invalid_type.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_key_value.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_line_empty_string.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_line_no_closing.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_1.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_10.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_11.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_12.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_13.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_14.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_15.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_16.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_2.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_3.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_4.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_5.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_6.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_7.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_8.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_local_var_9.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_lots_of_quotes.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_missing_script.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive10.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive11.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive12.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive2.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive3.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive4.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive5.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive6.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive7.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive8.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_mutually_exclusive9.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_nonexisting_script.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_quotes.ini3
-rw-r--r--src/tests/broken_configuration/config/broken_conf_readonly_exec.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_session_encryption.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_session_encryption_without_encryption_key.ini2
-rw-r--r--src/tests/broken_configuration/config/broken_conf_session_encryption_without_env_var.ini2
-rw-r--r--src/tests/broken_configuration/config/broken_conf_to_few_args.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_unserialize.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_weird_keyword.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_wrapper_whitelist.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_wrong_quotes.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_conf_wrong_type.ini5
-rw-r--r--src/tests/broken_configuration/config/broken_config_regexp.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_config_regexp_no_closing_paren.ini1
-rw-r--r--src/tests/broken_configuration/config/broken_regexp.ini1
-rw-r--r--src/tests/broken_configuration/config/config_broken_conf_truncated.ini1
-rw-r--r--src/tests/broken_configuration/config/config_encrypted_cookies_noname.ini3
-rw-r--r--src/tests/broken_configuration/config/config_encrypted_regexp_cookies_bad_regexp.ini3
-rw-r--r--src/tests/broken_configuration/config/config_unmatching_brackets.ini1
-rw-r--r--src/tests/broken_configuration/config/disabled_functions_cidr.ini9
-rw-r--r--src/tests/broken_configuration/encrypt_regexp_cookies_bad_regexp.phpt22
145 files changed, 1221 insertions, 0 deletions
diff --git a/src/tests/broken_configuration/broken_conf.phpt b/src/tests/broken_configuration/broken_conf.phpt
new file mode 100644
index 0000000..209e1bd
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration prefix for 'this is a broken line' on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration prefix for 'this is a broken line' on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf2.phpt b/src/tests/broken_configuration/broken_conf2.phpt
new file mode 100644
index 0000000..47314d1
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf2.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf2.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration section 'sp.wrong' on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration section 'sp.wrong' on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_allow_broken_disabled.phpt b/src/tests/broken_configuration/broken_conf_allow_broken_disabled.phpt
new file mode 100644
index 0000000..7aa0c82
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_allow_broken_disabled.phpt
@@ -0,0 +1,18 @@
1--TEST--
2Broken configuration with allow broken turned off
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf.ini
7sp.allow_broken_configuration=Off
8--FILE--
9<?php
10echo 1337;
11?>
12--EXPECT--
13PHP Fatal error: [snuffleupagus][config] Invalid configuration prefix for 'this is a broken line' on line 1 in Unknown on line 0
14
15Fatal error: [snuffleupagus][config] Invalid configuration prefix for 'this is a broken line' on line 1 in Unknown on line 0
16
17Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
18Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_allow_broken_enabled.phpt b/src/tests/broken_configuration/broken_conf_allow_broken_enabled.phpt
new file mode 100644
index 0000000..452595b
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_allow_broken_enabled.phpt
@@ -0,0 +1,16 @@
1--TEST--
2Broken configuration with allow broken turned on
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf.ini
7sp.allow_broken_configuration=On
8--FILE--
9<?php
10echo 1337;
11?>
12--EXPECT--
13PHP Fatal error: [snuffleupagus][config] Invalid configuration prefix for 'this is a broken line' on line 1 in Unknown on line 0
14
15Fatal error: [snuffleupagus][config] Invalid configuration prefix for 'this is a broken line' on line 1 in Unknown on line 0
161337
diff --git a/src/tests/broken_configuration/broken_conf_config_regexp.phpt b/src/tests/broken_configuration/broken_conf_config_regexp.phpt
new file mode 100644
index 0000000..2977e3a
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_config_regexp.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_config_regexp.ini
7--FILE--
8--EXPECTF--
9PHP Fatal error: [snuffleupagus][config] Failed to compile '*.': %s on line 1. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] '.filename_r()' is expecting a valid regexp, and not '"*."' on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Failed to compile '*.': %s on line 1. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] '.filename_r()' is expecting a valid regexp, and not '"*."' on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_config_regexp_no_closing_paren.phpt b/src/tests/broken_configuration/broken_conf_config_regexp_no_closing_paren.phpt
new file mode 100644
index 0000000..77bb1b4
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_config_regexp_no_closing_paren.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration - regexp without a closing parenthesis
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_config_regexp_no_closing_paren.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"*."': it doesn't look like a valid string on line 1 in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] '.filename_r()' is expecting a valid regexp, and not '"*."' on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"*."': it doesn't look like a valid string on line 1 in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] '.filename_r()' is expecting a valid regexp, and not '"*."' on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_cookie_encryption_without_encryption_key.phpt b/src/tests/broken_configuration/broken_conf_cookie_encryption_without_encryption_key.phpt
new file mode 100644
index 0000000..d0b7c0d
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_cookie_encryption_without_encryption_key.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Borken configuration - encrypted cookie without encryption key
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_cookie_encryption_without_encryption_key.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] You're trying to use the cookie encryption featureon line 2 without having set the `.encryption_key` option in`sp.global`: please set it first in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] You're trying to use the cookie encryption featureon line 2 without having set the `.encryption_key` option in`sp.global`: please set it first in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_cookie_encryption_without_env_var.phpt b/src/tests/broken_configuration/broken_conf_cookie_encryption_without_env_var.phpt
new file mode 100644
index 0000000..af5d471
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_cookie_encryption_without_env_var.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Borken configuration - encrypted cookie with without cookie env var
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_cookie_encryption_without_env_var.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] You're trying to use the cookie encryption featureon line 2 without having set the `.cookie_env_var` option in`sp.global`: please set it first in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] You're trying to use the cookie encryption featureon line 2 without having set the `.cookie_env_var` option in`sp.global`: please set it first in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_cookie_name_and_regexp.phpt b/src/tests/broken_configuration/broken_conf_cookie_name_and_regexp.phpt
new file mode 100644
index 0000000..b1e1318
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_cookie_name_and_regexp.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Borken configuration - encrypted cookie with name and regexp
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_cookie_name_and_regexp.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] name and name_r are mutually exclusive on line 2 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] name and name_r are mutually exclusive on line 2 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_enable_disable.phpt b/src/tests/broken_configuration/broken_conf_enable_disable.phpt
new file mode 100644
index 0000000..a836f44
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_enable_disable.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Global strict mode
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/borken_conf_enable_disable.ini
7--FILE--
8--EXPECTF--
9PHP Fatal error: [snuffleupagus][config] A rule can't be enabled and disabled on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] A rule can't be enabled and disabled on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_eval.phpt b/src/tests/broken_configuration/broken_conf_eval.phpt
new file mode 100644
index 0000000..98da9c9
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_eval.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration for eval
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_eval.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"cos,sin': it doesn't look like a valid string on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"cos,sin': it doesn't look like a valid string on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_expecting_bool.phpt b/src/tests/broken_configuration/broken_conf_expecting_bool.phpt
new file mode 100644
index 0000000..6770c7c
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_expecting_bool.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Bad boolean value in configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_expecting_bool.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Trailing chars '337);' at the end of '.enable(1337);' on line 5 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Trailing chars '337);' at the end of '.enable(1337);' on line 5 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_invalid_cidr.phpt b/src/tests/broken_configuration/broken_conf_invalid_cidr.phpt
new file mode 100644
index 0000000..3e27050
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_invalid_cidr.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_invalid_cidr.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] '42' isn't a valid ipv4 mask. in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] '42' isn't a valid ipv4 mask. in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_invalid_cidr6.phpt b/src/tests/broken_configuration/broken_conf_invalid_cidr6.phpt
new file mode 100644
index 0000000..8f96669
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_invalid_cidr6.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_invalid_cidr6.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] 'ZZZ' isn't a valid network mask. in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] 'ZZZ' isn't a valid network mask. in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_invalid_cidr6_no_slash.phpt b/src/tests/broken_configuration/broken_conf_invalid_cidr6_no_slash.phpt
new file mode 100644
index 0000000..2d557ff
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_invalid_cidr6_no_slash.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration, invalid cidr for ipv6 because there is no `/` in it
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_invalid_cidr6_no_slash.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] '2001:0db8:0000:0000:0000:ff00:0042:8329' isn't a valid network mask, it seems that you forgot a '/'. in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] '2001:0db8:0000:0000:0000:ff00:0042:8329' isn't a valid network mask, it seems that you forgot a '/'. in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_invalid_cidr6_too_big.phpt b/src/tests/broken_configuration/broken_conf_invalid_cidr6_too_big.phpt
new file mode 100644
index 0000000..47d4a5d
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_invalid_cidr6_too_big.phpt
@@ -0,0 +1,9 @@
1--TEST--
2Broken configuration, cidr for ipv6 is too big, that will `mod` to 25.
3(13337%128 = 25)
4--SKIPIF--
5<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
6--INI--
7sp.configuration_file={PWD}/config/broken_conf_invalid_cidr6_too_big.ini
8--FILE--
9--EXPECT--
diff --git a/src/tests/broken_configuration/broken_conf_invalid_cidr_value.phpt b/src/tests/broken_configuration/broken_conf_invalid_cidr_value.phpt
new file mode 100644
index 0000000..ad60912
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_invalid_cidr_value.phpt
@@ -0,0 +1,18 @@
1--TEST--
2Broken configuration, invalid cidr value
3(13337%128 = 25)
4--SKIPIF--
5<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
6--INI--
7sp.configuration_file={PWD}/config/broken_conf_invalid_cidr_value.ini
8--FILE--
9--EXPECT--
10PHP Fatal error: [snuffleupagus][error] A valid string as parameter is expected on line 1 in Unknown on line 0
11PHP Fatal error: [snuffleupagus][config] " doesn't contain a valid cidr on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][error] A valid string as parameter is expected on line 1 in Unknown on line 0
14
15Fatal error: [snuffleupagus][config] " doesn't contain a valid cidr on line 1 in Unknown on line 0
16
17Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
18Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_invalid_filename.phpt b/src/tests/broken_configuration/broken_conf_invalid_filename.phpt
new file mode 100644
index 0000000..0ab138f
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_invalid_filename.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration filename without absolute path
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) die "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_invalid_filename.ini
7--FILE--
8--EXPECTF--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("sprintf").filename("wrong file name").drop();':'.filename' must be an absolute path or a phar archive on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("sprintf").filename("wrong file name").drop();':'.filename' must be an absolute path or a phar archive on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_invalid_type.phpt b/src/tests/broken_configuration/broken_conf_invalid_type.phpt
new file mode 100644
index 0000000..b140c25
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_invalid_type.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken conf with wrong type
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) die "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_invalid_type.ini
7--FILE--
8--EXPECTF--
9PHP Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"totally_wrong"_type")': it doesn't look like a valid string on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"totally_wrong"_type")': it doesn't look like a valid string on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_key_value.phpt b/src/tests/broken_configuration/broken_conf_key_value.phpt
new file mode 100644
index 0000000..8c455f8
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_key_value.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_key_value.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").var("").value("").key("").drop();':`key` and `value` are mutually exclusive on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").var("").value("").key("").drop();':`key` and `value` are mutually exclusive on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_line_empty_string.phpt b/src/tests/broken_configuration/broken_conf_line_empty_string.phpt
new file mode 100644
index 0000000..77bd46d
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_line_empty_string.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Configuration line with an empty string
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_line_empty_string.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][error] A valid string as parameter is expected on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][error] A valid string as parameter is expected on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_line_no_closing.phpt b/src/tests/broken_configuration/broken_conf_line_no_closing.phpt
new file mode 100644
index 0000000..19dd081
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_line_no_closing.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Configuration line without closing parenthese
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_line_no_closing.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"123"': it doesn't look like a valid string on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"123"': it doesn't look like a valid string on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_1.phpt b/src/tests/broken_configuration/broken_conf_local_var_1.phpt
new file mode 100644
index 0000000..52494d3
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_1.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_1.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `]` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value ']' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `]` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value ']' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_10.phpt b/src/tests/broken_configuration/broken_conf_local_var_10.phpt
new file mode 100644
index 0000000..d184286
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_10.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_10.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `]` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value 'asd[asd]asd' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `]` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value 'asd[asd]asd' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_11.phpt b/src/tests/broken_configuration/broken_conf_local_var_11.phpt
new file mode 100644
index 0000000..105ef24
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_11.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_11.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `::` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value 'asd::' for `param` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `::` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value 'asd::' for `param` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_12.phpt b/src/tests/broken_configuration/broken_conf_local_var_12.phpt
new file mode 100644
index 0000000..bfa79e1
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_12.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_12.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Empty value in `var` on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Empty value in `var` on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_13.phpt b/src/tests/broken_configuration/broken_conf_local_var_13.phpt
new file mode 100644
index 0000000..b4e8dee
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_13.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_13.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `->` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value 'asd->asd' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `->` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value 'asd->asd' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_14.phpt b/src/tests/broken_configuration/broken_conf_local_var_14.phpt
new file mode 100644
index 0000000..3e21721
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_14.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_14.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid var name: $i+valid var name . in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value '$i+valid var name ' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid var name: $i+valid var name . in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value '$i+valid var name ' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_15.phpt b/src/tests/broken_configuration/broken_conf_local_var_15.phpt
new file mode 100644
index 0000000..6c9c4c3
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_15.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_15.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid var name: $i$$!@#. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value '$i$$!@#->qwe' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid var name: $i$$!@#. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value '$i$$!@#->qwe' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_16.phpt b/src/tests/broken_configuration/broken_conf_local_var_16.phpt
new file mode 100644
index 0000000..85c6627
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_16.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_16.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Missing a closing quote. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value '"' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Missing a closing quote. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value '"' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_2.phpt b/src/tests/broken_configuration/broken_conf_local_var_2.phpt
new file mode 100644
index 0000000..7b0d36b
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_2.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_2.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `"` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value '""asd' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `"` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value '""asd' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_3.phpt b/src/tests/broken_configuration/broken_conf_local_var_3.phpt
new file mode 100644
index 0000000..fb00c26
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_3.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_3.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `->` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value '$qwe->::' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `->` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value '$qwe->::' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_4.phpt b/src/tests/broken_configuration/broken_conf_local_var_4.phpt
new file mode 100644
index 0000000..8d7e195
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_4.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_4.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `"` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value '"asd"asd[]' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `"` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value '"asd"asd[]' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_5.phpt b/src/tests/broken_configuration/broken_conf_local_var_5.phpt
new file mode 100644
index 0000000..1c62e37
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_5.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_5.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `'` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value ''asd'asd[]' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `'` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value ''asd'asd[]' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_6.phpt b/src/tests/broken_configuration/broken_conf_local_var_6.phpt
new file mode 100644
index 0000000..9a3fa02
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_6.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_6.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `'` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value '''asd' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `'` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value '''asd' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_7.phpt b/src/tests/broken_configuration/broken_conf_local_var_7.phpt
new file mode 100644
index 0000000..9f2548b
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_7.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_7.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `->` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value 'asd-->' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `->` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value 'asd-->' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_8.phpt b/src/tests/broken_configuration/broken_conf_local_var_8.phpt
new file mode 100644
index 0000000..d4d9d35
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_8.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_8.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `]` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value 'asd[asd]"asd"' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `]` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value 'asd[asd]"asd"' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_local_var_9.phpt b/src/tests/broken_configuration/broken_conf_local_var_9.phpt
new file mode 100644
index 0000000..972e398
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_local_var_9.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_local_var_9.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid `]` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value 'asd[asd]'asd'' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `]` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value 'asd[asd]'asd'' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_lots_of_quotes.phpt b/src/tests/broken_configuration/broken_conf_lots_of_quotes.phpt
new file mode 100644
index 0000000..afed2f8
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_lots_of_quotes.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Configuration line with too many quotes
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_lots_of_quotes.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"this\"is a weird\"\"\"cookie\"name"");': it doesn't look like a valid string on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"this\"is a weird\"\"\"cookie\"name"");': it doesn't look like a valid string on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_missing_script.phpt b/src/tests/broken_configuration/broken_conf_missing_script.phpt
new file mode 100644
index 0000000..70e508d
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_missing_script.phpt
@@ -0,0 +1,16 @@
1--TEST--
2Invalid configuration file for upload
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/broken_conf_missing_script.ini
6--FILE--
7<?php
8echo 1;
9?>
10--EXPECTF--
11PHP Fatal error: [snuffleupagus][config] The `script` directive is mandatory in '.enable();' on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] The `script` directive is mandatory in '.enable();' on line 1 in Unknown on line 0
14
15Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
16Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive.phpt
new file mode 100644
index 0000000..6cc9bd6
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive.phpt
@@ -0,0 +1,11 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").value_r("^id$").drop();': '.value' and '.regexp' are mutually exclusive on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").value_r("^id$").drop();': '.value' and '.regexp' are mutually exclusive on line 1 in Unknown on line 0 \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive10.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive10.phpt
new file mode 100644
index 0000000..0231c05
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive10.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration - enabled/disabled readonly
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive10.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] A rule can't be enabled and disabled on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] A rule can't be enabled and disabled on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive11.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive11.phpt
new file mode 100644
index 0000000..507d7fa
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive11.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration - ret and var are mutually exclusives
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive11.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("strcmp").drop().ret("hip").var("hop");':`ret` and `var` are mutually exclusive on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("strcmp").drop().ret("hip").var("hop");':`ret` and `var` are mutually exclusive on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive12.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive12.phpt
new file mode 100644
index 0000000..d823de9
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive12.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration - ret and value are mutually exclusive
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive12.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("strcmp").drop().ret("hip").value("hop");':`ret` and `value` are mutually exclusive on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("strcmp").drop().ret("hip").value("hop");':`ret` and `value` are mutually exclusive on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive2.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive2.phpt
new file mode 100644
index 0000000..570b917
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive2.phpt
@@ -0,0 +1,11 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive2.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").function_r("system").param("id").value("42").drop();': '.r_function' and '.function' are mutually exclusive on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").function_r("system").param("id").value("42").drop();': '.r_function' and '.function' are mutually exclusive on line 1 in Unknown on line 0 \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive3.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive3.phpt
new file mode 100644
index 0000000..e7387eb
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive3.phpt
@@ -0,0 +1,11 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive3.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").filename_r("^id$").filename("pouet.txt").drop();': '.r_filename' and '.filename' are mutually exclusive on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").filename_r("^id$").filename("pouet.txt").drop();': '.r_filename' and '.filename' are mutually exclusive on line 1 in Unknown on line 0 \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive4.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive4.phpt
new file mode 100644
index 0000000..c979f56
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive4.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive4.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").param_r("^id$").drop();':'.r_param', '.param' and '.pos' are mutually exclusive on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").param_r("^id$").drop();':'.r_param', '.param' and '.pos' are mutually exclusive on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive5.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive5.phpt
new file mode 100644
index 0000000..b23fba6
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive5.phpt
@@ -0,0 +1,11 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive5.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").ret("0").drop().ret_r("^0$");': '.r_ret' and '.ret' are mutually exclusive on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").ret("0").drop().ret_r("^0$");': '.r_ret' and '.ret' are mutually exclusive on line 1 in Unknown on line 0 \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive6.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive6.phpt
new file mode 100644
index 0000000..1c4686b
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive6.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive6.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").ret_r("^0$").drop();':`ret` and `param` are mutually exclusive on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").ret_r("^0$").drop();':`ret` and `param` are mutually exclusive on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive7.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive7.phpt
new file mode 100644
index 0000000..22abf79
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive7.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive7.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").ret("0").drop().allow();': The rule must either be a `drop` or `allow` one on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.function("system").ret("0").drop().allow();': The rule must either be a `drop` or `allow` one on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive8.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive8.phpt
new file mode 100644
index 0000000..6a95234
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive8.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive8.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.ret("0").drop();': must take a function name on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Invalid configuration line: 'sp.disabled_functions.ret("0").drop();': must take a function name on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_mutually_exclusive9.phpt b/src/tests/broken_configuration/broken_conf_mutually_exclusive9.phpt
new file mode 100644
index 0000000..9436c24
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_mutually_exclusive9.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration - enabled/disabled unserialize
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive9.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] A rule can't be enabled and disabled on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] A rule can't be enabled and disabled on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_no_cookie_action.phpt b/src/tests/broken_configuration/broken_conf_no_cookie_action.phpt
new file mode 100644
index 0000000..a354b8b
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_no_cookie_action.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Bad config, invalid action.
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_cookie_action.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] You must specify a at least one action to a cookie on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] You must specify a at least one action to a cookie on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_no_cookie_name.phpt b/src/tests/broken_configuration/broken_conf_no_cookie_name.phpt
new file mode 100644
index 0000000..e769edb
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_no_cookie_name.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Borken configuration - encrypted cookie with no name
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/config_encrypted_cookies_noname.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] You must specify a cookie name/regexp on line 2 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] You must specify a cookie name/regexp on line 2 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_no_file_specified.phpt b/src/tests/broken_configuration/broken_conf_no_file_specified.phpt
new file mode 100644
index 0000000..10314ec
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_no_file_specified.phpt
@@ -0,0 +1,10 @@
1--TEST--
2Broken configuration - No configuration file specified
3--INI--
4--SKIPIF--
5<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
6--FILE--
7<?php echo "1\n"; ?>
8--EXPECT--
9Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
10Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_nonexisting_script.phpt b/src/tests/broken_configuration/broken_conf_nonexisting_script.phpt
new file mode 100644
index 0000000..16583d3
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_nonexisting_script.phpt
@@ -0,0 +1,16 @@
1--TEST--
2Invalid configuration file for upload
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/broken_conf_nonexisting_script.ini
6--FILE--
7<?php
8echo 1;
9?>
10--EXPECTF--
11PHP Fatal error: [snuffleupagus][config] The `script` (./non_existing_script.sh) doesn't exist on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] The `script` (./non_existing_script.sh) doesn't exist on line 1 in Unknown on line 0
14
15Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
16Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_quotes.phpt b/src/tests/broken_configuration/broken_conf_quotes.phpt
new file mode 100644
index 0000000..845f7ee
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_quotes.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration - missing quote
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_quotes.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] You forgot to close a bracket. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value '_SERVER[PHP_SELF' for `var` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] You forgot to close a bracket. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value '_SERVER[PHP_SELF' for `var` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_readonly_exec.phpt b/src/tests/broken_configuration/broken_conf_readonly_exec.phpt
new file mode 100644
index 0000000..cc5758f
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_readonly_exec.phpt
@@ -0,0 +1,16 @@
1--TEST--
2Invalid configuration file for readonly_exec
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/broken_conf_readonly_exec.ini
6--FILE--
7<?php
8echo 1;
9?>
10--EXPECTF--
11PHP Fatal error: [snuffleupagus][config] Trailing chars '234);' at the end of '.enable(1234);' on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Trailing chars '234);' at the end of '.enable(1234);' on line 1 in Unknown on line 0
14
15Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
16Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_samesite.phpt b/src/tests/broken_configuration/broken_conf_samesite.phpt
new file mode 100644
index 0000000..99965d4
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_samesite.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Bad config, invalid samesite type.
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_cookie_samesite.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] nop is an invalid value to samesite (expected Lax or Strict) on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] nop is an invalid value to samesite (expected Lax or Strict) on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_session_encryption.phpt b/src/tests/broken_configuration/broken_conf_session_encryption.phpt
new file mode 100644
index 0000000..b6a0ea7
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_session_encryption.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken config, session encryption
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_session_encryption.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Trailing chars 'nvalid value :/);' at the end of '.encrypt(invalid value :/);' on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Trailing chars 'nvalid value :/);' at the end of '.encrypt(invalid value :/);' on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_session_encryption_without_encryption_key.phpt b/src/tests/broken_configuration/broken_conf_session_encryption_without_encryption_key.phpt
new file mode 100644
index 0000000..c90a154
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_session_encryption_without_encryption_key.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration - encrypted session without encryption key
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_session_encryption_without_encryption_key.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] You're trying to use the session cookie encryption feature on line 2 without having set the `.secret_key` option in`sp.global`: please set it first in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] You're trying to use the session cookie encryption feature on line 2 without having set the `.secret_key` option in`sp.global`: please set it first in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_session_encryption_without_env_var.phpt b/src/tests/broken_configuration/broken_conf_session_encryption_without_env_var.phpt
new file mode 100644
index 0000000..c2654e4
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_session_encryption_without_env_var.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken configuration - encrypted session without env var
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_session_encryption_without_env_var.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] You're trying to use the session cookie encryption feature on line 2 without having set the `.cookie_env_var` option in`sp.global`: please set it first in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] You're trying to use the session cookie encryption feature on line 2 without having set the `.cookie_env_var` option in`sp.global`: please set it first in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_shown_in_phpinfo.phpt b/src/tests/broken_configuration/broken_conf_shown_in_phpinfo.phpt
new file mode 100644
index 0000000..eb7eae6
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_shown_in_phpinfo.phpt
@@ -0,0 +1,28 @@
1--TEST--
2Broken configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_config_regexp.ini
7--FILE--
8<?php
9ob_start();
10phpinfo();
11$info = ob_get_clean();
12ob_get_clean();
13if (strstr($info, 'Valid config => no') !== FALSE) {
14 echo "win";
15} else {
16 echo "lose";
17}
18?>
19--EXPECTF--
20PHP Fatal error: [snuffleupagus][config] Failed to compile '*.': %s on line 1. in Unknown on line 0
21PHP Fatal error: [snuffleupagus][config] '.filename_r()' is expecting a valid regexp, and not '"*."' on line 1 in Unknown on line 0
22
23Fatal error: [snuffleupagus][config] Failed to compile '*.': %s on line 1. in Unknown on line 0
24
25Fatal error: [snuffleupagus][config] '.filename_r()' is expecting a valid regexp, and not '"*."' on line 1 in Unknown on line 0
26
27Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
28Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_truncated.phpt b/src/tests/broken_configuration/broken_conf_truncated.phpt
new file mode 100644
index 0000000..f0c5887
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_truncated.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Bad boolean value in configuration
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/config_broken_conf_truncated.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][error] A valid string as parameter is expected on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][error] A valid string as parameter is expected on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_unserialize.phpt b/src/tests/broken_configuration/broken_conf_unserialize.phpt
new file mode 100644
index 0000000..d7a924a
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_unserialize.phpt
@@ -0,0 +1,16 @@
1--TEST--
2Invalid configuration file for unserialize
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/broken_conf_unserialize.ini
6--FILE--
7<?php
8echo 1;
9?>
10--EXPECTF--
11PHP Fatal error: [snuffleupagus][config] Trailing chars '234);' at the end of '.enable(1234);' on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Trailing chars '234);' at the end of '.enable(1234);' on line 1 in Unknown on line 0
14
15Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
16Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_upload_validation.phpt b/src/tests/broken_configuration/broken_conf_upload_validation.phpt
new file mode 100644
index 0000000..332a649
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_upload_validation.phpt
@@ -0,0 +1,16 @@
1--TEST--
2Invalid configuration file for upload validation
3--INI--
4file_uploads=1
5sp.configuration_file={PWD}/config/borken_conf_upload_validation.ini
6--FILE--
7<?php
8echo 1;
9?>
10--EXPECTF--
11PHP Fatal error: [snuffleupagus][error] A valid string as parameter is expected on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][error] A valid string as parameter is expected on line 1 in Unknown on line 0
14
15Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
16Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_weird_keyword.phpt b/src/tests/broken_configuration/broken_conf_weird_keyword.phpt
new file mode 100644
index 0000000..e3c1239
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_weird_keyword.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Bad config, unknown keyword
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_weird_keyword.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][config] Trailing chars '.not_a_valid_keyword("test");' at the end of '.enable().not_a_valid_keyword("test");' on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][config] Trailing chars '.not_a_valid_keyword("test");' at the end of '.enable().not_a_valid_keyword("test");' on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_wrapper_whitelist.phpt b/src/tests/broken_configuration/broken_conf_wrapper_whitelist.phpt
new file mode 100644
index 0000000..ea147ac
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_wrapper_whitelist.phpt
@@ -0,0 +1,18 @@
1--TEST--
2Broken configuration with invalid token for wrapper whitelist
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_wrapper_whitelist.ini
7sp.allow_broken_configuration=Off
8--FILE--
9<?php
10echo 1337;
11?>
12--EXPECT--
13PHP Fatal error: [snuffleupagus][config] Trailing chars '.invalid_param();' at the end of '.invalid_param();' on line 1 in Unknown on line 0
14
15Fatal error: [snuffleupagus][config] Trailing chars '.invalid_param();' at the end of '.invalid_param();' on line 1 in Unknown on line 0
16
17Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
18Could not startup.
diff --git a/src/tests/broken_configuration/broken_conf_wrong_quotes.phpt b/src/tests/broken_configuration/broken_conf_wrong_quotes.phpt
new file mode 100644
index 0000000..119bbe7
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_wrong_quotes.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Configuration line with too many quotes
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_wrong_quotes.ini
7--FILE--
8--EXPECT--
9PHP Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"\)': it doesn't look like a valid string on line 1 in Unknown on line 0
10
11Fatal error: [snuffleupagus][error] There is an issue with the parsing of '"\)': it doesn't look like a valid string on line 1 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_conf_wrong_type.phpt b/src/tests/broken_configuration/broken_conf_wrong_type.phpt
new file mode 100644
index 0000000..b90d6ff
--- /dev/null
+++ b/src/tests/broken_configuration/broken_conf_wrong_type.phpt
@@ -0,0 +1,14 @@
1--TEST--
2Broken conf with wrong type
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) die "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_conf_wrong_type.ini
7--FILE--
8--EXPECTF--
9PHP Fatal error: [snuffleupagus][error] .ret_type() is expecting a valid php type ('false', 'true', 'array'. 'object', 'long', 'double', 'null', 'resource', 'reference', 'undef') on line 5 in Unknown on line 0
10
11Fatal error: [snuffleupagus][error] .ret_type() is expecting a valid php type ('false', 'true', 'array'. 'object', 'long', 'double', 'null', 'resource', 'reference', 'undef') on line 5 in Unknown on line 0
12
13Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
14Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_invalid_client_ip4.phpt b/src/tests/broken_configuration/broken_invalid_client_ip4.phpt
new file mode 100644
index 0000000..e8a5260
--- /dev/null
+++ b/src/tests/broken_configuration/broken_invalid_client_ip4.phpt
@@ -0,0 +1,16 @@
1--TEST--
2Invalid client IP
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) die "skip"; ?>
5--ENV--
6return <<<EOF
7REMOTE_ADDR=xyz
8EOF;
9--INI--
10sp.configuration_file={PWD}/config/disabled_functions_cidr.ini
11--FILE--
12<?php
13strpos("1337", "1");
14?>
15--EXPECTF--
16Fatal error: [snuffleupagus][cidr_match] Weird ip (xyz) family in %a/broken_invalid_client_ip4.php on line 2 \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_regexp.phpt b/src/tests/broken_configuration/broken_regexp.phpt
new file mode 100644
index 0000000..2fc130d
--- /dev/null
+++ b/src/tests/broken_configuration/broken_regexp.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken regexp
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) die "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/broken_regexp.ini
7--FILE--
8--EXPECTF--
9PHP Fatal error: [snuffleupagus][config] Failed to compile '^$[': missing terminating ] for character class on line 1. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] '.value_r()' is expecting a valid regexp, and not '"^$["' on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Failed to compile '^$[': missing terminating ] for character class on line 1. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] '.value_r()' is expecting a valid regexp, and not '"^$["' on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/broken_unmatching_brackets.phpt b/src/tests/broken_configuration/broken_unmatching_brackets.phpt
new file mode 100644
index 0000000..33eaaa7
--- /dev/null
+++ b/src/tests/broken_configuration/broken_unmatching_brackets.phpt
@@ -0,0 +1,17 @@
1--TEST--
2Broken configuration - unmatching brackets
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) die "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/config_unmatching_brackets.ini
7--FILE--
8--EXPECTF--
9PHP Fatal error: [snuffleupagus][config] Invalid `]` position. in Unknown on line 0
10PHP Fatal error: [snuffleupagus][config] Invalid value 'arr[b]]]]]' for `param` on line 1 in Unknown on line 0
11
12Fatal error: [snuffleupagus][config] Invalid `]` position. in Unknown on line 0
13
14Fatal error: [snuffleupagus][config] Invalid value 'arr[b]]]]]' for `param` on line 1 in Unknown on line 0
15
16Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
17Could not startup. \ No newline at end of file
diff --git a/src/tests/broken_configuration/config/borken_conf_enable_disable.ini b/src/tests/broken_configuration/config/borken_conf_enable_disable.ini
new file mode 100644
index 0000000..4e95294
--- /dev/null
+++ b/src/tests/broken_configuration/config/borken_conf_enable_disable.ini
@@ -0,0 +1 @@
sp.global_strict.disable().enable();
diff --git a/src/tests/broken_configuration/config/borken_conf_upload_validation.ini b/src/tests/broken_configuration/config/borken_conf_upload_validation.ini
new file mode 100644
index 0000000..7c94185
--- /dev/null
+++ b/src/tests/broken_configuration/config/borken_conf_upload_validation.ini
@@ -0,0 +1 @@
sp.upload_validation.script(
diff --git a/src/tests/broken_configuration/config/broken_conf.ini b/src/tests/broken_configuration/config/broken_conf.ini
new file mode 100644
index 0000000..0595320
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf.ini
@@ -0,0 +1 @@
this is a broken line
diff --git a/src/tests/broken_configuration/config/broken_conf2.ini b/src/tests/broken_configuration/config/broken_conf2.ini
new file mode 100644
index 0000000..fdb6b8f
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf2.ini
@@ -0,0 +1 @@
sp.wrong
diff --git a/src/tests/broken_configuration/config/broken_conf_cookie_action.ini b/src/tests/broken_configuration/config/broken_conf_cookie_action.ini
new file mode 100644
index 0000000..5f07c28
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_cookie_action.ini
@@ -0,0 +1 @@
sp.cookie.name("my_cookie_name");
diff --git a/src/tests/broken_configuration/config/broken_conf_cookie_encryption_without_encryption_key.ini b/src/tests/broken_configuration/config/broken_conf_cookie_encryption_without_encryption_key.ini
new file mode 100644
index 0000000..a100bd8
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_cookie_encryption_without_encryption_key.ini
@@ -0,0 +1,2 @@
1sp.global.cookie_env_var("MY_SUPER_ENV_VAR_YAY");
2sp.cookie.name("my_cookie_name").encrypt();
diff --git a/src/tests/broken_configuration/config/broken_conf_cookie_encryption_without_env_var.ini b/src/tests/broken_configuration/config/broken_conf_cookie_encryption_without_env_var.ini
new file mode 100644
index 0000000..54cb101
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_cookie_encryption_without_env_var.ini
@@ -0,0 +1,2 @@
1sp.global.secret_key("super secret encryption key");
2sp.cookie.name("my_cookie_name").encrypt();
diff --git a/src/tests/broken_configuration/config/broken_conf_cookie_name_and_regexp.ini b/src/tests/broken_configuration/config/broken_conf_cookie_name_and_regexp.ini
new file mode 100644
index 0000000..503889b
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_cookie_name_and_regexp.ini
@@ -0,0 +1,2 @@
1sp.global.secret_key("abcdef").cookie_env_var("REMOTE_ADDR");
2sp.cookie.name("my_cookie_name").name_r("my_cookie_regexp").encrypt();
diff --git a/src/tests/broken_configuration/config/broken_conf_cookie_samesite.ini b/src/tests/broken_configuration/config/broken_conf_cookie_samesite.ini
new file mode 100644
index 0000000..acc4aa0
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_cookie_samesite.ini
@@ -0,0 +1 @@
sp.cookie.name("my_cookie_name").samesite("nop");
diff --git a/src/tests/broken_configuration/config/broken_conf_eval.ini b/src/tests/broken_configuration/config/broken_conf_eval.ini
new file mode 100644
index 0000000..80ef7e5
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_eval.ini
@@ -0,0 +1 @@
sp.eval_blacklist.list("cos,sin
diff --git a/src/tests/broken_configuration/config/broken_conf_expecting_bool.ini b/src/tests/broken_configuration/config/broken_conf_expecting_bool.ini
new file mode 100644
index 0000000..51c28b2
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_expecting_bool.ini
@@ -0,0 +1,5 @@
1 # this is an example of broken conf
2
3
4 ; this is another comment
5sp.harden_random.enable(1337);
diff --git a/src/tests/broken_configuration/config/broken_conf_invalid_cidr.ini b/src/tests/broken_configuration/config/broken_conf_invalid_cidr.ini
new file mode 100644
index 0000000..b1929c1
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_invalid_cidr.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").drop().cidr("127.0.0.1/42");
diff --git a/src/tests/broken_configuration/config/broken_conf_invalid_cidr6.ini b/src/tests/broken_configuration/config/broken_conf_invalid_cidr6.ini
new file mode 100644
index 0000000..5e91faf
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_invalid_cidr6.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").drop().cidr("2001:0db8:0000:0000:0000:ff00:0042:8329/ZZZ");
diff --git a/src/tests/broken_configuration/config/broken_conf_invalid_cidr6_no_slash.ini b/src/tests/broken_configuration/config/broken_conf_invalid_cidr6_no_slash.ini
new file mode 100644
index 0000000..067209f
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_invalid_cidr6_no_slash.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").drop().cidr("2001:0db8:0000:0000:0000:ff00:0042:8329");
diff --git a/src/tests/broken_configuration/config/broken_conf_invalid_cidr6_too_big.ini b/src/tests/broken_configuration/config/broken_conf_invalid_cidr6_too_big.ini
new file mode 100644
index 0000000..f82b18b
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_invalid_cidr6_too_big.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").drop().cidr("2001:0db8:0000:0000:0000:ff00:0042:8329/13337");
diff --git a/src/tests/broken_configuration/config/broken_conf_invalid_cidr_value.ini b/src/tests/broken_configuration/config/broken_conf_invalid_cidr_value.ini
new file mode 100644
index 0000000..06a56bd
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_invalid_cidr_value.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").drop().cidr("
diff --git a/src/tests/broken_configuration/config/broken_conf_invalid_filename.ini b/src/tests/broken_configuration/config/broken_conf_invalid_filename.ini
new file mode 100644
index 0000000..1be3b51
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_invalid_filename.ini
@@ -0,0 +1 @@
sp.disable_function.function("sprintf").filename("wrong file name").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_invalid_type.ini b/src/tests/broken_configuration/config/broken_conf_invalid_type.ini
new file mode 100644
index 0000000..c52994e
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_invalid_type.ini
@@ -0,0 +1 @@
sp.disable_function.function("strpos").ret_type("totally_wrong"_type")
diff --git a/src/tests/broken_configuration/config/broken_conf_key_value.ini b/src/tests/broken_configuration/config/broken_conf_key_value.ini
new file mode 100644
index 0000000..a0edaf2
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_key_value.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("").value("").key("").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_line_empty_string.ini b/src/tests/broken_configuration/config/broken_conf_line_empty_string.ini
new file mode 100644
index 0000000..dfa5520
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_line_empty_string.ini
@@ -0,0 +1 @@
sp.cookie.name(
diff --git a/src/tests/broken_configuration/config/broken_conf_line_no_closing.ini b/src/tests/broken_configuration/config/broken_conf_line_no_closing.ini
new file mode 100644
index 0000000..6a8c922
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_line_no_closing.ini
@@ -0,0 +1 @@
sp.cookie.name("123"
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_1.ini b/src/tests/broken_configuration/config/broken_conf_local_var_1.ini
new file mode 100644
index 0000000..ae5165c
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_1.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("]").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_10.ini b/src/tests/broken_configuration/config/broken_conf_local_var_10.ini
new file mode 100644
index 0000000..93dd07f
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_10.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("asd[asd]asd").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_11.ini b/src/tests/broken_configuration/config/broken_conf_local_var_11.ini
new file mode 100644
index 0000000..028b1bd
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_11.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").param("asd::").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_12.ini b/src/tests/broken_configuration/config/broken_conf_local_var_12.ini
new file mode 100644
index 0000000..a151960
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_12.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_13.ini b/src/tests/broken_configuration/config/broken_conf_local_var_13.ini
new file mode 100644
index 0000000..e7c9778
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_13.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("asd->asd").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_14.ini b/src/tests/broken_configuration/config/broken_conf_local_var_14.ini
new file mode 100644
index 0000000..6c98ec3
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_14.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("$i+valid var name ").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_15.ini b/src/tests/broken_configuration/config/broken_conf_local_var_15.ini
new file mode 100644
index 0000000..a8dc5a4
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_15.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("$i$$!@#->qwe").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_16.ini b/src/tests/broken_configuration/config/broken_conf_local_var_16.ini
new file mode 100644
index 0000000..550719b
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_16.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("\"").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_2.ini b/src/tests/broken_configuration/config/broken_conf_local_var_2.ini
new file mode 100644
index 0000000..145a3b5
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_2.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("\"\"asd").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_3.ini b/src/tests/broken_configuration/config/broken_conf_local_var_3.ini
new file mode 100644
index 0000000..5d89076
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_3.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("\$qwe->::").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_4.ini b/src/tests/broken_configuration/config/broken_conf_local_var_4.ini
new file mode 100644
index 0000000..3ec073b
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_4.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("\"asd\"asd[]").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_5.ini b/src/tests/broken_configuration/config/broken_conf_local_var_5.ini
new file mode 100644
index 0000000..cd350b6
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_5.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("'asd'asd[]").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_6.ini b/src/tests/broken_configuration/config/broken_conf_local_var_6.ini
new file mode 100644
index 0000000..02f4f1a
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_6.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("''asd").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_7.ini b/src/tests/broken_configuration/config/broken_conf_local_var_7.ini
new file mode 100644
index 0000000..abbd223
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_7.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("asd-->").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_8.ini b/src/tests/broken_configuration/config/broken_conf_local_var_8.ini
new file mode 100644
index 0000000..fd18487
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_8.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("asd[asd]\"asd\"").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_local_var_9.ini b/src/tests/broken_configuration/config/broken_conf_local_var_9.ini
new file mode 100644
index 0000000..a311b86
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_local_var_9.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").var("asd[asd]\'asd\'").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_lots_of_quotes.ini b/src/tests/broken_configuration/config/broken_conf_lots_of_quotes.ini
new file mode 100644
index 0000000..189a10d
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_lots_of_quotes.ini
@@ -0,0 +1 @@
sp.cookie.name("this\"is a weird\"\"\"cookie\"name"");
diff --git a/src/tests/broken_configuration/config/broken_conf_missing_script.ini b/src/tests/broken_configuration/config/broken_conf_missing_script.ini
new file mode 100644
index 0000000..a46f590
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_missing_script.ini
@@ -0,0 +1 @@
sp.upload_validation.enable();
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive.ini
new file mode 100644
index 0000000..7ea483f
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").param("id").value("42").value_r("^id$").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive10.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive10.ini
new file mode 100644
index 0000000..da8426e
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive10.ini
@@ -0,0 +1 @@
sp.readonly_exec.enable().disable();
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive11.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive11.ini
new file mode 100644
index 0000000..cab163f
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive11.ini
@@ -0,0 +1 @@
sp.disable_function.function("strcmp").drop().ret("hip").var("hop");
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive12.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive12.ini
new file mode 100644
index 0000000..fe140db
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive12.ini
@@ -0,0 +1 @@
sp.disable_function.function("strcmp").drop().ret("hip").value("hop");
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive2.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive2.ini
new file mode 100644
index 0000000..3ff3ca7
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive2.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").function_r("system").param("id").value("42").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive3.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive3.ini
new file mode 100644
index 0000000..f4f7604
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive3.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").param("id").value("42").filename_r("^id$").filename("pouet.txt").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive4.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive4.ini
new file mode 100644
index 0000000..c38a727
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive4.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").param("id").value("42").param_r("^id$").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive5.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive5.ini
new file mode 100644
index 0000000..254b2a3
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive5.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").ret("0").drop().ret_r("^0$");
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive6.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive6.ini
new file mode 100644
index 0000000..7c6712c
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive6.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").param("id").value("42").ret_r("^0$").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive7.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive7.ini
new file mode 100644
index 0000000..feb3486
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive7.ini
@@ -0,0 +1 @@
sp.disable_function.function("system").ret("0").drop().allow();
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive8.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive8.ini
new file mode 100644
index 0000000..c9c9ea2
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive8.ini
@@ -0,0 +1 @@
sp.disable_function.ret("0").drop();
diff --git a/src/tests/broken_configuration/config/broken_conf_mutually_exclusive9.ini b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive9.ini
new file mode 100644
index 0000000..7bf6a62
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_mutually_exclusive9.ini
@@ -0,0 +1 @@
sp.unserialize_hmac.enable().disable();
diff --git a/src/tests/broken_configuration/config/broken_conf_nonexisting_script.ini b/src/tests/broken_configuration/config/broken_conf_nonexisting_script.ini
new file mode 100644
index 0000000..8327438
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_nonexisting_script.ini
@@ -0,0 +1 @@
sp.upload_validation.enable().script("./non_existing_script.sh");
diff --git a/src/tests/broken_configuration/config/broken_conf_quotes.ini b/src/tests/broken_configuration/config/broken_conf_quotes.ini
new file mode 100644
index 0000000..eac8739
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_quotes.ini
@@ -0,0 +1,3 @@
1sp.disable_function.function("system").filename("/static_pages/index.php").var("_SERVER[PHP_SELF").value_r("\"").drop().alias("XSS");
2sp.disable_function.filename("include/imageobject_im.class.php").function("exec").var("CONFIG[im_options]).value_r("[^a-z0-9]").drop();
3
diff --git a/src/tests/broken_configuration/config/broken_conf_readonly_exec.ini b/src/tests/broken_configuration/config/broken_conf_readonly_exec.ini
new file mode 100644
index 0000000..9e11313
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_readonly_exec.ini
@@ -0,0 +1 @@
sp.readonly_exec.enable(1234);
diff --git a/src/tests/broken_configuration/config/broken_conf_session_encryption.ini b/src/tests/broken_configuration/config/broken_conf_session_encryption.ini
new file mode 100644
index 0000000..66b7956
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_session_encryption.ini
@@ -0,0 +1 @@
sp.session.encrypt(invalid value :/);
diff --git a/src/tests/broken_configuration/config/broken_conf_session_encryption_without_encryption_key.ini b/src/tests/broken_configuration/config/broken_conf_session_encryption_without_encryption_key.ini
new file mode 100644
index 0000000..2b6f674
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_session_encryption_without_encryption_key.ini
@@ -0,0 +1,2 @@
1sp.global.cookie_env_var("MY_SUPER_ENV_VAR_YAY");
2sp.session.encrypt();
diff --git a/src/tests/broken_configuration/config/broken_conf_session_encryption_without_env_var.ini b/src/tests/broken_configuration/config/broken_conf_session_encryption_without_env_var.ini
new file mode 100644
index 0000000..43caf4a
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_session_encryption_without_env_var.ini
@@ -0,0 +1,2 @@
1sp.global.secret_key("super secret key, shhhh");
2sp.session.encrypt();
diff --git a/src/tests/broken_configuration/config/broken_conf_to_few_args.ini b/src/tests/broken_configuration/config/broken_conf_to_few_args.ini
new file mode 100644
index 0000000..89e19be
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_to_few_args.ini
@@ -0,0 +1 @@
sp.harden_random.enable();
diff --git a/src/tests/broken_configuration/config/broken_conf_unserialize.ini b/src/tests/broken_configuration/config/broken_conf_unserialize.ini
new file mode 100644
index 0000000..9cdc9a6
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_unserialize.ini
@@ -0,0 +1 @@
sp.unserialize_hmac.enable(1234);
diff --git a/src/tests/broken_configuration/config/broken_conf_weird_keyword.ini b/src/tests/broken_configuration/config/broken_conf_weird_keyword.ini
new file mode 100644
index 0000000..bf5e7f5
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_weird_keyword.ini
@@ -0,0 +1 @@
sp.harden_random.enable().not_a_valid_keyword("test");
diff --git a/src/tests/broken_configuration/config/broken_conf_wrapper_whitelist.ini b/src/tests/broken_configuration/config/broken_conf_wrapper_whitelist.ini
new file mode 100644
index 0000000..b8e08a8
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_wrapper_whitelist.ini
@@ -0,0 +1 @@
sp.wrappers_whitelist.invalid_param();
diff --git a/src/tests/broken_configuration/config/broken_conf_wrong_quotes.ini b/src/tests/broken_configuration/config/broken_conf_wrong_quotes.ini
new file mode 100644
index 0000000..ff41f93
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_wrong_quotes.ini
@@ -0,0 +1 @@
sp.cookie.name("\)
diff --git a/src/tests/broken_configuration/config/broken_conf_wrong_type.ini b/src/tests/broken_configuration/config/broken_conf_wrong_type.ini
new file mode 100644
index 0000000..b2943db
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_conf_wrong_type.ini
@@ -0,0 +1,5 @@
1sp.disable_function.function("strpos").ret_type("undef").drop().alias("Return value is undef");
2sp.disable_function.function("strpos").ret_type("null").drop().alias("Return value is null");
3sp.disable_function.function("strpos").ret_type("object").drop().alias("Return value is object");
4sp.disable_function.function("strpos").ret_type("reference").drop().alias("Return value is reference");
5sp.disable_function.function("strpos").ret_type("totally_wrong_type").drop().alias("Return value is FALSE");
diff --git a/src/tests/broken_configuration/config/broken_config_regexp.ini b/src/tests/broken_configuration/config/broken_config_regexp.ini
new file mode 100644
index 0000000..62bed11
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_config_regexp.ini
@@ -0,0 +1 @@
sp.disable_function.function_r("^system$").filename_r("*.").drop();
diff --git a/src/tests/broken_configuration/config/broken_config_regexp_no_closing_paren.ini b/src/tests/broken_configuration/config/broken_config_regexp_no_closing_paren.ini
new file mode 100644
index 0000000..93e150b
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_config_regexp_no_closing_paren.ini
@@ -0,0 +1 @@
sp.disable_function.function_r("^system$").drop().filename_r("*."
diff --git a/src/tests/broken_configuration/config/broken_regexp.ini b/src/tests/broken_configuration/config/broken_regexp.ini
new file mode 100644
index 0000000..8e4bf69
--- /dev/null
+++ b/src/tests/broken_configuration/config/broken_regexp.ini
@@ -0,0 +1 @@
sp.disable_function.function("AwesomeClass::method3").param("a").drop().value_r("^$[");
diff --git a/src/tests/broken_configuration/config/config_broken_conf_truncated.ini b/src/tests/broken_configuration/config/config_broken_conf_truncated.ini
new file mode 100644
index 0000000..bf05dfb
--- /dev/null
+++ b/src/tests/broken_configuration/config/config_broken_conf_truncated.ini
@@ -0,0 +1 @@
sp.disable_function.function("").param(no quote, omg!
diff --git a/src/tests/broken_configuration/config/config_encrypted_cookies_noname.ini b/src/tests/broken_configuration/config/config_encrypted_cookies_noname.ini
new file mode 100644
index 0000000..048e404
--- /dev/null
+++ b/src/tests/broken_configuration/config/config_encrypted_cookies_noname.ini
@@ -0,0 +1,3 @@
1sp.global.secret_key("abcdef").cookie_env_var("REMOTE_ADDR");
2sp.cookie.name("").encrypt();
3sp.auto_cookie_secure.enable();
diff --git a/src/tests/broken_configuration/config/config_encrypted_regexp_cookies_bad_regexp.ini b/src/tests/broken_configuration/config/config_encrypted_regexp_cookies_bad_regexp.ini
new file mode 100644
index 0000000..4fe92fd
--- /dev/null
+++ b/src/tests/broken_configuration/config/config_encrypted_regexp_cookies_bad_regexp.ini
@@ -0,0 +1,3 @@
1sp.global.secret_key("abcdef").cookie_env_var("REMOTE_ADDR");
2sp.cookie.name_r("^super_co[a-z+$").encrypt();
3sp.auto_cookie_secure.enable();
diff --git a/src/tests/broken_configuration/config/config_unmatching_brackets.ini b/src/tests/broken_configuration/config/config_unmatching_brackets.ini
new file mode 100644
index 0000000..45fa4fe
--- /dev/null
+++ b/src/tests/broken_configuration/config/config_unmatching_brackets.ini
@@ -0,0 +1 @@
sp.disable_function.function("foo").param("arr[b]]]]]").value("aaa").alias("4").drop();
diff --git a/src/tests/broken_configuration/config/disabled_functions_cidr.ini b/src/tests/broken_configuration/config/disabled_functions_cidr.ini
new file mode 100644
index 0000000..f69ce07
--- /dev/null
+++ b/src/tests/broken_configuration/config/disabled_functions_cidr.ini
@@ -0,0 +1,9 @@
1sp.disable_function.function("system").drop().cidr("2001:ab9:a::123/64");
2sp.disable_function.function("system").drop().cidr("192.168.0.1/16");
3sp.disable_function.function("system").drop().cidr("127.0.0.1/8");
4sp.disable_function.function("printf").drop().cidr("10.0.0.1/8");
5sp.disable_function.function("strpos").drop().cidr("127.0.0.2/4");
6sp.disable_function.function("strpos").drop().cidr("::ffff:192.0.2.128/128");
7sp.disable_function.function("strpos").drop().cidr("2001:ab9:a::123/64");
8sp.disable_function.function("strpos").drop().cidr("2001:0db8:f000:f000:f000:ff00:0042:8329/124");
9sp.disable_function.function("printf").drop().cidr("2002:0db8:0000:0000:0000:ff00:0042:8329/24");
diff --git a/src/tests/broken_configuration/encrypt_regexp_cookies_bad_regexp.phpt b/src/tests/broken_configuration/encrypt_regexp_cookies_bad_regexp.phpt
new file mode 100644
index 0000000..8272148
--- /dev/null
+++ b/src/tests/broken_configuration/encrypt_regexp_cookies_bad_regexp.phpt
@@ -0,0 +1,22 @@
1--TEST--
2Cookie decryption in ipv4
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) die "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/config_encrypted_regexp_cookies_bad_regexp.ini
7error_reporting=1
8--COOKIE--
9super_cookie=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP3gV9YJZL/pUeNAjCKFW0U2ywmf1CwHzwd2pWM=;awful_cookie=awful_cookie_value;
10--ENV--
11return <<<EOF
12REMOTE_ADDR=127.0.0.1
13HTTP_USER_AGENT=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/59.0.3071.109 Chrome/59.0.3071.109 Safari/537.36
14EOF;
15--FILE--
16<?php var_dump($_COOKIE); ?>
17--EXPECT--
18Fatal error: [snuffleupagus][config] Invalid configuration file in Unknown on line 0
19
20Fatal error: [snuffleupagus][config] Failed to compile '^super_co[a-z+$': missing terminating ] for character class on line 2. in Unknown on line 0
21
22Fatal error: [snuffleupagus][config] '.name_r()' is expecting a valid regexp, and not '"^super_co[a-z+$"' on line 2 in Unknown on line 0