File: test_decoder.py

package info (click to toggle)
python-pyasn1-lextudio 1.1.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,556 kB
  • sloc: python: 17,511; makefile: 171
file content (136 lines) | stat: -rw-r--r-- 3,798 bytes parent folder | download
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
#
# This file is part of pyasn1 software.
#
# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pyasn1/license.html
#
import sys

try:
    import unittest2 as unittest

except ImportError:
    import unittest

from tests.base import BaseTestCase

from pyasn1.type import namedtype
from pyasn1.type import univ
from pyasn1.codec.native import decoder
from pyasn1.error import PyAsn1Error


class BadAsn1SpecTestCase(BaseTestCase):
    def testBadSpec(self):
        try:
            decoder.decode("", asn1Spec="not an Asn1Item")
        except PyAsn1Error:
            pass
        else:
            assert 0, "Invalid asn1Spec accepted"


class IntegerDecoderTestCase(BaseTestCase):
    def testPosInt(self):
        assert decoder.decode(12, asn1Spec=univ.Integer()) == univ.Integer(12)

    def testNegInt(self):
        assert decoder.decode(-12, asn1Spec=univ.Integer()) == univ.Integer(-12)


class BooleanDecoderTestCase(BaseTestCase):
    def testTrue(self):
        assert decoder.decode(True, asn1Spec=univ.Boolean()) == univ.Boolean(True)

    def testTrueNeg(self):
        assert decoder.decode(False, asn1Spec=univ.Boolean()) == univ.Boolean(False)


class BitStringDecoderTestCase(BaseTestCase):
    def testSimple(self):
        assert decoder.decode("11111111", asn1Spec=univ.BitString()) == univ.BitString(
            hexValue="ff"
        )


class OctetStringDecoderTestCase(BaseTestCase):
    def testSimple(self):
        assert decoder.decode(
            "Quick brown fox", asn1Spec=univ.OctetString()
        ) == univ.OctetString("Quick brown fox")


class NullDecoderTestCase(BaseTestCase):
    def testNull(self):
        assert decoder.decode(None, asn1Spec=univ.Null()) == univ.Null("")


class ObjectIdentifierDecoderTestCase(BaseTestCase):
    def testOne(self):
        assert decoder.decode(
            "1.3.6.11", asn1Spec=univ.ObjectIdentifier()
        ) == univ.ObjectIdentifier("1.3.6.11")


class RealDecoderTestCase(BaseTestCase):
    def testSimple(self):
        assert decoder.decode(1.33, asn1Spec=univ.Real()) == univ.Real(1.33)


class SequenceDecoderTestCase(BaseTestCase):
    def setUp(self):
        BaseTestCase.setUp(self)

        self.s = univ.Sequence(
            componentType=namedtype.NamedTypes(
                namedtype.NamedType("place-holder", univ.Null()),
                namedtype.NamedType("first-name", univ.OctetString()),
                namedtype.NamedType("age", univ.Integer(33)),
            )
        )

    def testSimple(self):
        s = self.s.clone()
        s[0] = univ.Null("")
        s[1] = univ.OctetString("xx")
        s[2] = univ.Integer(33)
        assert (
            decoder.decode(
                {"place-holder": None, "first-name": "xx", "age": 33}, asn1Spec=self.s
            )
            == s
        )


class ChoiceDecoderTestCase(BaseTestCase):
    def setUp(self):
        BaseTestCase.setUp(self)

        self.s = univ.Choice(
            componentType=namedtype.NamedTypes(
                namedtype.NamedType("place-holder", univ.Null()),
                namedtype.NamedType("first-name", univ.OctetString()),
                namedtype.NamedType("age", univ.Integer(33)),
            )
        )

    def testSimple(self):
        s = self.s.clone()
        s[1] = univ.OctetString("xx")
        assert decoder.decode({"first-name": "xx"}, asn1Spec=self.s) == s


class AnyDecoderTestCase(BaseTestCase):
    def setUp(self):
        BaseTestCase.setUp(self)

        self.s = univ.Any()

    def testSimple(self):
        assert decoder.decode("fox", asn1Spec=univ.Any()) == univ.Any("fox")


suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])

if __name__ == "__main__":
    unittest.TextTestRunner(verbosity=2).run(suite)