|
| 1 | +import importlib |
| 2 | +import re |
1 | 3 | from typing import List |
2 | 4 |
|
3 | 5 | import pytest |
4 | 6 | from django.core.files.uploadedfile import SimpleUploadedFile |
| 7 | +from django.test import override_settings |
| 8 | +from django.test.client import MULTIPART_CONTENT |
5 | 9 | from django.utils.datastructures import MultiValueDict |
6 | 10 |
|
7 | 11 | from ninja import File, NinjaAPI, UploadedFile |
| 12 | +from ninja.compatibility.files import fix_request_files_middleware |
| 13 | +from ninja.conf import Settings |
8 | 14 | from ninja.errors import ConfigError |
9 | 15 | from ninja.testing import TestClient |
10 | 16 |
|
@@ -144,3 +150,23 @@ def test_files_fix_middleware(): |
144 | 150 | @api.patch("/file1") |
145 | 151 | def patch_with_file(request, file: UploadedFile): |
146 | 152 | return {"name": file.name} |
| 153 | + |
| 154 | + |
| 155 | +@override_settings(NINJA_FIX_REQUEST_FILES_URLS=re.compile(r"^/file\d+")) |
| 156 | +def test_files_fix_middleware_urls(rf): |
| 157 | + def get_response(request): |
| 158 | + assert request.FILES == {} |
| 159 | + |
| 160 | + from ninja import conf |
| 161 | + from ninja.compatibility import files |
| 162 | + |
| 163 | + importlib.reload(conf) |
| 164 | + importlib.reload(files) |
| 165 | + |
| 166 | + file = SimpleUploadedFile("test.txt", b"data123") |
| 167 | + post_data = rf._encode_data({"file": file}, MULTIPART_CONTENT) |
| 168 | + request = rf.generic( |
| 169 | + "PATCH", "/not-patched", post_data, content_type=MULTIPART_CONTENT |
| 170 | + ) |
| 171 | + |
| 172 | + fix_request_files_middleware(get_response)(request) |
0 commit comments