1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
from pytest import raises
from mopidy import exceptions
from mopidy.internal import validation
def test_check_boolean_with_valid_values():
for value in (True, False):
validation.check_boolean(value)
def test_check_boolean_with_other_values():
for value in 1, 0, None, "", list(), tuple():
with raises(exceptions.ValidationError):
validation.check_boolean(value)
def test_check_boolean_error_message():
with raises(exceptions.ValidationError) as excinfo:
validation.check_boolean(1234)
assert "Expected a boolean, not 1234" == str(excinfo.value)
def test_check_choice_with_valid_values():
for value, choices in (2, (1, 2, 3)), ("abc", ("abc", "def")):
validation.check_choice(value, choices)
def test_check_choice_with_invalid_values():
for value, choices in (5, (1, 2, 3)), ("xyz", ("abc", "def")):
with raises(exceptions.ValidationError):
validation.check_choice(value, choices)
def test_check_choice_error_message():
with raises(exceptions.ValidationError) as excinfo:
validation.check_choice(5, (1, 2, 3))
assert "Expected one of (1, 2, 3), not 5" == str(excinfo.value)
def test_check_instance_with_valid_choices():
for value, cls in ((True, bool), ("a", str), (123, int)):
validation.check_instance(value, cls)
def test_check_instance_with_invalid_values():
for value, cls in (1, str), ("abc", int):
with raises(exceptions.ValidationError):
validation.check_instance(value, cls)
def test_check_instance_error_message():
with raises(exceptions.ValidationError) as excinfo:
validation.check_instance(1, dict)
assert "Expected a dict instance, not 1" == str(excinfo.value)
def test_check_instances_with_valid_values():
validation.check_instances([], int)
validation.check_instances([1, 2], int)
validation.check_instances((1, 2), int)
def test_check_instances_with_invalid_values():
with raises(exceptions.ValidationError):
validation.check_instances("abc", str)
with raises(exceptions.ValidationError):
validation.check_instances(["abc", 123], str)
with raises(exceptions.ValidationError):
validation.check_instances(None, str)
with raises(exceptions.ValidationError):
validation.check_instances([None], str)
with raises(exceptions.ValidationError):
validation.check_instances(iter(["abc"]), str)
def test_check_instances_error_message():
with raises(exceptions.ValidationError) as excinfo:
validation.check_instances([1], str)
assert "Expected a list of str, not [1]" == str(excinfo.value)
def test_check_query_valid_values():
for value in {}, {"any": []}, {"any": ["abc"]}:
validation.check_query(value)
def test_check_query_random_iterables():
for value in None, tuple(), list(), "abc":
with raises(exceptions.ValidationError):
validation.check_query(value)
def test_check_mapping_error_message():
with raises(exceptions.ValidationError) as excinfo:
validation.check_query([])
assert "Expected a query dictionary, not []" == str(excinfo.value)
def test_check_query_invalid_fields():
for value in "wrong", "bar", "foo", "tlid":
with raises(exceptions.ValidationError):
validation.check_query({value: []})
def test_check_field_error_message():
with raises(exceptions.ValidationError) as excinfo:
validation.check_query({"wrong": ["abc"]})
assert "Expected query field to be one of " in str(excinfo.value)
def test_check_query_invalid_values():
for value in "", None, "foo", 123, [""], [None], iter(["abc"]):
with raises(exceptions.ValidationError):
validation.check_query({"any": value})
def test_check_values_error_message():
with raises(exceptions.ValidationError) as excinfo:
validation.check_query({"any": "abc"})
assert 'Expected "any" to be list of strings, not' in str(excinfo.value)
def test_check_uri_with_valid_values():
for value in "foobar:", "http://example.com", "git+http://example.com":
validation.check_uri(value)
def test_check_uri_with_invalid_values():
# Note that tuple catches a potential bug with using "'foo' % arg" for
# formatting.
for value in ("foobar", "htt p://example.com", None, 1234, tuple()):
with raises(exceptions.ValidationError):
validation.check_uri(value)
def test_check_uri_error_message():
with raises(exceptions.ValidationError) as excinfo:
validation.check_uri("testing")
assert "Expected a valid URI, not 'testing'" == str(excinfo.value)
def test_check_uris_with_valid_values():
validation.check_uris([])
validation.check_uris(["foobar:"])
validation.check_uris(("foobar:",))
def test_check_uris_with_invalid_values():
with raises(exceptions.ValidationError):
validation.check_uris("foobar:")
with raises(exceptions.ValidationError):
validation.check_uris(None)
with raises(exceptions.ValidationError):
validation.check_uris([None])
with raises(exceptions.ValidationError):
validation.check_uris(["foobar:", "foobar"])
with raises(exceptions.ValidationError):
validation.check_uris(iter(["http://example.com"]))
def test_check_uris_error_message():
with raises(exceptions.ValidationError) as excinfo:
validation.check_uris("testing")
assert "Expected a list of URIs, not 'testing'" == str(excinfo.value)
|