def test_with_real_server(self): with ServerResource() as server: sslw = SslSocketTransport('', port=server.port, cert_file=CertFiles.CERT_AND_KEY, ca_file=CertFiles.CERT_AND_KEY) assert sslw.is_connected response = sslw.communicate('HELLO\n') assert response == response_for("HELLO") del sslw with pytest.raises(OSError): server.socket._check_connected()
def test_cert_bad_hostname(self): with ServerResource() as server: with pytest.raises(TransportError) as exc: SslSocketTransport('', port=server.port, cert_file=CertFiles.BAD_HOSTNAME) assert 'right hostname' in exc.value.message.lower()
def test_missing_cert(self): with pytest.raises(TransportError) as exc: SslSocketTransport('', port=0, cert_file="not.there", ca_file='ca.not.there') assert "ca 'ca.not.there'" in exc.value.message.lower()
def test_no_ca(self): with ServerResource() as server: with pytest.raises(TransportError) as exc: SslSocketTransport('', port=server.port, cert_file=CertFiles.CERT_AND_KEY) assert 'cert not trusted' in exc.value.message.lower()
def test_bad_port(self): with pytest.raises(TransportError) as exc: SslSocketTransport('localhost', port=12345, cert_file=CertFiles.CERT_AND_KEY) message = exc.value.message.lower() assert 'nothing listening on localhost:12345' in message
def test_missing_cert(self): with pytest.raises(squeezealexa.transport.base.Error) as exc: SslSocketTransport('', port=0, cert_file="not.there", ca_file='ca.not.there') assert "can't find 'ca.not.there'" in exc.value.message.lower()
def test_timeout(self): with TimeoutServer() as server: with pytest.raises(TransportError) as exc: SslSocketTransport('localhost', port=server.port, cert_file=CertFiles.CERT_AND_KEY, ca_file=CertFiles.CERT_AND_KEY, timeout=1) assert "check the server setup and the firewall" in str(exc)
def create(self, mqtt_client=None): if self.mqtt_settings.configured: s = self.mqtt_settings print_d("Found MQTT config, so setting up MQTT transport.") client = mqtt_client or CustomClient(s) return MqttTransport(client, req_topic=s.topic_req, resp_topic=s.topic_resp) print_d("Defaulting to SSL transport") s = self.ssl_config return SslSocketTransport(hostname=s.server_hostname, port=s.port, ca_file=s.ca_file_path, cert_file=s.cert_file_path, verify_hostname=s.verify_server_hostname)
def create_transport(ssl_config=SSL_SETTINGS, mqtt_settings=MQTT_SETTINGS): if mqtt_settings.configured: s = mqtt_settings print_d("Found MQTT config, so setting up MQTT transport.") client = CustomClient(s) transport = MqttTransport(client, req_topic=s.TOPIC_REQ, resp_topic=s.TOPIC_RESP) transport.start() return transport print_d("Defaulting to SSL transport") s = ssl_config return SslSocketTransport(hostname=s.server_hostname, port=s.port, ca_file=s.ca_file_path, cert_file=s.cert_file_path, verify_hostname=s.verify_server_hostname)
def get_server(cls): """ :return a Server instance :rtype Server """ if cls._server and cls._server.is_stale(): del cls._server cls._server = None if not cls._server or cls._server.is_stale(): sslw = SslSocketTransport(hostname=SERVER_HOSTNAME, port=SERVER_SSL_PORT, ca_file=CA_FILE_PATH, cert_file=CERT_FILE_PATH, verify_hostname=VERIFY_SERVER_HOSTNAME) cls._server = Server(sslw, user=SERVER_USERNAME, password=SERVER_PASSWORD, cur_player_id=DEFAULT_PLAYER, debug=DEBUG_LMS) print_d("Created {!r}", cls._server) else: print_d("Reusing cached {!r}", cls._server) return cls._server
def test_bad_hostname(self): with pytest.raises(TransportError) as exc: SslSocketTransport('zzz.qqq', port=0) msg = exc.value.message.lower() assert "unknown host" in msg assert "zzz.qqq" in msg
def test_cert_no_key(self): with pytest.raises(TransportError) as exc: SslSocketTransport('', port=0, cert_file=CertFiles.CERT_ONLY) assert 'include the private key' in exc.value.message.lower()
def _working_transport(self, server): return SslSocketTransport('', port=server.port, cert_file=CertFiles.CERT_AND_KEY, ca_file=CertFiles.CERT_AND_KEY)
def test_wrong_port(self): with ServerResource(tls=False) as server: with pytest.raises(TransportError) as exc: SslSocketTransport('localhost', port=server.port) msg = exc.value.message.lower() assert ('not tls on port %d' % server.port) in msg
def test_wrong_port(self): with ServerResource(tls=False) as server: with pytest.raises(squeezealexa.transport.base.Error) as exc: SslSocketTransport('', port=server.port) msg = exc.value.message.lower() assert ('not tls on port %d' % server.port) in msg
if cur_play_details: print("Currently playing: %s" % " >> ".join(cur_play_details)) else: print("Nothing currently in playlist") status = server.get_status() print("Up next: %s >> %s >> %s" % (status.get('genre', "Unknown genre"), status.get('title', 'Unknown track'), status.get('artist', 'Unknown artist'))) def die(e): print_exc() print("\n>>>> Failed with %s: %s <<<<" % (type(e).__name__, e)) sys.exit(2) if __name__ == '__main__': try: sslst = SslSocketTransport(hostname=SERVER_HOSTNAME, port=SERVER_SSL_PORT, ca_file=CA_FILE_PATH, cert_file=CERT_FILE_PATH, verify_hostname=VERIFY_SERVER_HOSTNAME) run_diagnostics(sslst) print("\n>>>> Looks good! <<<<") sys.exit(0) except Exception as e: die(e)