示例#1
0
    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"
            }},
        )
示例#2
0
    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()
示例#3
0
    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
示例#4
0
    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()
示例#5
0
    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()
示例#6
0
    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()