~soren/nova/iptables-security-groups

« back to all changes in this revision

Viewing changes to vendor/Twisted-10.0.0/twisted/web/test/test_vhost.py

  • Committer: Jesse Andrews
  • Date: 2010-05-28 06:05:26 UTC
  • Revision ID: git-v1:bf6e6e718cdc7488e2da87b21e258ccc065fe499
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (c) 2009 Twisted Matrix Laboratories.
 
2
# See LICENSE for details.
 
3
 
 
4
"""
 
5
Tests for L{twisted.web.vhost}.
 
6
"""
 
7
 
 
8
from twisted.internet.defer import gatherResults
 
9
from twisted.trial.unittest import TestCase
 
10
from twisted.web.http import NOT_FOUND
 
11
from twisted.web.static import Data
 
12
from twisted.web.vhost import NameVirtualHost
 
13
from twisted.web.test.test_web import DummyRequest
 
14
from twisted.web.test._util import _render
 
15
 
 
16
class NameVirtualHostTests(TestCase):
 
17
    """
 
18
    Tests for L{NameVirtualHost}.
 
19
    """
 
20
    def test_renderWithoutHost(self):
 
21
        """
 
22
        L{NameVirtualHost.render} returns the result of rendering the
 
23
        instance's C{default} if it is not C{None} and there is no I{Host}
 
24
        header in the request.
 
25
        """
 
26
        virtualHostResource = NameVirtualHost()
 
27
        virtualHostResource.default = Data("correct result", "")
 
28
        request = DummyRequest([''])
 
29
        self.assertEqual(
 
30
            virtualHostResource.render(request), "correct result")
 
31
 
 
32
 
 
33
    def test_renderWithoutHostNoDefault(self):
 
34
        """
 
35
        L{NameVirtualHost.render} returns a response with a status of I{NOT
 
36
        FOUND} if the instance's C{default} is C{None} and there is no I{Host}
 
37
        header in the request.
 
38
        """
 
39
        virtualHostResource = NameVirtualHost()
 
40
        request = DummyRequest([''])
 
41
        d = _render(virtualHostResource, request)
 
42
        def cbRendered(ignored):
 
43
            self.assertEqual(request.responseCode, NOT_FOUND)
 
44
        d.addCallback(cbRendered)
 
45
        return d
 
46
 
 
47
 
 
48
    def test_renderWithHost(self):
 
49
        """
 
50
        L{NameVirtualHost.render} returns the result of rendering the resource
 
51
        which is the value in the instance's C{host} dictionary corresponding
 
52
        to the key indicated by the value of the I{Host} header in the request.
 
53
        """
 
54
        virtualHostResource = NameVirtualHost()
 
55
        virtualHostResource.addHost('example.org', Data("winner", ""))
 
56
 
 
57
        request = DummyRequest([''])
 
58
        request.headers['host'] = 'example.org'
 
59
        d = _render(virtualHostResource, request)
 
60
        def cbRendered(ignored, request):
 
61
            self.assertEqual(''.join(request.written), "winner")
 
62
        d.addCallback(cbRendered, request)
 
63
 
 
64
        # The port portion of the Host header should not be considered.
 
65
        requestWithPort = DummyRequest([''])
 
66
        requestWithPort.headers['host'] = 'example.org:8000'
 
67
        dWithPort = _render(virtualHostResource, requestWithPort)
 
68
        def cbRendered(ignored, requestWithPort):
 
69
            self.assertEqual(''.join(requestWithPort.written), "winner")
 
70
        dWithPort.addCallback(cbRendered, requestWithPort)
 
71
 
 
72
        return gatherResults([d, dWithPort])
 
73
 
 
74
 
 
75
    def test_renderWithUnknownHost(self):
 
76
        """
 
77
        L{NameVirtualHost.render} returns the result of rendering the
 
78
        instance's C{default} if it is not C{None} and there is no host
 
79
        matching the value of the I{Host} header in the request.
 
80
        """
 
81
        virtualHostResource = NameVirtualHost()
 
82
        virtualHostResource.default = Data("correct data", "")
 
83
        request = DummyRequest([''])
 
84
        request.headers['host'] = 'example.com'
 
85
        d = _render(virtualHostResource, request)
 
86
        def cbRendered(ignored):
 
87
            self.assertEqual(''.join(request.written), "correct data")
 
88
        d.addCallback(cbRendered)
 
89
        return d
 
90
 
 
91
 
 
92
    def test_renderWithUnknownHostNoDefault(self):
 
93
        """
 
94
        L{NameVirtualHost.render} returns a response with a status of I{NOT
 
95
        FOUND} if the instance's C{default} is C{None} and there is no host
 
96
        matching the value of the I{Host} header in the request.
 
97
        """
 
98
        virtualHostResource = NameVirtualHost()
 
99
        request = DummyRequest([''])
 
100
        request.headers['host'] = 'example.com'
 
101
        d = _render(virtualHostResource, request)
 
102
        def cbRendered(ignored):
 
103
            self.assertEqual(request.responseCode, NOT_FOUND)
 
104
        d.addCallback(cbRendered)
 
105
        return d