summaryrefslogtreecommitdiffhomepage
path: root/test/unit.py
diff options
context:
space:
mode:
authorAndrey Zelenkov <zelenkov@nginx.com>2018-01-15 16:06:26 +0300
committerAndrey Zelenkov <zelenkov@nginx.com>2018-01-15 16:06:26 +0300
commitb217a1e058715b2769f5ac71af22b41ff7616319 (patch)
treed65ebc0562c2817877a7c3c6a805183758f4d125 /test/unit.py
parentb12f1ea42df315defba4c04c6281c1479fe37765 (diff)
downloadunit-b217a1e058715b2769f5ac71af22b41ff7616319.tar.gz
unit-b217a1e058715b2769f5ac71af22b41ff7616319.tar.bz2
Tests: simple python application.
Diffstat (limited to 'test/unit.py')
-rw-r--r--test/unit.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/test/unit.py b/test/unit.py
index b510b42c..d3d00fe0 100644
--- a/test/unit.py
+++ b/test/unit.py
@@ -7,6 +7,7 @@ import shutil
import socket
import tempfile
import unittest
+from requests import Request, Session
from subprocess import call
from multiprocessing import Process
@@ -94,6 +95,12 @@ class TestUnit(unittest.TestCase):
self.testdir + '/unit.log', self.testdir + '/control.unit.sock'):
exit("Could not start unit")
+ def python_application(self, name, code):
+ os.mkdir(self.testdir + '/' + name)
+
+ with open(self.testdir + '/' + name + '/wsgi.py', 'w') as f:
+ f.write(code)
+
def _stop(self):
with open(self.testdir + '/unit.pid', 'r') as f:
pid = f.read().rstrip()
@@ -200,3 +207,39 @@ class TestUnitControl(TestUnit):
def _body_json(self, resp):
m = re.search('.*?\x0d\x0a?\x0d\x0a?(.*)', resp, re.M | re.S)
return json.loads(m.group(1))
+
+class TestUnitHTTP():
+
+ @classmethod
+ def http(self, method, host='127.0.0.1:7080', uri='/', **kwargs):
+ if 'sess' in kwargs:
+ sess = kwargs['sess']
+ else:
+ sess = Session()
+
+ body = None
+ if 'body' in kwargs:
+ body = kwargs['body']
+
+ headers = None
+ if 'headers' in kwargs:
+ headers = kwargs['headers']
+
+ req = Request('POST', 'http://' + host + uri, headers=headers)
+ prepped = req.prepare()
+
+ prepped.body = body
+
+ r = sess.send(prepped)
+
+ if 'keep' not in kwargs:
+ sess.close()
+ return r
+
+ return (r, sess)
+
+ def get(**kwargs):
+ return TestUnitHTTP.http('GET', **kwargs)
+
+ def post(**kwargs):
+ return TestUnitHTTP.http('POST', **kwargs)