|
9 | 9 |
|
10 | 10 | from kirovy import typing as t |
11 | 11 | from kirovy.models import CncGame, CncMapFile, CncMap |
| 12 | +from kirovy.objects.ui_objects import ResultResponseData |
12 | 13 | from kirovy.response import KirovyResponse |
13 | 14 |
|
14 | 15 | if t.TYPE_CHECKING: |
@@ -128,3 +129,38 @@ def _download_and_check_hash( |
128 | 129 | assert cnc_map_file.cnc_map.map_name == expected_map_name |
129 | 130 | if ip_address: |
130 | 131 | assert cnc_map_file.ip_address == ip_address |
| 132 | + |
| 133 | + |
| 134 | +def test_map_upload_duplicate_file_backwards_compatible( |
| 135 | + client_anonymous, |
| 136 | + zip_map_for_legacy_upload, |
| 137 | + file_map_desert, |
| 138 | + game_yuri, |
| 139 | +): |
| 140 | + """ |
| 141 | + Test duplicate uploads for backwards compatible uploads. |
| 142 | + Duplicates should just return successful like the old database. |
| 143 | + """ |
| 144 | + url = "/upload" |
| 145 | + original_extension = pathlib.Path(file_map_desert.name).suffix |
| 146 | + upload_file, file_sha1 = zip_map_for_legacy_upload(file_map_desert) |
| 147 | + upload_response: KirovyResponse[ResultResponseData] = client_anonymous.post( |
| 148 | + url, {"file": upload_file, "game": game_yuri.slug}, format="multipart", content_type=None, REMOTE_ADDR="2.2.2.2" |
| 149 | + ) |
| 150 | + |
| 151 | + assert upload_response.status_code == status.HTTP_200_OK |
| 152 | + assert upload_response.data["result"]["download_url"] == f"/{game_yuri.slug}/{file_sha1}.zip" |
| 153 | + original_map_id = upload_response.data["result"]["cnc_map_id"] |
| 154 | + |
| 155 | + _download_and_check_hash( |
| 156 | + client_anonymous, file_sha1, game_yuri, "desert", [original_extension], ip_address="2.2.2.2" |
| 157 | + ) |
| 158 | + |
| 159 | + upload_file.seek(0) |
| 160 | + duplicate_upload_response: KirovyResponse[ResultResponseData] = client_anonymous.post( |
| 161 | + url, {"file": upload_file, "game": game_yuri.slug}, format="multipart", content_type=None, REMOTE_ADDR="1.2.2.2" |
| 162 | + ) |
| 163 | + |
| 164 | + assert duplicate_upload_response.status_code == status.HTTP_200_OK |
| 165 | + assert duplicate_upload_response.data["message"] == "Upload succeeded!" |
| 166 | + assert duplicate_upload_response.data["result"]["cnc_map_id"] == original_map_id |
0 commit comments