コード例 #1
0
    def test_avp_vendor(self):
        """
        Test the range of AVP vendors is 1-0xFFFFFFFF
        """
        # Vendor specific flags means you need a non default vendor ID
        with self.assertRaises(CodecException):
            avp_val = avp.UnknownAVP(
                0,
                b'',
                flags=avp.FLAG_VENDOR,
                vendor=avp.VendorId.DEFAULT,
            )
            out_buf = bytearray(avp_val.length)
            avp_val.encode(out_buf, 0)

        avp_val = avp.UnknownAVP(
            0,
            b'',
            flags=avp.FLAG_VENDOR,
            vendor=1,
        )
        out_buf = bytearray(avp_val.length)
        avp_val.encode(out_buf, 0)
        self._compare_avp(avp_val, out_buf)

        avp_val = avp.UnknownAVP(
            0,
            b'',
            flags=avp.FLAG_VENDOR,
            vendor=0x00FFFFFF,
        )
        out_buf = bytearray(avp_val.length)
        avp_val.encode(out_buf, 0)
        self._compare_avp(avp_val, out_buf)

        # Avp vendor in range
        with self.assertRaises(CodecException):
            avp_val = avp.UnknownAVP(
                0,
                b'',
                flags=avp.FLAG_VENDOR,
                vendor=-1,
            )
            out_buf = bytearray(avp_val.length)
            avp_val.encode(out_buf, 0)

        # Avp vendor in range
        with self.assertRaises(CodecException):
            avp_val = avp.UnknownAVP(
                0,
                b'',
                flags=avp.FLAG_VENDOR,
                vendor=0xFFFFFFFF + 1,
            )
            out_buf = bytearray(avp_val.length)
            avp_val.encode(out_buf, 0)
コード例 #2
0
    def test_integer_identifier(self):
        """
        Tests we can create an AVP with a code and it defaults to the defaults
        vendor.
        """
        self._compare_avp(
            avp.AVP(1, 'Hello'),
            avp.UTF8StringAVP(
                1,
                value='Hello',
                vendor=avp.VendorId.DEFAULT,
                flags=avp.FLAG_MANDATORY,
                name='User-Name',
            ),
        )

        # Unknown AVPs default to unknown AVP
        self._compare_avp(
            avp.AVP(0xdeadb33f, b'wut'),
            avp.UnknownAVP(
                0xdeadb33f,
                value=b'wut',
                vendor=avp.VendorId.DEFAULT,
                flags=0,
                name='Unknown-AVP',
            ),
        )
コード例 #3
0
ファイル: avp_tests.py プロジェクト: stjordanis/magma-1
    def test_tuple_identifier(self):
        """
        Tests we can create an AVP with a (vendor, code) tuple
        """

        # This will resolve to the Username AVP
        self._compare_avp(
            avp.AVP((avp.VendorId.DEFAULT, 1), 'a username'),
            avp.UTF8StringAVP(1,
                              value='a username',
                              vendor=avp.VendorId.DEFAULT,
                              flags=avp.FLAG_MANDATORY,
                              name='User-Name'))

        self._compare_avp(
            avp.AVP((avp.VendorId.TGPP, 701), b'msisdn'),
            avp.OctetStringAVP(701,
                               value=b'msisdn',
                               vendor=avp.VendorId.TGPP,
                               flags=avp.FLAG_MANDATORY | avp.FLAG_VENDOR,
                               name='MSISDN'))

        # Unknown AVPs default to unknown AVP
        self._compare_avp(
            avp.AVP((0xfac3b00c, 1), b'wut'),
            avp.UnknownAVP(1,
                           value=b'wut',
                           vendor=0xfac3b00c,
                           flags=0,
                           name='Unknown-AVP'))
コード例 #4
0
ファイル: avp_tests.py プロジェクト: stjordanis/magma-1
    def test_octet_strings(self):
        """
        Tests we can encode and decode octet strings
        """
        self._compare_avp(
            avp.UnknownAVP(0, b'hello\x23'),
            memoryview(b'\x00\x00\x00\x00\x00\x00\x00\x0ehello#\x00\x00'))

        # Unicode strings won't load
        with self.assertRaises(CodecException):
            avp.OctetStringAVP(0, u'hello')
コード例 #5
0
    def test_avp_code(self):
        """
        Test the range of AVP codes is 0-0xFFFFFFFF
        """

        avp_val = avp.UnknownAVP(0, b'')
        out_buf = bytearray(avp_val.length)
        avp_val.encode(out_buf, 0)

        avp_val = avp.UnknownAVP(0xFFFFFFFF, b'')
        out_buf = bytearray(avp_val.length)
        avp_val.encode(out_buf, 0)

        with self.assertRaises(CodecException):
            avp_val = avp.UnknownAVP(-1, b'')
            out_buf = bytearray(avp_val.length)
            avp_val.encode(out_buf, 0)

        with self.assertRaises(CodecException):
            avp_val = avp.UnknownAVP(0xFFFFFFFF + 1, b'')
            out_buf = bytearray(avp_val.length)
            avp_val.encode(out_buf, 0)
コード例 #6
0
ファイル: avp_tests.py プロジェクト: stjordanis/magma-1
    def test_avp_flags(self):
        """
        Tests we can encode and decode AVPs with different flags
        """
        self._compare_avp(avp.UnknownAVP(0, b''),
                          memoryview(b'\x00\x00\x00\x00\x00\x00\x00\x08'))

        avp_val = avp.UnknownAVP(0, b'', flags=avp.FLAG_MANDATORY)
        self._compare_avp(avp_val, b'\x00\x00\x00\x00@\x00\x00\x08')
        self.assertFalse(avp_val.vendor_specific)
        self.assertTrue(avp_val.mandatory)
        self.assertFalse(avp_val.protected)

        avp_val = avp.UnknownAVP(0, b'', flags=avp.FLAG_PROTECTED)
        self._compare_avp(avp_val, b'\x00\x00\x00\x00 \x00\x00\x08')
        self.assertFalse(avp_val.vendor_specific)
        self.assertFalse(avp_val.mandatory)
        self.assertTrue(avp_val.protected)

        avp_val = avp.UnknownAVP(0,
                                 b'',
                                 flags=avp.FLAG_VENDOR,
                                 vendor=avp.VendorId.TGPP)
        self._compare_avp(avp_val,
                          b'\x00\x00\x00\x00\x80\x00\x00\x0c\x00\x00(\xaf')
        self.assertTrue(avp_val.vendor_specific)
        self.assertFalse(avp_val.mandatory)
        self.assertFalse(avp_val.protected)

        avp_val = avp.UnknownAVP(0,
                                 b'',
                                 flags=avp.FLAG_VENDOR | avp.FLAG_MANDATORY,
                                 vendor=avp.VendorId.TGPP)
        self._compare_avp(avp_val,
                          b'\x00\x00\x00\x00\xc0\x00\x00\x0c\x00\x00(\xaf')
        self.assertTrue(avp_val.vendor_specific)
        self.assertTrue(avp_val.mandatory)
        self.assertFalse(avp_val.protected)

        avp_val = avp.UnknownAVP(0,
                                 b'',
                                 flags=avp.FLAG_VENDOR | avp.FLAG_MANDATORY
                                 | avp.FLAG_PROTECTED,
                                 vendor=avp.VendorId.TGPP)
        self._compare_avp(avp_val,
                          b'\x00\x00\x00\x00\xe0\x00\x00\x0c\x00\x00(\xaf')
        self.assertTrue(avp_val.vendor_specific)
        self.assertTrue(avp_val.mandatory)
        self.assertTrue(avp_val.protected)