~ntt-pf-lab/nova/monkey_patch_notification

« back to all changes in this revision

Viewing changes to vendor/Twisted-10.0.0/twisted/web/test/test_resource.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.resource}.
 
6
"""
 
7
 
 
8
from twisted.trial.unittest import TestCase
 
9
from twisted.web import error
 
10
from twisted.web.http import NOT_FOUND, FORBIDDEN
 
11
from twisted.web.resource import ErrorPage, NoResource, ForbiddenResource
 
12
from twisted.web.test.test_web import DummyRequest
 
13
 
 
14
 
 
15
class ErrorPageTests(TestCase):
 
16
    """
 
17
    Tests for L{ErrorPage}, L{NoResource}, and L{ForbiddenResource}.
 
18
    """
 
19
 
 
20
    errorPage = ErrorPage
 
21
    noResource = NoResource
 
22
    forbiddenResource = ForbiddenResource
 
23
 
 
24
    def test_getChild(self):
 
25
        """
 
26
        The C{getChild} method of L{ErrorPage} returns the L{ErrorPage} it is
 
27
        called on.
 
28
        """
 
29
        page = self.errorPage(321, "foo", "bar")
 
30
        self.assertIdentical(page.getChild("name", object()), page)
 
31
 
 
32
 
 
33
    def _pageRenderingTest(self, page, code, brief, detail):
 
34
        request = DummyRequest([''])
 
35
        self.assertEqual(
 
36
            page.render(request),
 
37
            "\n"
 
38
            "<html>\n"
 
39
            "  <head><title>%s - %s</title></head>\n"
 
40
            "  <body>\n"
 
41
            "    <h1>%s</h1>\n"
 
42
            "    <p>%s</p>\n"
 
43
            "  </body>\n"
 
44
            "</html>\n" % (code, brief, brief, detail))
 
45
        self.assertEqual(request.responseCode, code)
 
46
        self.assertEqual(
 
47
            request.outgoingHeaders, {'content-type': 'text/html'})
 
48
 
 
49
 
 
50
    def test_errorPageRendering(self):
 
51
        """
 
52
        L{ErrorPage.render} returns a C{str} describing the error defined by
 
53
        the response code and message passed to L{ErrorPage.__init__}.  It also
 
54
        uses that response code to set the response code on the L{Request}
 
55
        passed in.
 
56
        """
 
57
        code = 321
 
58
        brief = "brief description text"
 
59
        detail = "much longer text might go here"
 
60
        page = self.errorPage(code, brief, detail)
 
61
        self._pageRenderingTest(page, code, brief, detail)
 
62
 
 
63
 
 
64
    def test_noResourceRendering(self):
 
65
        """
 
66
        L{NoResource} sets the HTTP I{NOT FOUND} code.
 
67
        """
 
68
        detail = "long message"
 
69
        page = self.noResource(detail)
 
70
        self._pageRenderingTest(page, NOT_FOUND, "No Such Resource", detail)
 
71
 
 
72
 
 
73
    def test_forbiddenResourceRendering(self):
 
74
        """
 
75
        L{ForbiddenResource} sets the HTTP I{FORBIDDEN} code.
 
76
        """
 
77
        detail = "longer message"
 
78
        page = self.forbiddenResource(detail)
 
79
        self._pageRenderingTest(page, FORBIDDEN, "Forbidden Resource", detail)
 
80
 
 
81
 
 
82
 
 
83
class DeprecatedErrorPageTests(ErrorPageTests):
 
84
    """
 
85
    Tests for L{error.ErrorPage}, L{error.NoResource}, and
 
86
    L{error.ForbiddenResource}.
 
87
    """
 
88
    def errorPage(self, *args):
 
89
        return error.ErrorPage(*args)
 
90
 
 
91
 
 
92
    def noResource(self, *args):
 
93
        return error.NoResource(*args)
 
94
 
 
95
 
 
96
    def forbiddenResource(self, *args):
 
97
        return error.ForbiddenResource(*args)
 
98
 
 
99
 
 
100
    def _assertWarning(self, name, offendingFunction):
 
101
        warnings = self.flushWarnings([offendingFunction])
 
102
        self.assertEqual(len(warnings), 1)
 
103
        self.assertEqual(warnings[0]['category'], DeprecationWarning)
 
104
        self.assertEqual(
 
105
            warnings[0]['message'],
 
106
            'twisted.web.error.%s is deprecated since Twisted 9.0.  '
 
107
            'See twisted.web.resource.%s.' % (name, name))
 
108
 
 
109
 
 
110
    def test_getChild(self):
 
111
        """
 
112
        Like L{ErrorPageTests.test_getChild}, but flush the deprecation warning
 
113
        emitted by instantiating L{error.ErrorPage}.
 
114
        """
 
115
        ErrorPageTests.test_getChild(self)
 
116
        self._assertWarning('ErrorPage', self.errorPage)
 
117
 
 
118
 
 
119
    def test_errorPageRendering(self):
 
120
        """
 
121
        Like L{ErrorPageTests.test_errorPageRendering}, but flush the
 
122
        deprecation warning emitted by instantiating L{error.ErrorPage}.
 
123
        """
 
124
        ErrorPageTests.test_errorPageRendering(self)
 
125
        self._assertWarning('ErrorPage', self.errorPage)
 
126
 
 
127
 
 
128
    def test_noResourceRendering(self):
 
129
        """
 
130
        Like L{ErrorPageTests.test_noResourceRendering}, but flush the
 
131
        deprecation warning emitted by instantiating L{error.NoResource}.
 
132
        """
 
133
        ErrorPageTests.test_noResourceRendering(self)
 
134
        self._assertWarning('NoResource', self.noResource)
 
135
 
 
136
 
 
137
    def test_forbiddenResourceRendering(self):
 
138
        """
 
139
        Like L{ErrorPageTests.test_forbiddenResourceRendering}, but flush the
 
140
        deprecation warning emitted by instantiating
 
141
        L{error.ForbiddenResource}.
 
142
        """
 
143
        ErrorPageTests.test_forbiddenResourceRendering(self)
 
144
        self._assertWarning('ForbiddenResource', self.forbiddenResource)