async def setup_unifi_integration( hass, config=ENTRY_CONFIG, options=ENTRY_OPTIONS, sites=SITES, clients_response=None, devices_response=None, clients_all_response=None, wlans_response=None, known_wireless_clients=None, controllers=None, ): """Create the UniFi controller.""" configuration = {} if controllers: configuration = {unifi.DOMAIN: {unifi.CONF_CONTROLLERS: controllers}} assert await async_setup_component(hass, unifi.DOMAIN, configuration) config_entry = MockConfigEntry( domain=unifi.DOMAIN, data=deepcopy(config), options=deepcopy(options), entry_id=1, ) config_entry.add_to_hass(hass) if known_wireless_clients: hass.data[UNIFI_WIRELESS_CLIENTS].update_data(known_wireless_clients, config_entry) mock_client_responses = deque() if clients_response: mock_client_responses.append(clients_response) mock_device_responses = deque() if devices_response: mock_device_responses.append(devices_response) mock_client_all_responses = deque() if clients_all_response: mock_client_all_responses.append(clients_all_response) mock_wlans_responses = deque() if wlans_response: mock_wlans_responses.append(wlans_response) mock_requests = [] async def mock_request(self, method, path, json=None): mock_requests.append({"method": method, "path": path, "json": json}) if path == "s/{site}/stat/sta" and mock_client_responses: return mock_client_responses.popleft() if path == "s/{site}/stat/device" and mock_device_responses: return mock_device_responses.popleft() if path == "s/{site}/rest/user" and mock_client_all_responses: return mock_client_all_responses.popleft() if path == "s/{site}/rest/wlanconf" and mock_wlans_responses: return mock_wlans_responses.popleft() return {} # "aiounifi.Controller.start_websocket", return_value=True with patch("aiounifi.Controller.login", return_value=True), patch("aiounifi.Controller.sites", return_value=sites), patch( "aiounifi.Controller.request", new=mock_request), patch.object( aiounifi.websocket.WSClient, "start", return_value=True): await hass.config_entries.async_setup(config_entry.entry_id) await hass.async_block_till_done() controller_id = unifi.get_controller_id_from_config_entry(config_entry) if controller_id not in hass.data[unifi.DOMAIN]: return None controller = hass.data[unifi.DOMAIN][controller_id] controller.mock_client_responses = mock_client_responses controller.mock_device_responses = mock_device_responses controller.mock_client_all_responses = mock_client_all_responses controller.mock_wlans_responses = mock_wlans_responses controller.mock_requests = mock_requests return controller
async def setup_unifi_integration( hass, config, options, sites, clients_response, devices_response, clients_all_response, ): """Create the UniFi controller.""" hass.data[UNIFI_CONFIG] = [] hass.data[UNIFI_WIRELESS_CLIENTS] = unifi.UnifiWirelessClients(hass) config_entry = config_entries.ConfigEntry( version=1, domain=unifi.DOMAIN, title="Mock Title", data=config, source="test", connection_class=config_entries.CONN_CLASS_LOCAL_POLL, system_options={}, options=options, entry_id=1, ) mock_client_responses = deque() mock_client_responses.append(clients_response) mock_device_responses = deque() mock_device_responses.append(devices_response) mock_client_all_responses = deque() mock_client_all_responses.append(clients_all_response) mock_requests = [] async def mock_request(self, method, path, json=None): mock_requests.append({"method": method, "path": path, "json": json}) if path == "s/{site}/stat/sta" and mock_client_responses: return mock_client_responses.popleft() if path == "s/{site}/stat/device" and mock_device_responses: return mock_device_responses.popleft() if path == "s/{site}/rest/user" and mock_client_all_responses: return mock_client_all_responses.popleft() return {} with patch("aiounifi.Controller.login", return_value=True), patch("aiounifi.Controller.sites", return_value=sites), patch( "aiounifi.Controller.request", new=mock_request): await unifi.async_setup_entry(hass, config_entry) await hass.async_block_till_done() hass.config_entries._entries.append(config_entry) controller_id = unifi.get_controller_id_from_config_entry(config_entry) controller = hass.data[unifi.DOMAIN][controller_id] controller.mock_client_responses = mock_client_responses controller.mock_device_responses = mock_device_responses controller.mock_client_all_responses = mock_client_all_responses controller.mock_requests = mock_requests return controller