def test_get_request( self, monkeypatch: pytest.MonkeyPatch, ) -> None: request = Request({}) request.set_var("site_id", "NO_SITE") request.set_var("to_delete", "['x/y/z.txt', 'abc.ending', '/ä/☃/☕']") request.set_var("config_generation", "123") request.files = werkzeug_datastructures.ImmutableMultiDict({ "sync_archive": werkzeug_datastructures.FileStorage( stream=io.BytesIO(b"some data"), filename="sync_archive", name="sync_archive", ) }) monkeypatch.setattr( activate_changes, "_request", request, ) assert (activate_changes.AutomationReceiveConfigSync().get_request() == activate_changes.ReceiveConfigSyncRequest( site_id=SiteId("NO_SITE"), sync_archive=b"some data", to_delete=["x/y/z.txt", "abc.ending", "/ä/☃/☕"], config_generation=123, ))
class URLChecker: def __init__(self): self._user_id = user.ident self._request = Request(create_environ()) def _set_query_vars(self, query_vars: QueryVars) -> None: for name, vals in query_vars.items(): self._request.set_var(name, vals[0]) def is_permitted(self, url: str) -> bool: file_name, query_vars = file_name_and_query_vars_from_url(url) self._set_query_vars(query_vars) try: with RequestContext(html_obj=html(self._request), req=self._request): with UserContext(self._user_id): page_handler = get_page_handler(file_name) if page_handler: page_handler() return True except MKAuthException: return False
class URLChecker: def __init__(self): self._user_id = user.ident self._request = Request(create_environ()) from cmk.gui.wato.pages.hosts import ModeEditHost self._mode_edit_host = ModeEditHost def _set_query_vars(self, query_vars: QueryVars) -> None: for name, vals in query_vars.items(): self._request.set_var(name, vals[0]) def is_permitted(self, url: str) -> bool: is_host_url = "mode=edit_host" in url file_name, query_vars = file_name_and_query_vars_from_url(url) self._set_query_vars(query_vars) try: with AppContext(current_app), \ RequestContext(html_obj=html(self._request), req=self._request), \ UserContext(self._user_id): if is_host_url: self._try_host() else: self._try_page(file_name) return True except MKAuthException: return False @staticmethod def _try_page(file_name: str) -> None: page_handler = get_page_handler(file_name) if page_handler: page_handler() # TODO: Find a better solution here. We treat hosts separately because calling the page takes # very long in this case and is not necessary (the initializer already throws an exception). def _try_host(self) -> None: self._mode_edit_host()