def test_home_assistant_init(self): """Test BluMate init.""" # Wrong password self.assertRaises(ha.BluMateError, remote.BluMate, remote.API('127.0.0.1', API_PASSWORD + 'A', 8124)) # Wrong port self.assertRaises(ha.BluMateError, remote.BluMate, remote.API('127.0.0.1', API_PASSWORD, BROKEN_PORT))
def post(self, request): """Setup an event forwarder.""" data = request.json if data is None: return self.json_message("No data received.", HTTP_BAD_REQUEST) try: host = data['host'] api_password = data['api_password'] except KeyError: return self.json_message("No host or api_password received.", HTTP_BAD_REQUEST) try: port = int(data['port']) if 'port' in data else None except ValueError: return self.json_message("Invalid value received for port.", HTTP_UNPROCESSABLE_ENTITY) api = rem.API(host, api_password, port) if not api.validate_api(): return self.json_message("Unable to validate API.", HTTP_UNPROCESSABLE_ENTITY) if self.event_forwarder is None: self.event_forwarder = rem.EventForwarder(self.hass) self.event_forwarder.connect(api) return self.json_message("Event forwarding setup.")
def test_validate_api(self): """Test Python API validate_api.""" self.assertEqual(remote.APIStatus.OK, remote.validate_api(master_api)) self.assertEqual( remote.APIStatus.INVALID_PASSWORD, remote.validate_api( remote.API("127.0.0.1", API_PASSWORD + "A", MASTER_PORT))) self.assertEqual(remote.APIStatus.CANNOT_CONNECT, remote.validate_api(broken_api))
def setUpModule(): # pylint: disable=invalid-name """Initalization of a Home Assistant server and Slave instance.""" global hass, slave, master_api hass = get_test_home_assistant() hass.bus.listen('test_event', lambda _: _) hass.states.set('test.test', 'a_state') bootstrap.setup_component( hass, http.DOMAIN, { http.DOMAIN: { http.CONF_API_PASSWORD: API_PASSWORD, http.CONF_SERVER_PORT: MASTER_PORT } }) bootstrap.setup_component(hass, 'api') hass.start() # Give eventlet time to start # TODO fix this eventlet.sleep(0.05) master_api = remote.API("127.0.0.1", API_PASSWORD, MASTER_PORT) # Start slave slave = remote.BluMate(master_api) bootstrap.setup_component( slave, http.DOMAIN, { http.DOMAIN: { http.CONF_API_PASSWORD: API_PASSWORD, http.CONF_SERVER_PORT: SLAVE_PORT } }) slave.start() # Give eventlet time to start # TODO fix this eventlet.sleep(0.05)
def setup(hass, config): """Set up the HTTP API and debug interface.""" _LOGGER.addFilter(HideSensitiveFilter(hass)) conf = config.get(DOMAIN, {}) api_password = util.convert(conf.get(CONF_API_PASSWORD), str) server_host = conf.get(CONF_SERVER_HOST, '0.0.0.0') server_port = conf.get(CONF_SERVER_PORT, SERVER_PORT) development = str(conf.get(CONF_DEVELOPMENT, "")) == "1" ssl_certificate = conf.get(CONF_SSL_CERTIFICATE) ssl_key = conf.get(CONF_SSL_KEY) cors_origins = conf.get(CONF_CORS_ORIGINS, []) server = HomeAssistantWSGI( hass, development=development, server_host=server_host, server_port=server_port, api_password=api_password, ssl_certificate=ssl_certificate, ssl_key=ssl_key, cors_origins=cors_origins ) hass.bus.listen_once( ha.EVENT_BLUMATE_START, lambda event: threading.Thread(target=server.start, daemon=True, name='WSGI-server').start()) hass.wsgi = server hass.config.api = rem.API(server_host if server_host != '0.0.0.0' else util.get_local_ip(), api_password, server_port, ssl_certificate is not None) return True
def delete(self, request): """Remove event forwarer.""" data = request.json if data is None: return self.json_message("No data received.", HTTP_BAD_REQUEST) try: host = data['host'] except KeyError: return self.json_message("No host received.", HTTP_BAD_REQUEST) try: port = int(data['port']) if 'port' in data else None except ValueError: return self.json_message("Invalid value received for port.", HTTP_UNPROCESSABLE_ENTITY) if self.event_forwarder is not None: api = rem.API(host, None, port) self.event_forwarder.disconnect(api) return self.json_message("Event forwarding cancelled.")
import blumate.remote as remote import blumate.components.http as http from blumate.const import HTTP_HEADER_HA_AUTH import blumate.util.dt as dt_util from tests.common import get_test_instance_port, get_test_home_assistant API_PASSWORD = "******" MASTER_PORT = get_test_instance_port() SLAVE_PORT = get_test_instance_port() BROKEN_PORT = get_test_instance_port() HTTP_BASE_URL = "http://127.0.0.1:{}".format(MASTER_PORT) HA_HEADERS = {HTTP_HEADER_HA_AUTH: API_PASSWORD} broken_api = remote.API('127.0.0.1', BROKEN_PORT) hass, slave, master_api = None, None, None def _url(path=""): """Helper method to generate URLs.""" return HTTP_BASE_URL + path def setUpModule(): # pylint: disable=invalid-name """Initalization of a Home Assistant server and Slave instance.""" global hass, slave, master_api hass = get_test_home_assistant() hass.bus.listen('test_event', lambda _: _)