X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=tests%2Ftest_pyderasn.py;h=dfea4300e78a6e4ccc8c17cd05457e6a3bc07fb6;hb=8604ed7e5f423239c839e4bfacd3a585daf0b320;hp=401d6237222ead8c0308e9f2fe05292bedfcd3c3;hpb=88a72bcbbb16c2e0d58b6c6fdc6c51b8e517ee7f;p=pyderasn.git diff --git a/tests/test_pyderasn.py b/tests/test_pyderasn.py index 401d623..dfea430 100644 --- a/tests/test_pyderasn.py +++ b/tests/test_pyderasn.py @@ -3772,6 +3772,26 @@ class TestChoice(CommonMixin, TestCase): with self.assertRaises(TagMismatch): obj.decode(int_encoded) + def test_tag_mismatch_underlying(self): + class SeqOfBoolean(SequenceOf): + schema = Boolean() + + class SeqOfInteger(SequenceOf): + schema = Integer() + + class Wahl(Choice): + schema = ( + ("erste", SeqOfBoolean()), + ) + + int_encoded = SeqOfInteger((Integer(123),)).encode() + bool_encoded = SeqOfBoolean((Boolean(False),)).encode() + obj = Wahl() + obj.decode(bool_encoded) + with self.assertRaises(TagMismatch) as err: + obj.decode(int_encoded) + self.assertEqual(err.exception.decode_path, ("erste", "0")) + @composite def seq_values_strategy(draw, seq_klass, do_expl=False): @@ -3947,7 +3967,7 @@ def sequences_strategy(draw, seq_klass): class SeqMixing(object): def test_invalid_value_type(self): with self.assertRaises(InvalidValueType) as err: - self.base_klass((1, 2, 3)) + self.base_klass(123) repr(err.exception) def test_invalid_value_type_set(self):