-
Notifications
You must be signed in to change notification settings - Fork 1
/
test.py
86 lines (63 loc) · 10.8 KB
/
test.py
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
# -*- coding: utf-8 -*-
import unittest
from stockholm.asn1 import ber_decoder
from stockholm.factory import CallDataRecordFactory
from stockholm.cdr.modules import call
from stockholm.cdr.modules import event
from stockholm.cdr import call_data_record
#class TestASN1(unittest.TestCase):
#
# def test_identifier(self):
# data = '\xa0\x81\x9b\xa7\x81\x98\x86\x03\r\x05\x07\x8a\x06MSRSR1\x82\x03l\xe8\x0b\x87\x03\x0f\x057\x9ff\x01\x04\x81\x03\x1a\x8e\xd0\x89\x01\x00\x8c\x07BURS1GO\x85\x08S\x93C@\x05RE\xf0\x9f+\x08S\x93C@\x05RE\x00\x84\x08\'\x02w1\x90W\x06\xf5\x8d\x07\'\xf2p\ta\x0f>\x9c\x02\x00\x01\x83\x07\x11E3F\x12\x96`\x9a\x01\x02\x8e\x01!\x8b\x07\x11Ep\tp\x01\xf3\x9d\x07\'\xf2p\ta\x0f>\x8f\x07\x11Ep\t\x00\x08\xf1\x80\x03\x0e\x02\x0b\x88\x01\x04\x9f"\x01\x02\x9f!\x07!0cT!F\xf6'
# number, size = ber_decoder.lvq_decode(data)
# self.assertEqual(number, 0)
class TestTag(unittest.TestCase):
def test_primitive(self):
data = '\x86\x03\r\x05\x07'
tag = ber_decoder.Tag(byte_string=data)
self.assertEqual(0, tag.type)
def test_primitive_length(self):
data = '\x86\x03\r\x05\x07'
tag = ber_decoder.Tag(byte_string=data)
self.assertEqual(3, tag.header.data_length)
def test_constructed_definite(self):
data = '\xbfK\x0f\x80\x04\x00\x00\x00\x0f\x81\x07\x11Ep\t\x00\x05\xf2'
tag = ber_decoder.Tag(byte_string=data)
self.assertEqual(1, tag.header.type)
def test_constructed_indefinite(self):
data = '\xa1\x80\xa0\x82\x01]\xa1\x82\x01Y\x9f!\x01\x03\x8c\x03\x00\x00\'\x89\x03\r\x05\x07\x94\x06MSRSR1\x8d\x03\x00\x00\x00\x82\x03l\xe8\r\x92\x02\x00\x01\x93\x01\x00\x8a\x03\x0f\x05\x10\x8b\x03\x0f\x056\x9ff\x01\x04\x95\x07\x11Ep\tp\x01\xf3\x86\x08S\x12rP\x82DT\xf0\x9f\x81\x0f\x08S\x12rP\x82DTr\x85\x08\'\x02\x07#psQ\xf5\x9d\x01\x11\x9f/\x01\x05\x9b\x07\'\xf2p\t\x7f\xda9\x87\x07\x11E\x11UH\x89U\x9fU\x05\x81\xbc\xe5\x00\x00\x9fV\x07\x11Ep\tp\x01\xf3\x99\x07\x11Ep\tp\x01\xf3\x9a\x03\x0f\x05\x01\x9fe\x01\x00\x9fd\x01\x08\x9fi\x01\x08\x9fh\x01\x08\x9fj\x02\x00P\x9fk\x01\x00\x9fl\x01\x02\x9fm\x01\x02\x9fq\x02\x07\x03\x9fr\x02\x01\x00\x9fs\x02\x01\x00\x9fn\x02\x01\x06\x9fo\x02\x01\x03\x9fp\x02\x05\x03\x9f\x81\x19\x01\x03\x84\x06A\x11\x94\x94\x80\x06\xbfK\x0f\x80\x04\x00\x00\x00\x0f\x81\x07\x11Ep\t\x00\x05\xf2\x97\x07URRSR1I\x9fB\x01\x01\x81\x03\x1aV\xf0\x9fD\x05\x81\xbc\xe5\x00\x00\x83\x01\x01\x80\x03\x0b\x02\r\x9f?\x01\x13\x90\x01\x00\x91\x02\x00\x01\x8f\x01\x00\x8e\x03\x00\x00\x12\x9f#\x02\x00\x03\x9c\x07\'\xf2p\t\x7f\xda9\x9f[\x07URRSR1I\x9fJ\x06!\x11UH\x89U\x96\x05DJAMO\x9f"\x01\x00\x88\x01\x00\xa0g\xaeT\x95\x06MSRSR1\x8d\x03l\xe8\x0e\x9ff\x01\x04\x81\x02\x00\x00\x83\x02\x00\x01\x80\x03\x1aV\xf1\x82\x05\x81\xbc\xe5\x00\x00\x84\x02\x00\x08\x98\x05\x81\xbc\xe5\x00\x00\x99\x07\x11Ep\tp\x01\xf3\xa5\x15\x80\x01\x02\x81\x04\x00\x00\x00\x0f\x85\n\x92\x00\x11\x04Ep\t\x00\x05\x02\x9c\x02\x05\x800\x80\xb0\x0b\x86\x03\x0f\x04:\x88\x011\x89\x01\x01\x00\x00\xa0?\xaf=\x95\x06MSRSR1\x8d\x03l\xe8\x0f\x9ff\x01\x04\x81\x02\x00\x00\x83\x02\x00\x01\x80\x03\x1aW$\x82\x05\x81\xbc\xe5\x00\x00\x98\x05\x81\xbc\xe5\x00\x00\x99\x07\x11Ep\tp\x01\xf3\x84\x02\x00\x01\x9c\x02\x05\x80\xa0\x81\xab\xa0\x81\xa8\x9a\x01\x03\x8b\x03\x00\x00\'\x88\x03\r\x05\x07\x93\x06MSRSR1\x8c\x03\x00\x00\x00\x82\x03l\xe8\x10\x90\x02\x00\x01\x91\x01\x00\x89\x03\x0f\x05\x10\x8a\x03\x0f\x056\x9ff\x01\x04\x9f(\x03\x1aV\xf0\x83\x01\x01\x9f2\x07\x11E\x11UH\x89U\x80\x03\x0b\x02\x01\x8d\x03\x00\x00\x11\x9f*\x01\x13\x9f\x1f\x01\x00\x9f\\\x01\x00\x98\x01\x01\x8f\x01\x00\x9f.\x05\x81\xbc\xe5\x00\x00\x95\x06HGUESP\x96\x07URRSR1I\x8e\x01\x00\x9f[\x061\x11\x94\x94\x80\x06\x84\x06A\x11\x94\x94\x80\x06\x85\x07\x11E\x11UH\x89U\x9b\x01\x00\x81\x03\x1aW&\x9c\x02\x00\x03\x87\x01\x00\x00\x00'
tag = ber_decoder.Tag(byte_string=data)
self.assertEqual(1, tag.header.type)
def test_constructed_definite_length(self):
data = '\xbfK\x0f\x80\x04\x00\x00\x00\x0f\x81\x07\x11Ep\t\x00\x05\xf2'
tag = ber_decoder.Tag(byte_string=data)
self.assertEqual(15, tag.header.data_length)
def test_constructed_indefinite_length(self):
data = '\xa1\x80\xa0\x82\x01]\xa1\x82\x01Y\x9f!\x01\x03\x8c\x03\x00\x00\'\x89\x03\r\x05\x07\x94\x06MSRSR1\x8d\x03\x00\x00\x00\x82\x03l\xe8\r\x92\x02\x00\x01\x93\x01\x00\x8a\x03\x0f\x05\x10\x8b\x03\x0f\x056\x9ff\x01\x04\x95\x07\x11Ep\tp\x01\xf3\x86\x08S\x12rP\x82DT\xf0\x9f\x81\x0f\x08S\x12rP\x82DTr\x85\x08\'\x02\x07#psQ\xf5\x9d\x01\x11\x9f/\x01\x05\x9b\x07\'\xf2p\t\x7f\xda9\x87\x07\x11E\x11UH\x89U\x9fU\x05\x81\xbc\xe5\x00\x00\x9fV\x07\x11Ep\tp\x01\xf3\x99\x07\x11Ep\tp\x01\xf3\x9a\x03\x0f\x05\x01\x9fe\x01\x00\x9fd\x01\x08\x9fi\x01\x08\x9fh\x01\x08\x9fj\x02\x00P\x9fk\x01\x00\x9fl\x01\x02\x9fm\x01\x02\x9fq\x02\x07\x03\x9fr\x02\x01\x00\x9fs\x02\x01\x00\x9fn\x02\x01\x06\x9fo\x02\x01\x03\x9fp\x02\x05\x03\x9f\x81\x19\x01\x03\x84\x06A\x11\x94\x94\x80\x06\xbfK\x0f\x80\x04\x00\x00\x00\x0f\x81\x07\x11Ep\t\x00\x05\xf2\x97\x07URRSR1I\x9fB\x01\x01\x81\x03\x1aV\xf0\x9fD\x05\x81\xbc\xe5\x00\x00\x83\x01\x01\x80\x03\x0b\x02\r\x9f?\x01\x13\x90\x01\x00\x91\x02\x00\x01\x8f\x01\x00\x8e\x03\x00\x00\x12\x9f#\x02\x00\x03\x9c\x07\'\xf2p\t\x7f\xda9\x9f[\x07URRSR1I\x9fJ\x06!\x11UH\x89U\x96\x05DJAMO\x9f"\x01\x00\x88\x01\x00\xa0g\xaeT\x95\x06MSRSR1\x8d\x03l\xe8\x0e\x9ff\x01\x04\x81\x02\x00\x00\x83\x02\x00\x01\x80\x03\x1aV\xf1\x82\x05\x81\xbc\xe5\x00\x00\x84\x02\x00\x08\x98\x05\x81\xbc\xe5\x00\x00\x99\x07\x11Ep\tp\x01\xf3\xa5\x15\x80\x01\x02\x81\x04\x00\x00\x00\x0f\x85\n\x92\x00\x11\x04Ep\t\x00\x05\x02\x9c\x02\x05\x800\x80\xb0\x0b\x86\x03\x0f\x04:\x88\x011\x89\x01\x01\x00\x00\xa0?\xaf=\x95\x06MSRSR1\x8d\x03l\xe8\x0f\x9ff\x01\x04\x81\x02\x00\x00\x83\x02\x00\x01\x80\x03\x1aW$\x82\x05\x81\xbc\xe5\x00\x00\x98\x05\x81\xbc\xe5\x00\x00\x99\x07\x11Ep\tp\x01\xf3\x84\x02\x00\x01\x9c\x02\x05\x80\xa0\x81\xab\xa0\x81\xa8\x9a\x01\x03\x8b\x03\x00\x00\'\x88\x03\r\x05\x07\x93\x06MSRSR1\x8c\x03\x00\x00\x00\x82\x03l\xe8\x10\x90\x02\x00\x01\x91\x01\x00\x89\x03\x0f\x05\x10\x8a\x03\x0f\x056\x9ff\x01\x04\x9f(\x03\x1aV\xf0\x83\x01\x01\x9f2\x07\x11E\x11UH\x89U\x80\x03\x0b\x02\x01\x8d\x03\x00\x00\x11\x9f*\x01\x13\x9f\x1f\x01\x00\x9f\\\x01\x00\x98\x01\x01\x8f\x01\x00\x9f.\x05\x81\xbc\xe5\x00\x00\x95\x06HGUESP\x96\x07URRSR1I\x8e\x01\x00\x9f[\x061\x11\x94\x94\x80\x06\x84\x06A\x11\x94\x94\x80\x06\x85\x07\x11E\x11UH\x89U\x9b\x01\x00\x81\x03\x1aW&\x9c\x02\x00\x03\x87\x01\x00\x00\x00'
tag = ber_decoder.Tag(byte_string=data)
self.assertEqual(0, tag.header.data_length)
class TestCallModule(unittest.TestCase):
def test_CallModule(self):
data = '\xa7\x81\x98\x86\x03\r\x05\x07\x8a\x06MSRSR1\x82\x03l\xe8\x0b\x87\x03\x0f\x057\x9ff\x01\x04\x81\x03\x1a\x8e\xd0\x89\x01\x00\x8c\x07BURS1GO\x85\x08S\x93C@\x05RE\xf0\x9f+\x08S\x93C@\x05RE\x00\x84\x08\'\x02w1\x90W\x06\xf5\x8d\x07\'\xf2p\ta\x0f>\x9c\x02\x00\x01\x83\x07\x11E3F\x12\x96`\x9a\x01\x02\x8e\x01!\x8b\x07\x11Ep\tp\x01\xf3\x9d\x07\'\xf2p\ta\x0f>\x8f\x07\x11Ep\t\x00\x08\xf1\x80\x03\x0e\x02\x0b\x88\x01\x04\x9f"\x01\x02\x9f!\x07!0cT!F\xf6'
call_module = call.MSTerminatingSMSinMSC(byte_string=data)
self.assertEqual(call_module.tag.header.number, 7)
class TestEventModule(unittest.TestCase):
def test_EventModule(self):
data = '\xb0\x0b\x86\x03\x061\x02\x88\x014\x89\x01\x01'
event_module = event.INServiceDataEventModule(byte_string=data)
self.assertEqual(event_module.tag.header.number, 16)
class TestCallDataRecord(unittest.TestCase):
def test_single_CallDataRecord(self):
data = '\xa0\x81\x98\xa7\x81\x95\x86\x03\x0c\x0b\x1e\x8a\x06MSVLZ3\x82\x03\x11\xacC\x87\x03\x061!\x9ff\x01\x04\x81\x03Y\xe2L\x89\x01\x00\x8c\x07URVLZ3O\x85\x08Sv)@"s`\xf0\x9f+\x08Sv)@"s`\x10\x84\x08\'\x02\x0760\x02\x10\xf0\x8d\x07\'\xf2p\x11Z\xa8l\x9c\x02\x00\x01\x83\x07\x11E"Q\tr \x8e\x01!\x8b\x07\x11Ep\t\x00\x11\xf7\x9d\x07\'\xf2p\x11Z\xa8l\x8f\x07\x11Ep\t\x00\x08\xf1\x80\x03\x04\x02\x0b\x88\x01\x00\x9f"\x01\x00\x9f!\x07A\x10A\x91\x06F\xf2'
count = sum(1 for x in CallDataRecordFactory.get_cdrs_from_data(data))
self.assertEqual(1, count)
def test_composite_CallDataRecord(self):
data = '\xa1\x80\xa0\x82\x01\\\xa1\x82\x01X\x9f!\x01\x03\x8c\x03\x00\x00*\x89\x03\x0c\x0b\x1e\x94\x06MSVLZ3\x8d\x03\x00\x00\x00\x82\x03\x11\xacJ\x92\x02\x00\x01\x93\x01\x00\x8a\x03\x0604\x8b\x03\x061!\x9ff\x01\x04\x95\x07\x11Ep\t\x00\x11\xf7\x86\x08S\x91tP \x844\xf0\x9f\x81\x0f\x08S\x91tP \x8442\x85\x08\'\x02\x07\x1502@\xf2\x9d\x01\x11\x9f/\x01\x05\x9b\x07\'\xf2p\x11Z\x9dc\x87\x06!Q\x04P#\xf5\x9fU\x05&\xe4\x19\x00\x00\x9fV\x07\x11Ep\t\x00\x11\xf7\x99\x07\x11Ep\t\x00\x11\xf7\x9a\x03\x060\x1e\x9fe\x01\x00\x9fd\x01\x08\x9fi\x01\x08\x9fh\x01\x08\x9fj\x02\x00P\x9fk\x01\x00\x9fl\x01\x02\x9fm\x01\x02\x9fq\x02\x07\x03\x9fr\x02\x01\x00\x9fs\x02\x01\x00\x9fn\x02\x01\x06\x9fo\x02\x01\x03\x9fp\x02\x05\x03\x9f\x81\x19\x01\x03\x84\x06A"a\x10hv\xbfK\x0f\x80\x04\x00\x00\x00\r\x81\x07\x11Ep\t\x00\x15\xf6\x97\x07URVLZ3I\x9fB\x01\x01\x81\x03Y\xdb\xbb\x9fD\x05&\xe4\x19\x00\x00\x83\x01\x01\x80\x03\x01\x02\r\x9f?\x01\x12\x90\x01\x00\x91\x02\x00\x01\x8f\x01\x00\x8e\x03\x00\x00\x16\x9f#\x02\x00\x03\x9c\x07\'\xf2p\x11Z\x9dc\x9f[\x07URVLZ3I\x9fJ\x06!Q\x04P#\xf5\x96\x05DJAMO\x9f"\x01\x00\x88\x01\x00\xa0V\xaeT\x95\x06MSVLZ3\x8d\x03\x11\xacK\x9ff\x01\x04\x81\x02\x00\x00\x83\x02\x00\x01\x80\x03Y\xdb\xbc\x82\x05&\xe4\x19\x00\x00\x84\x02\x00\x08\x98\x05&\xe4\x19\x00\x00\x99\x07\x11Ep\t\x00\x11\xf7\xa5\x15\x80\x01\x02\x81\x04\x00\x00\x00\r\x85\n\x92\x00\x11\x04Ep\t\x00\x15\x06\x9c\x02\x05\x80\xa0?\xaf=\x95\x06MSVLZ3\x8d\x03\x11\xacL\x9ff\x01\x04\x81\x02\x00\x00\x83\x02\x00\x01\x80\x03Y\xdb\xc5\x82\x05&\xe4\x19\x00\x00\x98\x05&\xe4\x19\x00\x00\x99\x07\x11Ep\t\x00\x11\xf7\x84\x02\x00\x01\x9c\x02\x05\xc0\xa0\x81\xab\xa0\x81\xa8\x9a\x01\x03\x8b\x03\x00\x00*\x88\x03\x0c\x0b\x1e\x93\x06MSVLZ3\x8c\x03\x00\x00\x00\x82\x03\x11\xacM\x90\x02\x00\x01\x91\x01\x00\x89\x03\x0604\x8a\x03\x061!\x9ff\x01\x04\x9f(\x03Y\xdb\xbb\x83\x01\x01\x9f2\x07\x11E"A\x005R\x80\x03\x01\x02\x01\x8d\x03\x00\x00\x16\x9f*\x01\x12\x9f\x1f\x01\x00\x9f\\\x01\x00\x98\x01\x01\x8f\x01\x00\x9f.\x05&\xe4\x19\x00\x00\x95\x07HGUEMVS\x96\x07URVLZ3I\x8e\x01\x00\x9f[\x061"a\x10hv\x84\x06A"a\x10hv\x85\x06!Q\x04P#\xf5\x9b\x01\x00\x81\x03Y\xdb\xc9\x9c\x02\x00\x03\x87\x01\x00\x00\x00'
count = sum(1 for x in CallDataRecordFactory.get_cdrs_from_data(data))
self.assertEqual(4, count)
def test_CallDataRecord_with_event_module(self):
data = '\xa0g\xaeT\x95\x06MSVLZ3\x8d\x03\x11\xac\xd4\x9ff\x01\x04\x81\x02\x00\x00\x83\x02\x00\x01\x80\x03Y\xdf"\x82\x05&\xe6\x12\x00\x00\x84\x02\x00\x08\x98\x05&\xe6\x12\x00\x00\x99\x07\x11Ep\t\x00\x11\xf7\xa5\x15\x80\x01\x02\x81\x04\x00\x00\x00\x0f\x85\n\x92\x00\x11\x04Ep\t\x00\x05\x02\x9c\x02\x05\x800\x80\xb0\x0b\x86\x03\x061\x02\x88\x014\x89\x01\x01\x00\x00'
cdr = call_data_record.CallDataRecord(byte_string=data)
self.assertEqual(3, len(cdr.event_modules[0].data_tags))
if __name__ == "__main__":
unittest.main()