Пример #1
0
 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()
Пример #2
0
 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()
Пример #3
0
 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()
Пример #4
0
 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()
Пример #5
0
 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
Пример #6
0
 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()
Пример #7
0
 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)
Пример #8
0
    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)
Пример #9
0
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)
Пример #10
0
 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
Пример #11
0
 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
Пример #12
0
 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()
Пример #13
0
 def _working_transport(self, server):
     return SslSocketTransport('', port=server.port,
                               cert_file=CertFiles.CERT_AND_KEY,
                               ca_file=CertFiles.CERT_AND_KEY)
Пример #14
0
 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
Пример #15
0
 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
Пример #16
0
    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)