summaryrefslogtreecommitdiffstats
path: root/tests/unit/test_wsgi.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test_wsgi.py')
-rw-r--r--tests/unit/test_wsgi.py64
1 files changed, 63 insertions, 1 deletions
diff --git a/tests/unit/test_wsgi.py b/tests/unit/test_wsgi.py
index e4f975e..2dd1035 100644
--- a/tests/unit/test_wsgi.py
+++ b/tests/unit/test_wsgi.py
@@ -18,6 +18,7 @@
import mock
import os
import routes
+import socket
import ssl
import urllib2
import webob
@@ -480,6 +481,13 @@ class WSGIServerTest(utils.BaseTestCase):
self.assertNotEqual(0, server.port)
server.stop()
+ def test_start_random_port_with_ipv6(self):
+ server = wsgi.Service('test_random_port', 0, host="::1")
+ server.start()
+ self.assertEqual("::1", server.host)
+ self.assertNotEqual(0, server.port)
+ server.stop()
+
def test_app(self):
greetings = 'Hello, World!!!'
@@ -517,8 +525,39 @@ class WSGIServerTest(utils.BaseTestCase):
server.stop()
- def test_app_using_router_ssl(self):
+ def test_ipv6_listen_called_with_scope(self):
+ server = wsgi.Service("test_app",
+ 1234,
+ host="fe80::204:acff:fe96:da87%eth0")
+
+ with mock.patch.object(wsgi.eventlet, 'listen') as mock_listen:
+ with mock.patch.object(socket, 'getaddrinfo') as mock_get_addr:
+ mock_get_addr.return_value = [
+ (socket.AF_INET6,
+ socket.SOCK_STREAM,
+ socket.IPPROTO_TCP,
+ '',
+ ('fe80::204:acff:fe96:da87%eth0', 1234, 0, 2))
+ ]
+ server.start()
+
+ mock_get_addr.assert_called_once_with(
+ "fe80::204:acff:fe96:da87%eth0",
+ 1234,
+ socket.AF_UNSPEC,
+ socket.SOCK_STREAM
+ )
+
+ mock_listen.assert_called_once_with(
+ ('fe80::204:acff:fe96:da87%eth0', 1234, 0, 2),
+ backlog=4096,
+ family=socket.AF_INET6
+ )
+
+
+class WSGIServerWithSSLTest(utils.BaseTestCase):
+ def test_app_using_router_ssl(self):
self.config(cert_file=os.path.join(TEST_VAR_DIR, 'certificate.crt'),
group="ssl")
self.config(key_file=os.path.join(TEST_VAR_DIR, 'privatekey.key'),
@@ -540,3 +579,26 @@ class WSGIServerTest(utils.BaseTestCase):
self.assertEquals(greetings, response.read())
server.stop()
+
+ def test_app_using_router_ipv6_and_ssl(self):
+ self.config(cert_file=os.path.join(TEST_VAR_DIR, 'certificate.crt'),
+ group="ssl")
+ self.config(key_file=os.path.join(TEST_VAR_DIR, 'privatekey.key'),
+ group="ssl")
+
+ greetings = 'Hello, World!!!'
+
+ @webob.dec.wsgify
+ def hello(req):
+ return greetings
+
+ mapper = routes.Mapper()
+ mapper.connect(None, "/v1.0/{path_info:.*}", controller=hello)
+ router = wsgi.Router(mapper)
+ server = wsgi.Service(router, 0, host="::1")
+ server.start()
+
+ response = urllib2.urlopen('https://[::1]:%d/v1.0/' % server.port)
+ self.assertEquals(greetings, response.read())
+
+ server.stop()