setUp()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
1
# coding=utf-8
2
"""
3
"""
4
__author__ = 'Alisue <[email protected]>'
5
from django.test import TestCase
6
from django.http import Http404
7
from roughpages.middleware import RoughpageFallbackMiddleware
8
from roughpages.tests.compat import MagicMock, patch, override_settings
9
10
11
@override_settings(DEBUG=True)
12
class RoughpagesRoughpageFallbackMiddlewareTestCase(TestCase):
13
    def setUp(self):
14
        self.middleware = RoughpageFallbackMiddleware()
15
        self.request = MagicMock()
16
        self.request.session = {}
17
        self.request.path_info = '/foo/bar/hoge/'
18
        self.response = MagicMock()
19
20
    def test_middleware_with_200_response(self):
21
        self.response.status_code = 200
22
        with patch('roughpages.middleware.roughpage') as p:
23
            r = self.middleware.process_response(self.request,
24
                                                 self.response)
25
            # roughpage view should not be called
26
            self.assertFalse(p.called)
27
            # original response should be returend
28
            self.assertEqual(r, self.response)
29
30
    def test_middleware_with_404_response(self):
31
        self.response.status_code = 404
32
        with patch('roughpages.middleware.roughpage') as p:
33
            r = self.middleware.process_response(self.request,
34
                                                 self.response)
35
            # roughpage view should be called
36
            self.assertTrue(p.called)
37
            # roughpage view should be called with request and path_info
38
            p.assert_called_with(self.request, self.request.path_info)
39
            # roughpage return should be returned
40
            self.assertEqual(r, p())
41
42
    def test_middleware_with_404_response_with_404(self):
43
        self.response.status_code = 404
44
        with patch('roughpages.middleware.roughpage') as p:
45
            p.side_effect = Http404
46
            r = self.middleware.process_response(self.request,
47
                                                 self.response)
48
            # roughpage view should be called
49
            self.assertTrue(p.called)
50
            # roughpage view should be called with request and path_info
51
            p.assert_called_with(self.request, self.request.path_info)
52
            # original response should be returend
53
            self.assertEqual(r, self.response)
54
55
    def test_middleware_with_404_response_with_exception(self):
56
        self.response.status_code = 404
57
        with patch('roughpages.middleware.roughpage') as p:
58
            p.side_effect = Exception
59
            self.assertRaises(Exception,
60
                              self.middleware.process_response,
61
                              self.request, self.response)
62
            # roughpage view should be called
63
            self.assertTrue(p.called)
64
            # roughpage view should be called with request and path_info
65
            p.assert_called_with(self.request, self.request.path_info)
66
67
    @override_settings(DEBUG=False)
68
    def test_middleware_with_404_response_with_exception_NO_DEBUG(self):
69
        self.response.status_code = 404
70
        with patch('roughpages.middleware.roughpage') as p:
71
            p.side_effect = Exception
72
            r = self.middleware.process_response(self.request,
73
                                                 self.response)
74
            # roughpage view should be called
75
            self.assertTrue(p.called)
76
            # roughpage view should be called with request and path_info
77
            p.assert_called_with(self.request, self.request.path_info)
78
            # original response should be returend
79
            self.assertEqual(r, self.response)
80