Esempio n. 1
0
    def _commands_from_ndjson(lines):
        """Turn multiple lines of JSON into Command objects.

        :param lines: An iterable of JSON strings
        :return: A generator of `Command` objects
        """
        for line_number, line in enumerate(lines):
            if not line:
                continue

            try:
                data = json.loads(line)
            except JSONDecodeError as e:
                raise InvalidJSONError(
                    f"Invalid JSON on line {line_number}: {e.args[0]}")

            # Try catch JSON errors here
            yield CommandBuilder.from_data(data)
Esempio n. 2
0
 def test_we_get_schema_errors_with_malformed_commands(self, data):
     with pytest.raises(SchemaValidationError):
         CommandBuilder.from_data(data)
Esempio n. 3
0
    def test_deserialise_configure_can_fail(self, configuration_body):
        configuration_body["random"] = "new_value"

        with pytest.raises(SchemaValidationError):
            CommandBuilder.from_data([CONFIGURE, configuration_body])
Esempio n. 4
0
    def test_deserialise_configure_ok(self, configuration_body):
        command = CommandBuilder.from_data([CONFIGURE, configuration_body])

        assert isinstance(command.body, Configuration)
Esempio n. 5
0
    def test_deserialise_group_membership_can_fail(
            self, create_group_membership_body):
        del create_group_membership_body["data"]["relationships"]["group"]

        with pytest.raises(SchemaValidationError):
            CommandBuilder.from_data([CREATE, create_group_membership_body])
Esempio n. 6
0
    def test_deserialise_group_membership_ok(self,
                                             create_group_membership_body):
        command = CommandBuilder.from_data(
            [CREATE, create_group_membership_body])

        assert isinstance(command.body, CreateGroupMembership)
Esempio n. 7
0
    def test_deserialise_group_can_fail(self, upsert_group_body):
        del upsert_group_body["data"]["attributes"]["name"]

        with pytest.raises(SchemaValidationError):
            CommandBuilder.from_data([UPSERT, upsert_group_body])
Esempio n. 8
0
    def test_deserialise_group_ok(self, upsert_group_body):
        command = CommandBuilder.from_data([UPSERT, upsert_group_body])

        assert isinstance(command.body, UpsertGroup)
Esempio n. 9
0
    def test_deserialise_user_can_fail(self, upsert_user_body):
        del upsert_user_body["data"]["id"]

        with pytest.raises(SchemaValidationError):
            CommandBuilder.from_data([UPSERT, upsert_user_body])