summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/php/targets/1.php4
-rw-r--r--test/php/targets/2/2.php4
-rw-r--r--test/php/targets/index.php4
-rw-r--r--test/test_php_targets.py129
4 files changed, 141 insertions, 0 deletions
diff --git a/test/php/targets/1.php b/test/php/targets/1.php
new file mode 100644
index 00000000..09f7ae2c
--- /dev/null
+++ b/test/php/targets/1.php
@@ -0,0 +1,4 @@
+<?php
+header('Content-Length: 1');
+echo '1';
+?>
diff --git a/test/php/targets/2/2.php b/test/php/targets/2/2.php
new file mode 100644
index 00000000..0c5d27c6
--- /dev/null
+++ b/test/php/targets/2/2.php
@@ -0,0 +1,4 @@
+<?php
+header('Content-Length: 1');
+echo '2';
+?>
diff --git a/test/php/targets/index.php b/test/php/targets/index.php
new file mode 100644
index 00000000..88239d5f
--- /dev/null
+++ b/test/php/targets/index.php
@@ -0,0 +1,4 @@
+<?php
+header('Content-Length: 5');
+echo 'index';
+?>
diff --git a/test/test_php_targets.py b/test/test_php_targets.py
new file mode 100644
index 00000000..9c1ba2a6
--- /dev/null
+++ b/test/test_php_targets.py
@@ -0,0 +1,129 @@
+import unittest
+from unit.applications.lang.php import TestApplicationPHP
+
+class TestPHPTargets(TestApplicationPHP):
+ prerequisites = {'modules': {'php': 'any'}}
+
+ def test_php_application_targets(self):
+ self.assertIn(
+ 'success',
+ self.conf(
+ {
+ "listeners": {"*:7080": {"pass": "routes"}},
+ "routes": [
+ {
+ "match": {"uri": "/1"},
+ "action": {"pass": "applications/targets/1"},
+ },
+ {
+ "match": {"uri": "/2"},
+ "action": {"pass": "applications/targets/2"},
+ },
+ {"action": {"pass": "applications/targets/default"}},
+ ],
+ "applications": {
+ "targets": {
+ "type": "php",
+ "processes": {"spare": 0},
+ "targets": {
+ "1": {
+ "script": "1.php",
+ "root": self.current_dir + "/php/targets",
+ },
+ "2": {
+ "script": "2.php",
+ "root": self.current_dir
+ + "/php/targets/2",
+ },
+ "default": {
+ "index": "index.php",
+ "root": self.current_dir + "/php/targets",
+ },
+ },
+ }
+ },
+ }
+ ),
+ )
+
+ self.assertEqual(self.get(url='/1')['body'], '1')
+ self.assertEqual(self.get(url='/2')['body'], '2')
+ self.assertEqual(self.get(url='/blah')['status'], 503) # TODO 404
+ self.assertEqual(self.get(url='/')['body'], 'index')
+
+ self.assertIn(
+ 'success',
+ self.conf(
+ "\"1.php\"", 'applications/targets/targets/default/index'
+ ),
+ 'change targets index',
+ )
+ self.assertEqual(self.get(url='/')['body'], '1')
+
+ self.assertIn(
+ 'success',
+ self.conf_delete('applications/targets/targets/default/index'),
+ 'remove targets index',
+ )
+ self.assertEqual(self.get(url='/')['body'], 'index')
+
+ def test_php_application_targets_error(self):
+ self.assertIn(
+ 'success',
+ self.conf(
+ {
+ "listeners": {
+ "*:7080": {"pass": "applications/targets/default"}
+ },
+ "applications": {
+ "targets": {
+ "type": "php",
+ "processes": {"spare": 0},
+ "targets": {
+ "default": {
+ "index": "index.php",
+ "root": self.current_dir + "/php/targets",
+ },
+ },
+ }
+ },
+ }
+ ),
+ 'initial configuration',
+ )
+ self.assertEqual(self.get()['status'], 200)
+
+ self.assertIn(
+ 'error',
+ self.conf(
+ {"pass": "applications/targets/blah"}, 'listeners/*:7080'
+ ),
+ 'invalid targets pass',
+ )
+ self.assertIn(
+ 'error',
+ self.conf(
+ '"' + self.current_dir + '/php/targets\"',
+ 'applications/targets/root',
+ ),
+ 'invalid root',
+ )
+ self.assertIn(
+ 'error',
+ self.conf('"index.php"', 'applications/targets/index'),
+ 'invalid index',
+ )
+ self.assertIn(
+ 'error',
+ self.conf('"index.php"', 'applications/targets/script'),
+ 'invalid script',
+ )
+ self.assertIn(
+ 'error',
+ self.conf_delete('applications/targets/default/root'),
+ 'root remove',
+ )
+
+
+if __name__ == '__main__':
+ TestPHPTargets.main()