This repository was archived by the owner on Jan 11, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 598
Expand file tree
/
Copy pathtest_views.py
More file actions
118 lines (97 loc) · 3.71 KB
/
test_views.py
File metadata and controls
118 lines (97 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
from django.test import TestCase
from rest_framework.permissions import AllowAny
from rest_framework.renderers import CoreJSONRenderer
from rest_framework.request import Request
from rest_framework.test import APIRequestFactory
from rest_framework_swagger import renderers
from rest_framework_swagger.views import get_swagger_view
from .compat.mock import patch, MagicMock
class TestGetSwaggerView(TestCase):
def setUp(self):
self.sut = get_swagger_view
self.factory = APIRequestFactory()
self.view_class = self.sut().cls
def test_custom_schema_generator_used(self):
title = 'Vandelay'
url = 'https://github.com/marcgibbons/django-rest-swagger'
urlconf = 'fizz'
patterns = []
schema_generator = MagicMock()
view = self.sut(
title=title,
url=url,
patterns=patterns,
urlconf=urlconf,
schema_generator_cls=schema_generator
)
request = self.factory.get('/')
view(request=request)
schema_generator.assert_called_once_with(
title=title,
url=url,
patterns=patterns,
urlconf=urlconf
)
def test_title_and_urlpassed_to_schema_generator(self):
title = 'Vandelay'
url = 'https://github.com/marcgibbons/django-rest-swagger'
urlconf = 'fizz'
patterns = []
view = self.sut(
title=title,
url=url,
patterns=patterns,
urlconf=urlconf
)
with patch('rest_framework_swagger.views.SchemaGenerator') as mock:
request = self.factory.get('/')
view(request=request)
mock.assert_called_once_with(
title=title,
url=url,
patterns=patterns,
urlconf=urlconf
)
def test_ignore_model_permissions_true(self):
self.assertTrue(self.view_class._ignore_model_permissions)
def test_exclude_from_schema(self):
self.assertTrue(self.view_class.exclude_from_schema)
def test_renderer_classes(self):
self.assertListEqual(
[
CoreJSONRenderer,
renderers.OpenAPIRenderer,
renderers.SwaggerUIRenderer
],
self.view_class.renderer_classes
)
def test_permission_class(self):
self.assertListEqual(
[AllowAny],
self.view_class.permission_classes
)
def test_return_400_if_schema_is_none(self):
with patch('rest_framework_swagger.views.SchemaGenerator') as mock:
mock.return_value.get_schema.return_value = None
request = self.factory.get('/')
response = self.sut()(request=request)
self.assertEqual(400, response.status_code)
self.assertEqual(
['The schema generator did not return a schema Document'],
response.data
)
def test_response_is_result_of_schema_generator(self):
expected = 'My amazing schema'
with patch('rest_framework_swagger.views.SchemaGenerator') as mock:
mock.return_value.get_schema.return_value = expected
request = self.factory.get('/')
response = self.sut()(request=request)
self.assertEqual(200, response.status_code)
self.assertEqual(expected, response.data)
def test_schema_generator_instantiated_with_request(self):
with patch('rest_framework_swagger.views.SchemaGenerator') as mock:
request = self.factory.get('/')
self.sut()(request=request)
call_args = mock.return_value.get_schema.call_args[1]
self.assertIn('request', call_args)
self.assertIsInstance(call_args['request'], Request)