def __init__(self, **kwargs): try: app_location = kwargs["app"]["location"] except KeyError as e: msg = "Need to specify app location (in the form my.module:application)" raise_from(exceptions.MissingKeysError(msg), e) return fastapi_app = import_ext_function(app_location) TestClient.__init__(self, fastapi_app)
def __init__(self, **kwargs): expected_blocks = { "app": { "location", }, } check_expected_keys(expected_blocks.keys(), kwargs) try: self._app_args = kwargs.pop("app", {}) app_location = self._app_args["location"] except KeyError as e: msg = "Need to specify app location (in the form my.module:application)" logger.error(msg) raise_from(exceptions.MissingKeysError(msg), e) self._flask_app = import_ext_function(app_location) self._test_client = self._flask_app.test_client()
def __init__(self, **kwargs): expected_blocks = { "client": { "client_id", "clean_session", # Can't really use this easily... # "userdata", # Force mqttv311 - fix if this becomes an issue # "protocol", "transport", }, "connect": { "host", "port", "keepalive", "timeout", }, "tls": { "enable", "ca_certs", "cert_reqs", "certfile", "keyfile", "tls_version", "ciphers", }, "auth": { "username", "password", }, } logger.debug("Initialising MQTT client with %s", kwargs) # check main block first check_expected_keys(expected_blocks.keys(), kwargs) # then check constructor/connect/tls_set args self._client_args = kwargs.pop("client", {}) check_expected_keys(expected_blocks["client"], self._client_args) self._connect_args = kwargs.pop("connect", {}) check_expected_keys(expected_blocks["connect"], self._connect_args) self._auth_args = kwargs.pop("auth", {}) check_expected_keys(expected_blocks["auth"], self._auth_args) if "host" not in self._connect_args: msg = "Need 'host' in 'connect' block for mqtt" logger.error(msg) raise exceptions.MissingKeysError(msg) self._connect_timeout = self._connect_args.pop("timeout", 3) # If there is any tls kwarg (including 'enable'), enable tls self._tls_args = kwargs.pop("tls", {}) check_expected_keys(expected_blocks["tls"], self._tls_args) self._handle_tls_args() logger.debug("TLS is %s", "enabled" if self._enable_tls else "disabled") logger.debug("Paho client args: %s", self._client_args) self._client = paho.Client(**self._client_args) self._client.enable_logger() if self._auth_args: self._client.username_pw_set(**self._auth_args) self._client.on_message = self._on_message if self._enable_tls: try: self._client.tls_set(**self._tls_args) except ValueError as e: # tls_set only raises ValueErrors directly raise_from( exceptions.MQTTTLSError("Unexpected error enabling TLS", e)) except ssl.SSLError as e: # incorrect cipher, etc. raise_from( exceptions.MQTTTLSError( "Unexpected SSL error enabling TLS", e)) # Arbitrary number, could just be 1 and only accept 1 message per stages # but we might want to raise an error if more than 1 message is received # during a test stage. self._message_queue = Queue(maxsize=10) self._userdata = { "queue": self._message_queue, } self._client.user_data_set(self._userdata)