def test_present_current_object_differ(self, mocker): client = mocker.Mock() client.get.side_effect = ( http.Response(200, '{"spec": {"current": "data"}}'), http.Response(200, '{"spec": {"new": "data"}}'), ) client.put.return_value = http.Response(201, "") changed, object = datastore.sync( "present", client, "/list", "/resource", {"spec": { "my": "data" }}, False, ) assert changed is True assert {"new": "data"} == object client.put.assert_called_once_with( "/resource", {"spec": { "my": "data" }}, )
def test_present_no_current_object_non_empty_backend(self, mocker, check): client = mocker.Mock() client.get.side_effect = ( http.Response(404, ""), http.Response(200, "[{}]"), ) with pytest.raises(errors.Error, match="already active"): datastore.sync( "present", client, "/list", "/resource", {"spec": { "my": "data" }}, check, ) client.put.assert_not_called()
def test_absent_no_current_object_check(self, mocker): client = mocker.Mock() client.get.return_value = http.Response(404, "") changed, object = datastore.sync( "absent", client, "/list", "/resource", {}, True, ) assert changed is False assert object is None
def test_absent_current_object_present_check(self, mocker): client = mocker.Mock() client.get.return_value = http.Response(200, '{}') client.delete.return_value = http.Response(204, "") changed, object = datastore.sync( "absent", client, "/list", "/resource", {}, True, ) assert changed is True assert object is None client.delete.assert_not_called()
def test_present_current_object_does_not_differ_check(self, mocker): client = mocker.Mock() client.get.return_value = (http.Response(200, '{"spec": {"my": "data"}}')) changed, object = datastore.sync( "present", client, "/list", "/resource", {"spec": { "my": "data" }}, True, ) assert changed is False assert {"my": "data"} == object client.put.assert_not_called()
def test_present_no_current_object_empty_backend_check(self, mocker): client = mocker.Mock() client.get.side_effect = ( http.Response(404, ""), http.Response(200, "[]"), ) changed, object = datastore.sync( "present", client, "/list", "/resource", {"spec": { "my": "data" }}, True, ) assert changed is True assert {"my": "data"} == object client.put.assert_not_called()