test_google_site_verification.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from io import BytesIO
  2. import pytest
  3. from django.core.files.uploadedfile import SimpleUploadedFile
  4. from django.urls import reverse
  5. from ...models import Setting
  6. admin_link = reverse("misago:admin:settings:analytics:index")
  7. @pytest.fixture
  8. def setting(db):
  9. return Setting.objects.get(setting="google_site_verification")
  10. @pytest.fixture
  11. def setting_with_value(setting):
  12. setting.dry_value = "asdfghjkl1234567"
  13. setting.save()
  14. return setting
  15. def test_site_verification_cant_be_edited_directly(admin_client, setting):
  16. admin_client.post(admin_link, {"google_site_verification": "test"})
  17. setting.refresh_from_db()
  18. assert not setting.value
  19. def test_site_verification_is_set_from_uploaded_file(admin_client, setting):
  20. verification = b"google-site-verification: googleasdfghjkl1234567.html"
  21. verification_file = SimpleUploadedFile("test.html", verification, "text/html")
  22. admin_client.post(admin_link, {"google_site_verification_file": verification_file})
  23. setting.refresh_from_db()
  24. assert setting.value == "asdfghjkl1234567"
  25. def test_non_html_uploaded_file_is_rejected(admin_client, setting):
  26. verification_file = SimpleUploadedFile("test.html", b"test", "text/plain")
  27. admin_client.post(admin_link, {"google_site_verification_file": verification_file})
  28. setting.refresh_from_db()
  29. assert not setting.value
  30. def test_empty_uploaded_file_is_rejected(admin_client, setting_with_value):
  31. verification_file = SimpleUploadedFile("test.html", b"", "text/html")
  32. admin_client.post(admin_link, {"google_site_verification_file": verification_file})
  33. setting_with_value.refresh_from_db()
  34. assert setting_with_value.value
  35. def test_incorrect_uploaded_file_is_rejected(admin_client, setting_with_value):
  36. verification = b"google-site-verification: google.html"
  37. verification_file = SimpleUploadedFile("test.html", verification, "text/html")
  38. admin_client.post(admin_link, {"google_site_verification_file": verification_file})
  39. setting_with_value.refresh_from_db()
  40. assert setting_with_value.value