Exemple #1
0
 def _on_client_connect(self, data):
     """Handle client connect."""
     client = None
     if data.get('id') in self._clients:
         client = self._clients[data.get('id')]
         client.update_connected(True)
     else:
         client = Snapclient(self, data.get('client'))
         self._clients[data.get('id')] = client
         if self._new_client_callback_func and callable(self._new_client_callback_func):
             self._new_client_callback_func(client)
     _LOGGER.info('client %s connected', client.friendly_name)
Exemple #2
0
 def setUp(self):
     data = {
         'id': 'test',
         'host': {
             'ip': '0.0.0.0',
             'name': 'localhost'
         },
         'config': {
             'name': '',
             'latency': 0,
             'volume': {
                 'muted': False,
                 'percent': 90
             }
         },
         'snapclient': {
             'version': '0.0'
         },
         'connected': True
     }
     server = MagicMock()
     self.client = Snapclient(server, data)
Exemple #3
0
 def synchronize(self, status):
     """Synchronize snapserver."""
     self._version = status.get('server').get('version')
     self._groups = {}
     self._clients = {}
     self._streams = {}
     for stream in status.get('server').get('streams'):
         self._streams[stream.get('id')] = Snapstream(stream)
         _LOGGER.debug('stream found: %s', self._streams[stream.get('id')])
     for group in status.get('server').get('groups'):
         self._groups[group.get('id')] = Snapgroup(self, group)
         _LOGGER.debug('group found: %s', self._groups[group.get('id')])
         for client in group.get('clients'):
             self._clients[client.get('id')] = Snapclient(self, client)
             _LOGGER.debug('client found: %s', self._clients[client.get('id')])
Exemple #4
0
class TestSnapclient(unittest.TestCase):

    def setUp(self):
        data = {
            'id': 'test',
            'host': {
                'ip': '0.0.0.0',
                'name': 'localhost'
            },
            'config': {
                'name': '',
                'latency': 0,
                'volume': {
                    'muted': False,
                    'percent': 90
                }
            },
            'snapclient': {
                'version': '0.0'
            },
            'connected': True
        }
        server = MagicMock()
        self.client = Snapclient(server, data)

    @mock.patch.object(Snapclient, 'group', new=1)
    def test_init(self):
        self.assertEqual(self.client.identifier, 'test')
        self.assertEqual(self.client.friendly_name, 'localhost')
        self.assertEqual(self.client.version, '0.0')
        self.assertEqual(self.client.connected, True)
        self.assertEqual(self.client.name, '')
        self.assertEqual(self.client.latency, 0)
        self.assertEqual(self.client.volume, 90)
        self.assertEqual(self.client.muted, False)
        self.assertEqual(self.client.group, 1)

    @mock.patch.object(Snapclient, 'group')
    def test_set_volume(self, mock):
        async_run(self.client.set_volume(100))
        self.assertEqual(self.client.volume, 100)

    def test_set_name(self):
        async_run(self.client.set_name('test'))
        self.assertEqual(self.client.name, 'test')

    def test_set_latency(self):
        async_run(self.client.set_latency(1))
        self.assertEqual(self.client.latency, 1)

    def test_set_muted(self):
        async_run(self.client.set_muted(True))
        self.assertEqual(self.client.muted, True)

    @mock.patch.object(Snapclient, 'group')
    def test_update_volume(self, mock):
        self.client.update_volume({'volume': {'percent': 50, 'muted': True}})
        self.assertEqual(self.client.volume, 50)
        self.assertEqual(self.client.muted, True)

    def test_update_name(self):
        self.client.update_name({'name': 'new name'})
        self.assertEqual(self.client.name, 'new name')

    def test_update_latency(self):
        self.client.update_latency({'latency': 50})
        self.assertEqual(self.client.latency, 50)

    def test_update_connected(self):
        self.client.update_connected(False)
        self.assertEqual(self.client.connected, False)

    @mock.patch.object(Snapclient, 'group')
    def test_snapshot_restore(self, mock):
        async_run(self.client.set_name('first'))
        self.client.snapshot()
        async_run(self.client.set_name('other name'))
        self.assertEqual(self.client.name, 'other name')
        async_run(self.client.restore())
        self.assertEqual(self.client.name, 'first')

    def test_set_callback(self):
        cb = MagicMock()
        self.client.set_callback(cb)
        self.client.update_connected(False)
        cb.assert_called_with(self.client)