12
12
from csp .tests .utils import response
13
13
14
14
if TYPE_CHECKING :
15
- from django .http import HttpRequest
15
+ from django .http import HttpRequest , HttpResponseBase
16
16
17
17
mw = CSPMiddleware (response ())
18
18
19
19
20
20
def test_csp_exempt () -> None :
21
21
@csp_exempt ()
22
- def view (request : HttpRequest ) -> HttpResponse :
22
+ def view (request : HttpRequest ) -> HttpResponseBase :
23
23
return HttpResponse ()
24
24
25
25
response = view (RequestFactory ().get ("/" ))
@@ -29,7 +29,7 @@ def view(request: HttpRequest) -> HttpResponse:
29
29
30
30
def test_csp_exempt_ro () -> None :
31
31
@csp_exempt (REPORT_ONLY = True )
32
- def view (request : HttpRequest ) -> HttpResponse :
32
+ def view (request : HttpRequest ) -> HttpResponseBase :
33
33
return HttpResponse ()
34
34
35
35
response = view (RequestFactory ().get ("/" ))
@@ -41,7 +41,7 @@ def view(request: HttpRequest) -> HttpResponse:
41
41
def test_csp_update () -> None :
42
42
request = RequestFactory ().get ("/" )
43
43
44
- def view_without_decorator (request : HttpRequest ) -> HttpResponse :
44
+ def view_without_decorator (request : HttpRequest ) -> HttpResponseBase :
45
45
return HttpResponse ()
46
46
47
47
response = view_without_decorator (request )
@@ -51,7 +51,7 @@ def view_without_decorator(request: HttpRequest) -> HttpResponse:
51
51
assert policy_list == ["default-src 'self'" , "img-src foo.com" ]
52
52
53
53
@csp_update ({"img-src" : ["bar.com" , NONCE ]})
54
- def view_with_decorator (request : HttpRequest ) -> HttpResponse :
54
+ def view_with_decorator (request : HttpRequest ) -> HttpResponseBase :
55
55
return HttpResponse ()
56
56
57
57
response = view_with_decorator (request )
@@ -74,7 +74,7 @@ def view_with_decorator(request: HttpRequest) -> HttpResponse:
74
74
def test_csp_update_ro () -> None :
75
75
request = RequestFactory ().get ("/" )
76
76
77
- def view_without_decorator (request : HttpRequest ) -> HttpResponse :
77
+ def view_without_decorator (request : HttpRequest ) -> HttpResponseBase :
78
78
return HttpResponse ()
79
79
80
80
response = view_without_decorator (request )
@@ -84,7 +84,7 @@ def view_without_decorator(request: HttpRequest) -> HttpResponse:
84
84
assert policy_list == ["default-src 'self'" , "img-src foo.com" ]
85
85
86
86
@csp_update ({"img-src" : ["bar.com" , NONCE ]}, REPORT_ONLY = True )
87
- def view_with_decorator (request : HttpRequest ) -> HttpResponse :
87
+ def view_with_decorator (request : HttpRequest ) -> HttpResponseBase :
88
88
return HttpResponse ()
89
89
90
90
response = view_with_decorator (request )
@@ -107,7 +107,7 @@ def view_with_decorator(request: HttpRequest) -> HttpResponse:
107
107
def test_csp_replace () -> None :
108
108
request = RequestFactory ().get ("/" )
109
109
110
- def view_without_decorator (request : HttpRequest ) -> HttpResponse :
110
+ def view_without_decorator (request : HttpRequest ) -> HttpResponseBase :
111
111
return HttpResponse ()
112
112
113
113
response = view_without_decorator (request )
@@ -117,7 +117,7 @@ def view_without_decorator(request: HttpRequest) -> HttpResponse:
117
117
assert policy_list == ["default-src 'self'" , "img-src foo.com" ]
118
118
119
119
@csp_replace ({"img-src" : ["bar.com" ]})
120
- def view_with_decorator (request : HttpRequest ) -> HttpResponse :
120
+ def view_with_decorator (request : HttpRequest ) -> HttpResponseBase :
121
121
return HttpResponse ()
122
122
123
123
response = view_with_decorator (request )
@@ -134,7 +134,7 @@ def view_with_decorator(request: HttpRequest) -> HttpResponse:
134
134
assert policy_list == ["default-src 'self'" , "img-src foo.com" ]
135
135
136
136
@csp_replace ({"img-src" : None })
137
- def view_removing_directive (request : HttpRequest ) -> HttpResponse :
137
+ def view_removing_directive (request : HttpRequest ) -> HttpResponseBase :
138
138
return HttpResponse ()
139
139
140
140
response = view_removing_directive (request )
@@ -148,7 +148,7 @@ def view_removing_directive(request: HttpRequest) -> HttpResponse:
148
148
def test_csp_replace_ro () -> None :
149
149
request = RequestFactory ().get ("/" )
150
150
151
- def view_without_decorator (request : HttpRequest ) -> HttpResponse :
151
+ def view_without_decorator (request : HttpRequest ) -> HttpResponseBase :
152
152
return HttpResponse ()
153
153
154
154
response = view_without_decorator (request )
@@ -158,7 +158,7 @@ def view_without_decorator(request: HttpRequest) -> HttpResponse:
158
158
assert policy_list == ["default-src 'self'" , "img-src foo.com" ]
159
159
160
160
@csp_replace ({"img-src" : ["bar.com" ]}, REPORT_ONLY = True )
161
- def view_with_decorator (request : HttpRequest ) -> HttpResponse :
161
+ def view_with_decorator (request : HttpRequest ) -> HttpResponseBase :
162
162
return HttpResponse ()
163
163
164
164
response = view_with_decorator (request )
@@ -175,7 +175,7 @@ def view_with_decorator(request: HttpRequest) -> HttpResponse:
175
175
assert policy_list == ["default-src 'self'" , "img-src foo.com" ]
176
176
177
177
@csp_replace ({"img-src" : None }, REPORT_ONLY = True )
178
- def view_removing_directive (request : HttpRequest ) -> HttpResponse :
178
+ def view_removing_directive (request : HttpRequest ) -> HttpResponseBase :
179
179
return HttpResponse ()
180
180
181
181
response = view_removing_directive (request )
@@ -188,7 +188,7 @@ def view_removing_directive(request: HttpRequest) -> HttpResponse:
188
188
def test_csp () -> None :
189
189
request = RequestFactory ().get ("/" )
190
190
191
- def view_without_decorator (request : HttpRequest ) -> HttpResponse :
191
+ def view_without_decorator (request : HttpRequest ) -> HttpResponseBase :
192
192
return HttpResponse ()
193
193
194
194
response = view_without_decorator (request )
@@ -198,7 +198,7 @@ def view_without_decorator(request: HttpRequest) -> HttpResponse:
198
198
assert policy_list == ["default-src 'self'" ]
199
199
200
200
@csp ({"img-src" : ["foo.com" ], "font-src" : ["bar.com" ]})
201
- def view_with_decorator (request : HttpRequest ) -> HttpResponse :
201
+ def view_with_decorator (request : HttpRequest ) -> HttpResponseBase :
202
202
return HttpResponse ()
203
203
204
204
response = view_with_decorator (request )
@@ -218,7 +218,7 @@ def view_with_decorator(request: HttpRequest) -> HttpResponse:
218
218
def test_csp_ro () -> None :
219
219
request = RequestFactory ().get ("/" )
220
220
221
- def view_without_decorator (request : HttpRequest ) -> HttpResponse :
221
+ def view_without_decorator (request : HttpRequest ) -> HttpResponseBase :
222
222
return HttpResponse ()
223
223
224
224
response = view_without_decorator (request )
@@ -229,7 +229,7 @@ def view_without_decorator(request: HttpRequest) -> HttpResponse:
229
229
230
230
@csp ({"img-src" : ["foo.com" ], "font-src" : ["bar.com" ]}, REPORT_ONLY = True )
231
231
@csp ({}) # CSP with no directives effectively removes the header.
232
- def view_with_decorator (request : HttpRequest ) -> HttpResponse :
232
+ def view_with_decorator (request : HttpRequest ) -> HttpResponseBase :
233
233
return HttpResponse ()
234
234
235
235
response = view_with_decorator (request )
@@ -251,7 +251,7 @@ def test_csp_string_values() -> None:
251
251
request = RequestFactory ().get ("/" )
252
252
253
253
@csp ({"img-src" : "foo.com" , "font-src" : "bar.com" })
254
- def view_with_decorator (request : HttpRequest ) -> HttpResponse :
254
+ def view_with_decorator (request : HttpRequest ) -> HttpResponseBase :
255
255
return HttpResponse ()
256
256
257
257
response = view_with_decorator (request )
@@ -268,7 +268,7 @@ def test_csp_exempt_error() -> None:
268
268
with pytest .raises (RuntimeError ) as excinfo :
269
269
# Ignore type error since we're checking for the exception raised for 3.x syntax
270
270
@csp_exempt # type: ignore
271
- def view (request : HttpRequest ) -> HttpResponse :
271
+ def view (request : HttpRequest ) -> HttpResponseBase :
272
272
return HttpResponse ()
273
273
274
274
assert "Incompatible `csp_exempt` decorator usage" in str (excinfo .value )
@@ -278,7 +278,7 @@ def test_csp_update_error() -> None:
278
278
with pytest .raises (RuntimeError ) as excinfo :
279
279
280
280
@csp_update (IMG_SRC = "bar.com" )
281
- def view (request : HttpRequest ) -> HttpResponse :
281
+ def view (request : HttpRequest ) -> HttpResponseBase :
282
282
return HttpResponse ()
283
283
284
284
assert "Incompatible `csp_update` decorator arguments" in str (excinfo .value )
@@ -288,7 +288,7 @@ def test_csp_replace_error() -> None:
288
288
with pytest .raises (RuntimeError ) as excinfo :
289
289
290
290
@csp_replace (IMG_SRC = "bar.com" )
291
- def view (request : HttpRequest ) -> HttpResponse :
291
+ def view (request : HttpRequest ) -> HttpResponseBase :
292
292
return HttpResponse ()
293
293
294
294
assert "Incompatible `csp_replace` decorator arguments" in str (excinfo .value )
@@ -298,7 +298,7 @@ def test_csp_error() -> None:
298
298
with pytest .raises (RuntimeError ) as excinfo :
299
299
300
300
@csp (IMG_SRC = ["bar.com" ])
301
- def view (request : HttpRequest ) -> HttpResponse :
301
+ def view (request : HttpRequest ) -> HttpResponseBase :
302
302
return HttpResponse ()
303
303
304
304
assert "Incompatible `csp` decorator arguments" in str (excinfo .value )
0 commit comments