|
1 | 1 | from pathlib import Path |
| 2 | +from xml.etree.ElementTree import Element |
2 | 3 |
|
| 4 | +from defusedxml.ElementTree import fromstring |
3 | 5 | import requests_mock |
4 | 6 | import pytest |
5 | 7 |
|
@@ -67,10 +69,62 @@ def test_get_site_settings(server: TSC.Server) -> None: |
67 | 69 |
|
68 | 70 | assert isinstance(site_settings, TSC.ExtensionsSiteSettings) |
69 | 71 | assert site_settings.enabled is True |
70 | | - assert site_settings.use_default_settings is False |
| 72 | + assert site_settings.use_default_setting is False |
71 | 73 | assert site_settings.safe_list is not None |
72 | 74 | assert len(site_settings.safe_list) == 1 |
73 | 75 | first_safe = site_settings.safe_list[0] |
74 | 76 | assert first_safe.url == "http://localhost:9123/Dynamic.html" |
75 | 77 | assert first_safe.full_data_allowed is True |
76 | 78 | assert first_safe.prompt_needed is True |
| 79 | + |
| 80 | + |
| 81 | +def test_update_site_settings(server: TSC.Server) -> None: |
| 82 | + with requests_mock.mock() as m: |
| 83 | + m.put(server.extensions.baseurl, text=GET_SITE_SETTINGS.read_text()) |
| 84 | + |
| 85 | + site_settings = TSC.ExtensionsSiteSettings() |
| 86 | + site_settings.enabled = True |
| 87 | + site_settings.use_default_setting = False |
| 88 | + safe_extension = TSC.SafeExtension( |
| 89 | + url="http://localhost:9123/Dynamic.html", |
| 90 | + full_data_allowed=True, |
| 91 | + prompt_needed=True, |
| 92 | + ) |
| 93 | + site_settings.safe_list = [safe_extension] |
| 94 | + |
| 95 | + updated_settings = server.extensions.update(site_settings) |
| 96 | + history = m.request_history |
| 97 | + |
| 98 | + assert isinstance(updated_settings, TSC.ExtensionsSiteSettings) |
| 99 | + assert updated_settings.enabled is True |
| 100 | + assert updated_settings.use_default_setting is False |
| 101 | + assert updated_settings.safe_list is not None |
| 102 | + assert len(updated_settings.safe_list) == 1 |
| 103 | + first_safe = updated_settings.safe_list[0] |
| 104 | + assert first_safe.url == "http://localhost:9123/Dynamic.html" |
| 105 | + assert first_safe.full_data_allowed is True |
| 106 | + assert first_safe.prompt_needed is True |
| 107 | + |
| 108 | + # Verify that the request body was as expected |
| 109 | + assert len(history) == 1 |
| 110 | + xml_payload = fromstring(history[0].body) |
| 111 | + extensions_site_settings_elem = xml_payload.find(".//extensionsSiteSettings") |
| 112 | + assert extensions_site_settings_elem is not None |
| 113 | + enabled_elem = extensions_site_settings_elem.find("extensionsEnabled") |
| 114 | + assert enabled_elem is not None |
| 115 | + assert enabled_elem.text == "true" |
| 116 | + use_default_elem = extensions_site_settings_elem.find("useDefaultSetting") |
| 117 | + assert use_default_elem is not None |
| 118 | + assert use_default_elem.text == "false" |
| 119 | + safe_list_elements = list(extensions_site_settings_elem.findall("safeList")) |
| 120 | + assert len(safe_list_elements) == 1 |
| 121 | + safe_extension_elem = safe_list_elements[0] |
| 122 | + url_elem = safe_extension_elem.find("url") |
| 123 | + assert url_elem is not None |
| 124 | + assert url_elem.text == "http://localhost:9123/Dynamic.html" |
| 125 | + full_data_allowed_elem = safe_extension_elem.find("fullDataAllowed") |
| 126 | + assert full_data_allowed_elem is not None |
| 127 | + assert full_data_allowed_elem.text == "true" |
| 128 | + prompt_needed_elem = safe_extension_elem.find("promptNeeded") |
| 129 | + assert prompt_needed_elem is not None |
| 130 | + assert prompt_needed_elem.text == "true" |
0 commit comments