From 82471c1dd33fc13a18a334113b2c220cc06f3d5b Mon Sep 17 00:00:00 2001 From: Andrei Zeliankou Date: Fri, 15 May 2020 04:21:25 +0100 Subject: Tests: added tests for "targets" option. --- test/php/targets/1.php | 4 ++ test/php/targets/2/2.php | 4 ++ test/php/targets/index.php | 4 ++ test/test_php_targets.py | 129 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 141 insertions(+) create mode 100644 test/php/targets/1.php create mode 100644 test/php/targets/2/2.php create mode 100644 test/php/targets/index.php create mode 100644 test/test_php_targets.py (limited to 'test') 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 @@ + 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 @@ + 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 @@ + 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() -- cgit