コード例 #1
0
    def setUp(self):
        # use a mock for the api calls
        self.mockapi = Mockapi('')

        # shortcuts to some values
        self.client_id = self.mockapi.clients_list[0]['client_id']
        self.client_settings = self.mockapi.settings['client_settings'][
            self.client_id]

        # create the app object
        self.app = App(self.mockapi)

        # create the client settings object
        self.settings = ClientSettings(self.app, self.client_id)
コード例 #2
0
    def create(self, description, features=None):
        """Create a new client.

        Args:
            description: client description
            features: list of features

        Returns:
            new client_id
        """
        kwargs = {'description': description}
        if features:
            kwargs['features'] = features
        else:
            features = []
        r = self.app.apicall('clients/add', **kwargs)
        client_id = r['client_id']
        client_secret = r['client_secret']

        client_def = {
            'client_id': client_id,
            'client_secret': client_secret,
            'description': description,
            'features': features,
            'whitelist': ['0.0.0.0/0'],
        }

        # update cache
        cache_key = 'clients.{}'.format(client_id)
        self.app.set_cache(cache_key, client_def)

        self._client_id = client_id
        self._settings = ClientSettings(self.app, client_id)

        return client_id
コード例 #3
0
    def __init__(self, app, client_id):
        """Initialize.

        Args:
            app: App object
            client_id: client_id of client
        """
        self._app = app
        self._client_id = client_id
        self._settings = ClientSettings(app, client_id)
コード例 #4
0
    def setUp(self):
        # use a mock for the api calls
        self.mockapi = Mockapi('')

        # shortcuts to some values
        self.client_id = self.mockapi.clients_list[0]['client_id']
        self.client_settings = self.mockapi.settings['client_settings'][self.client_id]

        # create the app object
        self.app = App(self.mockapi)

        # create the client settings object
        self.settings = ClientSettings(self.app, self.client_id)
コード例 #5
0
class TestClientSettings(unittest.TestCase):

    def setUp(self):
        # use a mock for the api calls
        self.mockapi = Mockapi('')

        # shortcuts to some values
        self.client_id = self.mockapi.clients_list[0]['client_id']
        self.client_settings = self.mockapi.settings['client_settings'][self.client_id]

        # create the app object
        self.app = App(self.mockapi)

        # create the client settings object
        self.settings = ClientSettings(self.app, self.client_id)

    def test_get_existant(self):
        # get existing setting
        key = list(self.client_settings.keys())[0]
        value = self.settings.get(key)
        expected = self.client_settings[key]
        self.assertEqual(value, expected)

        calls = [
            mock.call('settings/get_all'),
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)

        # cache is populated
        expected = self.mockapi.settings
        self.assertEqual(self.app.get_cache('settings'), expected)

        key = list(self.client_settings.keys())[1]
        value = self.settings.get(key)
        expected = self.client_settings[key]
        self.assertEqual(value, expected)

        # getting another setting does not cause more api calls
        self.assertEqual(calls, self.mockapi.call.mock_calls)

    def test_get_nonexistant(self):
        # get setting that does not exist
        key = 'bogus'
        value = self.settings.get(key)
        self.assertIs(value, None)

        # cache is populated
        expected = self.mockapi.settings
        self.assertEqual(self.app.get_cache('settings'), expected)

        calls = [
            mock.call('settings/get_all'),
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)

    def test_get_all(self):
        all_settings = self.settings.get_all()
        expected = self.mockapi.settings['default_settings']
        expected.update(self.mockapi.settings['client_settings'][self.settings.client_id])
        self.assertEqual(all_settings, expected)

        # cache is populated
        expected = self.mockapi.settings
        self.assertEqual(self.app.get_cache('settings'), expected)

        calls = [
            mock.call('settings/get_all'),
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)

    def test_set(self):
        # existing key
        key = list(self.client_settings.keys())[0]
        value = 'new value'
        result = self.settings.set(key, value)
        self.assertIs(result, True)

        # cache is not populated
        try:
            self.app.get_cache('settings')
        except KeyError:
            pass  # expection
        else:
            self.fail("KeyError not raised on missing cache key")

        calls = [
            mock.call('settings/set', for_client_id=self.client_id, key=key, value=value),
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)

        # non-existing key
        key = 'bogus'
        value = self.settings.get(key)
        self.assertIs(value, None)
        calls.append(mock.call('settings/get_all'))
        self.assertEqual(calls, self.mockapi.call.mock_calls)

        # cache is populated
        expected = self.mockapi.settings
        self.assertEqual(self.app.get_cache('settings'), expected)

        # set non-existing key
        result = self.settings.set(key, value)
        self.assertIs(result, False)

        # cache is updated
        expected = self.app.get_cache('settings.client_settings.{}.{}'.format(self.client_id, key))
        self.assertEqual(value, expected)

        calls.append(mock.call('settings/set', for_client_id=self.client_id, key=key, value=value))
        self.assertEqual(calls, self.mockapi.call.mock_calls)

    def test_set_multi(self):
        items = {
            list(self.client_settings.keys())[0]: 'updated',
            'bogus': 'new setting',
        }
        report = self.settings.set_multi(items)
        expected = {
            list(self.client_settings.keys())[0]: True,
            'bogus': False,
        }
        self.assertEqual(report, expected)

        # cache is not populated
        try:
            self.app.get_cache('settings')
        except KeyError:
            pass  # expection
        else:
            self.fail("KeyError not raised on missing cache key")

        calls = [
            mock.call('settings/set_multi', for_client_id=self.client_id, items=items)
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)

    def test_delete(self):
        key = list(self.client_settings.keys())[0]
        result = self.settings.delete(key)
        self.assertIs(result, True)

        calls = [
            mock.call('settings/delete', for_client_id=self.client_id, key=key)
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)
コード例 #6
0
class TestClientSettings(unittest.TestCase):
    def setUp(self):
        # use a mock for the api calls
        self.mockapi = Mockapi('')

        # shortcuts to some values
        self.client_id = self.mockapi.clients_list[0]['client_id']
        self.client_settings = self.mockapi.settings['client_settings'][
            self.client_id]

        # create the app object
        self.app = App(self.mockapi)

        # create the client settings object
        self.settings = ClientSettings(self.app, self.client_id)

    def test_get_existant(self):
        # get existing setting
        key = list(self.client_settings.keys())[0]
        value = self.settings.get(key)
        expected = self.client_settings[key]
        self.assertEqual(value, expected)

        calls = [
            mock.call('settings/get_all'),
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)

        # cache is populated
        expected = self.mockapi.settings
        self.assertEqual(self.app.get_cache('settings'), expected)

        key = list(self.client_settings.keys())[1]
        value = self.settings.get(key)
        expected = self.client_settings[key]
        self.assertEqual(value, expected)

        # getting another setting does not cause more api calls
        self.assertEqual(calls, self.mockapi.call.mock_calls)

    def test_get_nonexistant(self):
        # get setting that does not exist
        key = 'bogus'
        value = self.settings.get(key)
        self.assertIs(value, None)

        # cache is populated
        expected = self.mockapi.settings
        self.assertEqual(self.app.get_cache('settings'), expected)

        calls = [
            mock.call('settings/get_all'),
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)

    def test_get_all(self):
        all_settings = self.settings.get_all()
        expected = self.mockapi.settings['default_settings']
        expected.update(
            self.mockapi.settings['client_settings'][self.settings.client_id])
        self.assertEqual(all_settings, expected)

        # cache is populated
        expected = self.mockapi.settings
        self.assertEqual(self.app.get_cache('settings'), expected)

        calls = [
            mock.call('settings/get_all'),
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)

    def test_set(self):
        # existing key
        key = list(self.client_settings.keys())[0]
        value = 'new value'
        result = self.settings.set(key, value)
        self.assertIs(result, True)

        # cache is not populated
        try:
            self.app.get_cache('settings')
        except KeyError:
            pass  # expection
        else:
            self.fail("KeyError not raised on missing cache key")

        calls = [
            mock.call('settings/set',
                      for_client_id=self.client_id,
                      key=key,
                      value=value),
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)

        # non-existing key
        key = 'bogus'
        value = self.settings.get(key)
        self.assertIs(value, None)
        calls.append(mock.call('settings/get_all'))
        self.assertEqual(calls, self.mockapi.call.mock_calls)

        # cache is populated
        expected = self.mockapi.settings
        self.assertEqual(self.app.get_cache('settings'), expected)

        # set non-existing key
        result = self.settings.set(key, value)
        self.assertIs(result, False)

        # cache is updated
        expected = self.app.get_cache('settings.client_settings.{}.{}'.format(
            self.client_id, key))
        self.assertEqual(value, expected)

        calls.append(
            mock.call('settings/set',
                      for_client_id=self.client_id,
                      key=key,
                      value=value))
        self.assertEqual(calls, self.mockapi.call.mock_calls)

    def test_set_multi(self):
        items = {
            list(self.client_settings.keys())[0]: 'updated',
            'bogus': 'new setting',
        }
        report = self.settings.set_multi(items)
        expected = {
            list(self.client_settings.keys())[0]: True,
            'bogus': False,
        }
        self.assertEqual(report, expected)

        # cache is not populated
        try:
            self.app.get_cache('settings')
        except KeyError:
            pass  # expection
        else:
            self.fail("KeyError not raised on missing cache key")

        calls = [
            mock.call('settings/set_multi',
                      for_client_id=self.client_id,
                      items=items)
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)

    def test_delete(self):
        key = list(self.client_settings.keys())[0]
        result = self.settings.delete(key)
        self.assertIs(result, True)

        calls = [
            mock.call('settings/delete', for_client_id=self.client_id, key=key)
        ]
        self.assertEqual(calls, self.mockapi.call.mock_calls)