| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import importlib
- import types
-
- import pytest
-
- from models.model import Message
-
-
- @pytest.fixture(autouse=True)
- def patch_file_helpers(monkeypatch: pytest.MonkeyPatch):
- """
- Patch file_helpers.get_signed_file_url to a deterministic stub.
- """
- model_module = importlib.import_module("models.model")
- dummy = types.SimpleNamespace(get_signed_file_url=lambda fid: f"https://signed.example/{fid}")
- # Inject/override file_helpers on models.model
- monkeypatch.setattr(model_module, "file_helpers", dummy, raising=False)
-
-
- def _wrap_md(url: str) -> str:
- """
- Wrap a raw URL into the markdown that re_sign_file_url_answer expects:
- [link](<url>)
- """
- return f"please click [file]({url}) to download."
-
-
- def test_file_preview_valid_replaced():
- """
- Valid file-preview URL must be re-signed:
- - Extract upload_file_id correctly
- - Replace the original URL with the signed URL
- """
- upload_id = "abc-123"
- url = f"/files/{upload_id}/file-preview?timestamp=111&nonce=222&sign=333"
- msg = Message(answer=_wrap_md(url))
-
- out = msg.re_sign_file_url_answer
- assert f"https://signed.example/{upload_id}" in out
- assert url not in out
-
-
- def test_file_preview_misspelled_not_replaced():
- """
- Misspelled endpoint 'file-previe?timestamp=' should NOT be rewritten.
- """
- upload_id = "zzz-001"
- # path deliberately misspelled: file-previe? (missing 'w')
- # and we append ¬e=file-preview to trick the old `"file-preview" in url` check.
- url = f"/files/{upload_id}/file-previe?timestamp=111&nonce=222&sign=333¬e=file-preview"
- original = _wrap_md(url)
- msg = Message(answer=original)
-
- out = msg.re_sign_file_url_answer
- # Expect NO replacement, should not rewrite misspelled file-previe URL
- assert out == original
-
-
- def test_image_preview_valid_replaced():
- """
- Valid image-preview URL must be re-signed.
- """
- upload_id = "img-789"
- url = f"/files/{upload_id}/image-preview?timestamp=123&nonce=456&sign=789"
- msg = Message(answer=_wrap_md(url))
-
- out = msg.re_sign_file_url_answer
- assert f"https://signed.example/{upload_id}" in out
- assert url not in out
-
-
- def test_image_preview_misspelled_not_replaced():
- """
- Misspelled endpoint 'image-previe?timestamp=' should NOT be rewritten.
- """
- upload_id = "img-err-42"
- url = f"/files/{upload_id}/image-previe?timestamp=1&nonce=2&sign=3¬e=image-preview"
- original = _wrap_md(url)
- msg = Message(answer=original)
-
- out = msg.re_sign_file_url_answer
- # Expect NO replacement, should not rewrite misspelled image-previe URL
- assert out == original
|