def get_inform( cls, oui: str = '48BF74', sw_version: str = 'BaiBS_RTS_3.1.6', enb_serial: str = '120200002618AGP0003', event_codes: Optional[List[str]] = None, ) -> models.Inform: if event_codes is None: event_codes = [] msg = models.Inform() # DeviceId device_id = models.DeviceIdStruct() device_id.Manufacturer = 'Unused' device_id.OUI = oui device_id.ProductClass = 'Unused' device_id.SerialNumber = enb_serial msg.DeviceId = device_id # Event msg.Event = models.EventList() event_list = [] for code in event_codes: event = models.EventStruct() event.EventCode = code event.CommandKey = '' event_list.append(event) msg.Event.EventStruct = event_list # ParameterList val_list = [] val_list.append(cls.get_parameter_value_struct( name='Device.DeviceInfo.HardwareVersion', val_type='string', data='VER.C', )) val_list.append(cls.get_parameter_value_struct( name='Device.DeviceInfo.ManufacturerOUI', val_type='string', data=oui, )) val_list.append(cls.get_parameter_value_struct( name='Device.DeviceInfo.SoftwareVersion', val_type='string', data=sw_version, )) val_list.append(cls.get_parameter_value_struct( name='Device.DeviceInfo.SerialNumber', val_type='string', data=enb_serial, )) val_list.append(cls.get_parameter_value_struct( name='Device.ManagementServer.ConnectionRequestURL', val_type='string', data='http://192.168.60.248:7547/25dbc91d31276f0cb03391160531ecae', )) msg.ParameterList = models.ParameterValueList() msg.ParameterList.ParameterValueStruct = val_list return msg
def test_serial_not_found(self): """ Test that the SM manager doesn't crash if serial number is not found in an Inform message under any expected param path. """ manager = self._get_manager() ctx = get_spyne_context_with_ip("192.168.60.145") inform_msg = models.Inform( DeviceId=models.DeviceIdStruct( Manufacturer='Unused', OUI='48BF74', ProductClass='Unused', ), Event=models.EventList(EventStruct=[]), ParameterList=models.ParameterValueList(ParameterValueStruct=[ Tr069MessageBuilder.get_parameter_value_struct( name='Device.DeviceInfo.HardwareVersion', val_type='string', data='VER.C', ), Tr069MessageBuilder.get_parameter_value_struct( name='Device.DeviceInfo.ManufacturerOUI', val_type='string', data='48BF74', ), Tr069MessageBuilder.get_parameter_value_struct( name='Device.DeviceInfo.SoftwareVersion', val_type='string', data='BaiBS_RTS_3.1.6', ), ])) # No exception should be thrown, and we should return an empty response resp = manager.handle_tr069_message(ctx, inform_msg) self.assertTrue(isinstance(resp, models.DummyInput))
def test_as_dict(self): inp = models.Inform( DeviceId=models.DeviceIdStruct( Manufacturer='some_manufacturer', OUI='123456', ProductClass='some_product_class', SerialNumber='some_serial_number', ), Event=models.EventList( EventStruct=[ models.EventStruct( EventCode='some_event_code', CommandKey='some_command_key', ), models.EventStruct( EventCode='other_event_code', CommandKey='other_command_key', ), ], ), MaxEnvelopes=1234, CurrentTime=datetime.fromisoformat('2021-09-15 16:15:43.351680'), ) out = as_dict(inp) expected = { 'DeviceId': { 'Manufacturer': 'some_manufacturer', 'OUI': '123456', 'ProductClass': 'some_product_class', 'SerialNumber': 'some_serial_number', }, 'Event': { 'EventStruct': [ { 'EventCode': 'some_event_code', 'CommandKey': 'some_command_key', }, { 'EventCode': 'other_event_code', 'CommandKey': 'other_command_key', }, ], }, 'MaxEnvelopes': '1234', 'CurrentTime': '2021-09-15 16:15:43.351680', } self.assertEqual(out, expected)
def _get_inform(self) -> models.Inform: msg = models.Inform() # DeviceId device_id = models.DeviceIdStruct() device_id.Manufacturer = 'Unused' device_id.OUI = '48BF74' device_id.ProductClass = 'Unused' device_id.SerialNumber = '120200002618AGP0003' msg.DeviceId = device_id # Event msg.Event = models.EventList() msg.Event.EventStruct = [] # ParameterList val_list = [] val_list.append( self._get_parameter_value_struct( name='Device.DeviceInfo.HardwareVersion', val_type='string', data='VER.C', )) val_list.append( self._get_parameter_value_struct( name='Device.DeviceInfo.ManufacturerOUI', val_type='string', data='48BF74', )) val_list.append( self._get_parameter_value_struct( name='Device.DeviceInfo.SoftwareVersion', val_type='string', data='BaiBS_RTS_3.1.6', )) val_list.append( self._get_parameter_value_struct( name='Device.ManagementServer.ConnectionRequestURL', val_type='string', data= 'http://192.168.60.248:7547/25dbc91d31276f0cb03391160531ecae', )) msg.ParameterList = models.ParameterValueList() msg.ParameterList.ParameterValueStruct = val_list return msg
def get_qrtb_inform( cls, params: List[Param], oui: str = '48BF74', enb_serial: str = '120200024019APP0105', event_codes: Optional[List[str]] = None, ) -> models.Inform: if event_codes is None: event_codes = [] msg = models.Inform() # DeviceId device_id = models.DeviceIdStruct() device_id.Manufacturer = 'Baicells' device_id.OUI = oui device_id.ProductClass = 'FAP/mBS31001/SC' device_id.SerialNumber = enb_serial msg.DeviceId = device_id # Event msg.Event = models.EventList() event_list = [] for code in event_codes: event = models.EventStruct() event.EventCode = code event.CommandKey = '' event_list.append(event) msg.Event.EventStruct = event_list # ParameterList val_list = [ cls.get_parameter_value_struct(name=p.name, val_type=p.val_type, data=p.data) for p in params ] msg.ParameterList = models.ParameterValueList() msg.ParameterList.ParameterValueStruct = val_list return msg