summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrey Zelenkov <zelenkov@nginx.com>2018-02-26 19:53:40 +0300
committerAndrey Zelenkov <zelenkov@nginx.com>2018-02-26 19:53:40 +0300
commita89747e97c2a00503260d72082949be4ba97983f (patch)
tree424fea2951f83cde3f73365a0869cff92fad2a39
parent6d79c559b5cebeb2ad7c5dbdb779e3bec26fc08a (diff)
downloadunit-a89747e97c2a00503260d72082949be4ba97983f.tar.gz
unit-a89747e97c2a00503260d72082949be4ba97983f.tar.bz2
Tests: more perl tests.
-rw-r--r--test/perl/header_equal_names/psgi.pl9
-rw-r--r--test/perl/input_read_parts/psgi.pl10
-rw-r--r--test/test_perl_application.py14
-rw-r--r--test/unit.py8
4 files changed, 39 insertions, 2 deletions
diff --git a/test/perl/header_equal_names/psgi.pl b/test/perl/header_equal_names/psgi.pl
new file mode 100644
index 00000000..70bc8aa6
--- /dev/null
+++ b/test/perl/header_equal_names/psgi.pl
@@ -0,0 +1,9 @@
+my $app = sub {
+ my ($environ) = @_;
+
+ return ['200', [
+ 'Content-Length' => 0,
+ 'Set-Cookie' => 'tc=one,two,three',
+ 'Set-Cookie' => 'tc=four,five,six'
+ ], []];
+};
diff --git a/test/perl/input_read_parts/psgi.pl b/test/perl/input_read_parts/psgi.pl
new file mode 100644
index 00000000..f68ac49c
--- /dev/null
+++ b/test/perl/input_read_parts/psgi.pl
@@ -0,0 +1,10 @@
+my $app = sub {
+ my ($environ) = @_;
+
+ $len_1 = $environ->{'psgi.input'}->read(my $body_1, 4);
+ $len_2 = $environ->{'psgi.input'}->read(my $body_2, 4);
+ $len_3 = $environ->{'psgi.input'}->read(my $body_3, 2);
+
+ return ['200', ['Content-Length' => $len_1 + $len_2 + $len_3],
+ [$body_1 . $body_2 . $body_3]];
+};
diff --git a/test/test_perl_application.py b/test/test_perl_application.py
index 3b1e9404..f5a23a69 100644
--- a/test/test_perl_application.py
+++ b/test/test_perl_application.py
@@ -57,6 +57,12 @@ class TestUnitPerlApplication(unit.TestUnitApplicationPerl):
self.assertEqual(self.get()['body'], '', 'read empty')
+ def test_perl_application_input_read_parts(self):
+ self.load('input_read_parts')
+
+ self.assertEqual(self.post(body='0123456789')['body'], '0123456789',
+ 'input read parts')
+
@unittest.expectedFailure
def test_perl_application_input_read_offset(self):
self.load('input_read_offset')
@@ -80,6 +86,12 @@ class TestUnitPerlApplication(unit.TestUnitApplicationPerl):
self.assertIsNotNone(m, 'errors log')
+ def test_perl_application_header_equal_names(self):
+ self.load('header_equal_names')
+
+ self.assertListEqual(self.get()['headers']['Set-Cookie'],
+ ['tc=one,two,three', 'tc=four,five,six'], 'header equal names')
+
def test_perl_application_header_pairs(self):
self.load('header_pairs')
@@ -100,7 +112,7 @@ class TestUnitPerlApplication(unit.TestUnitApplicationPerl):
body = '0123456789' * 1000
- resp = self.get(body=body)['body']
+ resp = self.post(body=body)['body']
self.assertEqual(resp, body, 'body large')
diff --git a/test/unit.py b/test/unit.py
index 48b5497d..8e7ba105 100644
--- a/test/unit.py
+++ b/test/unit.py
@@ -237,7 +237,13 @@ class TestUnitHTTP(TestUnit):
headers = {}
for line in headers_lines:
m = re.search('(.*)\:\s(.*)', line)
- headers[m.group(1)] = m.group(2)
+
+ if m.group(1) not in headers:
+ headers[m.group(1)] = m.group(2)
+ elif isinstance(headers[m.group(1)], list):
+ headers[m.group(1)].append(m.group(2))
+ else:
+ headers[m.group(1)] = [headers[m.group(1)], m.group(2)]
return {
'status': int(status),