# pylint: disable=unused-argument import json import pytest from dapd_db_schema.schemas.etl import DimPlaylist, DimTrack from dapd_transformation_service.entities.dimension_meta import DspEnum from dapd_transformation_service.exceptions import IllegalCharError from dapd_transformation_service.validators.illegal_chars_validator import IllegalCharsValidator # noinspection PyTestParametrized @pytest.mark.parametrize(['dsp', 'dim_type'], [ (DspEnum.SPOTIFY, DimPlaylist), (DspEnum.APPLE_MUSIC, DimPlaylist), (DspEnum.SPOTIFY, DimTrack), (DspEnum.APPLE_MUSIC, DimTrack), ]) def test_validate_chars__ok(db, raw_data, dim_type, dsp, logger): data = json.loads(raw_data) validator = IllegalCharsValidator(logger) validator.validate(data, dim_type, dsp) @pytest.mark.parametrize('data', [ {'foo': 'bar', 'baz': {'foobar': {'1': 'Some inval\x00id text'}}}, {'foo': 'bar', 'baz': {'foobar': {'1': 'Another inval\u0000id text'}}} ]) # yapf: disable def test_validate_chars__failed(db, data, logger): dim_type = DimPlaylist dsp = DspEnum.SPOTIFY validator = IllegalCharsValidator(logger) with pytest.raises(IllegalCharError): validator.validate(data, dim_type, dsp)