def setup_mock_onvif_camera(mock_onvif_camera, with_h264=True, two_profiles=False, with_interfaces=True): """Prepare mock onvif.ONVIFCamera.""" devicemgmt = MagicMock() interface = MagicMock() interface.Enabled = True interface.Info.HwAddress = MAC devicemgmt.GetNetworkInterfaces.return_value = Future() devicemgmt.GetNetworkInterfaces.return_value.set_result( [interface] if with_interfaces else []) media_service = MagicMock() profile1 = MagicMock() profile1.VideoEncoderConfiguration.Encoding = "H264" if with_h264 else "MJPEG" profile2 = MagicMock() profile2.VideoEncoderConfiguration.Encoding = "H264" if two_profiles else "MJPEG" media_service.GetProfiles.return_value = Future() media_service.GetProfiles.return_value.set_result([profile1, profile2]) mock_onvif_camera.update_xaddrs.return_value = Future() mock_onvif_camera.update_xaddrs.return_value.set_result(True) mock_onvif_camera.create_devicemgmt_service = MagicMock( return_value=devicemgmt) mock_onvif_camera.create_media_service = MagicMock( return_value=media_service) def mock_constructor( host, port, user, passwd, wsdl_dir, encrypt=True, no_cache=False, adjust_time=False, transport=None, ): """Fake the controller constructor.""" return mock_onvif_camera mock_onvif_camera.side_effect = mock_constructor