def test_synchronize_site(mocked_responses, monkeypatch, edition_short, tmp_path, mocker): if edition_short == "cme": pytest.skip("Seems faked site environment is not 100% correct") mocked_responses.add( method=responses.POST, url= "http://localhost/unit_remote_1/check_mk/automation.py?command=get-config-sync-state&debug=&secret=watosecret", body=repr(({ 'etc/check_mk/conf.d/wato/hosts.mk': (33204, 15, None, '0fc4df48a03c3e972a86c9d573bc04f6e2a5d91aa368d7f4ce4ec5cd93ee5725' ), 'etc/check_mk/multisite.d/wato/global.mk': (33204, 6, None, '0e10d5fc5aedd798b68706c0189aeccadccae1fa6cc72324524293769336571c' ), 'etc/htpasswd': (33204, 0, None, 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' ) }, 0)), ) mocked_responses.add( method=responses.POST, url= "http://localhost/unit_remote_1/check_mk/automation.py?command=receive-config-sync&debug=&secret=watosecret", body="True", ) snapshot_data_collector_class = ("CMESnapshotDataCollector" if edition_short == "cme" else "CRESnapshotDataCollector") is_pre_17_site = False monkeypatch.setattr(cmk_version, "edition_short", lambda: edition_short) monkeypatch.setattr(utils, "is_pre_17_remote_site", lambda s: is_pre_17_site) activation_manager = _get_activation_manager(monkeypatch) snapshot_settings = _create_sync_snapshot(activation_manager, snapshot_data_collector_class, monkeypatch, tmp_path, is_pre_17_site=is_pre_17_site, remote_site="unit_remote_1") site_activation = activate_changes.ActivateChangesSite( "unit_remote_1", snapshot_settings, activation_manager._activation_id, prevent_activate=True) site_activation._time_started = time.time() site_activation._synchronize_site()
def test_synchronize_pre_17_site(monkeypatch, edition: cmk_version.Edition, tmp_path, mocker): snapshot_data_collector_class = ("CMESnapshotDataCollector" if edition is cmk_version.Edition.CME else "CRESnapshotDataCollector") if edition is cmk_version.Edition.CME: pytest.skip("Seems faked site environment is not 100% correct") is_pre_17_site = True monkeypatch.setattr(utils, "is_pre_17_remote_site", lambda s: is_pre_17_site) activation_manager = _get_activation_manager(monkeypatch) snapshot_settings = _create_sync_snapshot( activation_manager, snapshot_data_collector_class, monkeypatch, tmp_path, is_pre_17_site=is_pre_17_site, remote_site="unit_remote_1", edition=edition, ) site_activation = activate_changes.ActivateChangesSite( "unit_remote_1", snapshot_settings, activation_manager._activation_id, prevent_activate=True) # Could be better to mock requests instead of our own code get_url_mock = mocker.patch("cmk.gui.watolib.automations.get_url", return_value="True") site_activation._time_started = time.time() site_activation._synchronize_site() get_url_mock.assert_called_once() args, kwargs = get_url_mock.call_args assert args == ( "http://localhost/unit_remote_1/check_mk/automation.py?command=push-snapshot&debug=&secret=watosecret&siteid=unit_remote_1", False, ) assert list(kwargs.keys()) == ["files"] assert list(kwargs["files"].keys()) == ["snapshot"] assert isinstance(kwargs["files"]["snapshot"], BufferedIOBase) file_name = kwargs["files"]["snapshot"].name # type: ignore[attr-defined] assert file_name == snapshot_settings.snapshot_path
def test_synchronize_pre_17_site(monkeypatch, edition_short, tmp_path, mocker): snapshot_data_collector_class = ("CMESnapshotDataCollector" if edition_short == "cme" else "CRESnapshotDataCollector") if edition_short == "cme": pytest.skip("Seems faked site environment is not 100% correct") is_pre_17_site = True monkeypatch.setattr(cmk_version, "edition_short", lambda: edition_short) monkeypatch.setattr(activate_changes, "_is_pre_17_remote_site", lambda s: is_pre_17_site) activation_manager = _get_activation_manager(monkeypatch) snapshot_settings = _create_sync_snapshot(activation_manager, snapshot_data_collector_class, monkeypatch, tmp_path, is_pre_17_site=is_pre_17_site) site_activation = activate_changes.ActivateChangesSite( "unit_remote_1", snapshot_settings, activation_manager._activation_id, prevent_activate=True) # Could be better to mock requests instead of our own code get_url_mock = mocker.patch("cmk.gui.watolib.automations.get_url", return_value="True") site_activation._time_started = time.time() site_activation._synchronize_site() get_url_mock.assert_called_once() args, kwargs = get_url_mock.call_args assert args == ( 'http://localhost/unit_remote_1/check_mk/automation.py?command=push-snapshot&debug=&secret=watosecret&siteid=unit_remote_1', False) assert list(kwargs.keys()) == ["files"] assert list(kwargs["files"].keys()) == ["snapshot"] # TODO: Add correct type once we are on Python 3 only if sys.version_info[0] >= 3: assert isinstance(kwargs["files"]["snapshot"], IOBase) else: assert isinstance(kwargs["files"]["snapshot"], file) # pylint: disable=undefined-variable file_name = kwargs["files"]["snapshot"].name # type: ignore[attr-defined] assert file_name == snapshot_settings.snapshot_path
def test_synchronize_site( mocked_responses: responses.RequestsMock, monkeypatch: pytest.MonkeyPatch, edition: cmk_version.Edition, tmp_path: Path, mocker: MockerFixture, ): if edition is cmk_version.Edition.CME: pytest.skip("Seems faked site environment is not 100% correct") mocked_responses.add( method=responses.POST, url= "http://localhost/unit_remote_1/check_mk/automation.py?command=get-config-sync-state", body=repr(( { "etc/check_mk/conf.d/wato/hosts.mk": ( 33204, 15, None, "0fc4df48a03c3e972a86c9d573bc04f6e2a5d91aa368d7f4ce4ec5cd93ee5725", ), "etc/check_mk/multisite.d/wato/global.mk": ( 33204, 6, None, "0e10d5fc5aedd798b68706c0189aeccadccae1fa6cc72324524293769336571c", ), "etc/htpasswd": ( 33204, 0, None, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", ), }, 0, )), ) mocked_responses.add( method=responses.POST, url= "http://localhost/unit_remote_1/check_mk/automation.py?command=receive-config-sync", body="True", ) snapshot_data_collector_class = ("CMESnapshotDataCollector" if edition is cmk_version.Edition.CME else "CRESnapshotDataCollector") is_pre_17_site = False monkeypatch.setattr(cmk_version, "is_raw_edition", lambda: edition is cmk_version.Edition.CRE) monkeypatch.setattr(cmk_version, "is_managed_edition", lambda: edition is cmk_version.Edition.CME) monkeypatch.setattr(utils, "is_pre_17_remote_site", lambda s: is_pre_17_site) activation_manager = _get_activation_manager(monkeypatch) assert activation_manager._activation_id is not None snapshot_settings = _create_sync_snapshot( activation_manager, snapshot_data_collector_class, monkeypatch, tmp_path, is_pre_17_site=is_pre_17_site, remote_site=SiteId("unit_remote_1"), edition=edition, ) site_activation = activate_changes.ActivateChangesSite( SiteId("unit_remote_1"), snapshot_settings, activation_manager._activation_id, prevent_activate=True, ) site_activation._time_started = time.time() site_activation._synchronize_site()