def test_get_resource_api_keys_is_cached(self):

        ex = MagicMock()
        ds = DataStore(ex)

        ex.get.return_value = {
            'href':
            'https://www.example.com/applications/APPLICATION_ID/apiKeys',
            'items': [{
                'href': 'http://example.com/apiKeys/KEY_ID',
                'id': 'KEY_ID',
                'secret': 'KEY_SECRET'
            }]
        }

        ds.get_resource(
            'https://www.example.com/applications/APPLICATION_ID/apiKeys',
            {'id': 'KEY_ID'})

        ex.get.assert_called_once_with(
            'https://www.example.com/applications/APPLICATION_ID/apiKeys',
            params={'id': 'KEY_ID'})

        self.assertEqual(
            ds._cache_get('http://example.com/apiKeys/KEY_ID'), {
                'secret': 'KEY_SECRET',
                'href': 'http://example.com/apiKeys/KEY_ID',
                'id': 'KEY_ID'
            })
    def test_get_resource_api_keys_is_cached(self):

        ex = MagicMock()
        ds = DataStore(ex)

        ex.get.return_value = {
            'href':
                'https://www.example.com/applications/APPLICATION_ID/apiKeys',
            'items': [
                {
                    'href': 'http://example.com/apiKeys/KEY_ID',
                    'id': 'KEY_ID',
                    'secret': 'KEY_SECRET'
                }
            ]
        }

        ds.get_resource(
            'https://www.example.com/applications/APPLICATION_ID/apiKeys',
            {'id': 'KEY_ID'})

        ex.get.assert_called_once_with(
            'https://www.example.com/applications/APPLICATION_ID/apiKeys',
            params={'id': 'KEY_ID'})

        self.assertEqual(
            ds._cache_get('http://example.com/apiKeys/KEY_ID'),
            {
                'secret': 'KEY_SECRET',
                'href': 'http://example.com/apiKeys/KEY_ID',
                'id': 'KEY_ID'
            })
    def test_recursive_cache_put(self, CacheManager):
        ds = DataStore(MagicMock())

        data = {
            'href': 'http://example.com/accounts/FOO',
            'name': 'Foo',
            'groups': {
                'href': 'http://example.com/accounts/FOO/groups',
                'items': [
                    {
                        'href': 'http://example.com/groups/G1',
                        'name': 'Foo Group 1',
                    },
                    {
                        'href': 'http://example.com/groups/G2',
                        'name': 'Foo Group 2',
                    }
                ]
            },
            'directory': {
                'href': 'http://example.com/directories/BAR',
                'name': 'Directory',
            }
        }

        ds._cache_put('http://example.com/accounts/FOO', data=data)

        put = CacheManager.return_value.get_cache.return_value.put

        expected = sorted([
            call('http://example.com/groups/G1', {
                'href': 'http://example.com/groups/G1',
                'name': 'Foo Group 1'
            }, new=True),
            call('http://example.com/groups/G2', {
                'href': 'http://example.com/groups/G2',
                'name': 'Foo Group 2'
            }, new=True),
            call('http://example.com/directories/BAR', {
                'href': 'http://example.com/directories/BAR',
                'name': 'Directory'
            }, new=True),
            call('http://example.com/accounts/FOO', {
                'href': 'http://example.com/accounts/FOO',
                'name': 'Foo',
                'groups': {
                    'href': 'http://example.com/accounts/FOO/groups',
                    'items': [
                        {'href': 'http://example.com/groups/G1'},
                        {'href': 'http://example.com/groups/G2'},
                    ]
                },
                'directory': {
                    'href': 'http://example.com/directories/BAR'
                }
            }, new=True)
        ], key=lambda c: c[1][0])

        actual = sorted(put.call_args_list, key=lambda c: c[0][0])
        self.assertEqual(actual, expected)
    def test_uncache_custom_data_key_uncaches_custom_data(self, CacheManager):
        ds = DataStore(MagicMock())

        get_cache = CacheManager.return_value.get_cache

        ds.uncache_resource(
            'https://www.example.com/accounts/ACCOUNTID/customData/KEY')
        get_cache.assert_called_once_with('customData')
    def test_get_cache_parse_instance_href(self, CacheManager):
        ds = DataStore(MagicMock())

        get_cache = CacheManager.return_value.get_cache

        c = ds._get_cache('https://www.example.com/accounts/ACCOUNTID')
        self.assertTrue(c, get_cache.return_value)
        get_cache.assert_called_once_with('accounts')
    def test_uncache_custom_data_key_uncaches_custom_data(self, CacheManager):
        ds = DataStore(MagicMock())

        get_cache = CacheManager.return_value.get_cache

        ds.uncache_resource(
            'https://www.example.com/accounts/ACCOUNTID/customData/KEY')
        get_cache.assert_called_once_with('customData')
Exemple #7
0
    def test_get_cache_parse_instance_href(self, CacheManager):
        ds = DataStore(MagicMock())

        get_cache = CacheManager.return_value.get_cache

        c = ds._get_cache('https://www.example.com/accounts/ACCOUNTID')
        self.assertTrue(c, get_cache.return_value)
        get_cache.assert_called_once_with('accounts')
Exemple #8
0
    def test_get_cache_no_cache(self, CacheManager):
        ds = DataStore(MagicMock())

        c = ds._get_cache('invalid')

        # make sure the methods exist and do nothing
        self.assertEqual(c.get(), None)
        c.put()
        c.delete()
    def test_get_cache_no_cache(self, CacheManager):
        ds = DataStore(MagicMock())

        c = ds._get_cache('invalid')

        # make sure the methods exist and do nothing
        self.assertEqual(c.get(), None)
        c.put()
        c.delete()
    def test_get_resource_is_not_cached(self):
        ex = MagicMock()
        ds = DataStore(
            ex, {'regions': {'accounts': {'store': NullCacheStore}}})

        ex.get.return_value = {
            'href': 'http://example.com/accounts/FOO',
            'name': 'Foo',
        }

        # make the request twice
        ds.get_resource('http://example.com/accounts/FOO')
        ds.get_resource('http://example.com/accounts/FOO')

        self.assertEqual(ex.get.call_count, 2)
    def test_get_resource_is_not_cached(self):
        ex = MagicMock()
        ds = DataStore(
            ex, {'regions': {'accounts': {'store': NullCacheStore}}})

        ex.get.return_value = {
            'href': 'http://example.com/accounts/FOO',
            'name': 'Foo',
        }

        # make the request twice
        ds.get_resource('http://example.com/accounts/FOO')
        ds.get_resource('http://example.com/accounts/FOO')

        self.assertEqual(ex.get.call_count, 2)
Exemple #12
0
    def test_get_resource_is_cached(self):
        ex = MagicMock()
        ds = DataStore(ex)

        ex.get.return_value = {
            'href': 'http://example.com/accounts/FOO',
            'name': 'Foo',
        }

        # make the request twice
        ds.get_resource('http://example.com/accounts/FOO')
        ds.get_resource('http://example.com/accounts/FOO')

        ex.get.assert_called_once_with('http://example.com/accounts/FOO',
                                       params=None)
    def test_get_resource_is_cached(self):
        ex = MagicMock()
        ds = DataStore(ex)

        ex.get.return_value = {
            'href': 'http://example.com/accounts/FOO',
            'name': 'Foo',
        }

        # make the request twice
        ds.get_resource('http://example.com/accounts/FOO')
        ds.get_resource('http://example.com/accounts/FOO')

        ex.get.assert_called_once_with('http://example.com/accounts/FOO',
            params=None)
    def test_cache_creation_with_global_and_region_opts(self, CacheManager):
        store_1 = MagicMock()
        store_2 = MagicMock()
        ds = DataStore(
            MagicMock(), {
                'store': store_1,
                'ttl': 300,
                'regions': {
                    'accounts': {
                        'store': store_2
                    },
                    'applications': {
                        'ttl': 301
                    }
                }
            })

        self.assertTrue(
            call('accounts', store=store_2, ttl=300) in
            CacheManager.return_value.create_cache.call_args_list)
        self.assertTrue(
            call('applications', store=store_1, ttl=301) in
            CacheManager.return_value.create_cache.call_args_list)
        self.assertTrue(
            call('customData', store=store_1, ttl=300) in
            CacheManager.return_value.create_cache.call_args_list)
    def setUp(self, Session):

        # Set mock.
        self.request_mock = Session.return_value.request
        self.request_mock.return_value = MagicMock(status_code=200)

        ex = HttpExecutor('https://api.stormpath.com/v1', ('user', 'pass'))
        self.client = MagicMock(BASE_URL='http://example.com')
        self.data_store = DataStore(ex)
        self.client.data_store = self.data_store
        self.account = Account(self.client,
                               properties={
                                   'href': 'http://example.com/account',
                                   'username': '******',
                                   'given_name': 'given_name',
                                   'surname': 'surname',
                                   'email': '*****@*****.**',
                                   'password': '******'
                               })
        self.factor = Factor(self.client,
                             properties={
                                 'href': '/factors/factor_id',
                                 'name': 'factor'
                             })
        self.challenge = Challenge(self.client,
                                   properties={
                                       'href': '/challenges/challenge_id',
                                       'factor': self.factor,
                                       'account': self.account
                                   })
Exemple #16
0
    def test_cache_creation_with_global_store(self, CacheManager):
        store = MagicMock()
        ds = DataStore(MagicMock(), {'store': store})

        expected = [call(region, store=store) for region in ds.CACHE_REGIONS]

        self.assertEqual(CacheManager.return_value.create_cache.call_args_list,
                         expected)
    def test_get_resource(self):
        data_store = DataStore(executor=self.executor)
        self.assertIsInstance(data_store.get_resource(self.app.href), dict)

        acc = self.app.accounts.create({
            'given_name': 'Randall',
            'surname': 'Degges',
            'email': '{}@testmail.stormpath.com'.format(self.get_random_name()),
            'password': '******',
        })
        key = acc.api_keys.create()

        data_store = DataStore(executor=self.executor)
        data = data_store.get_resource(self.app.href + '/apiKeys', {'id': key.id})
        self.assertIsInstance(data, dict)
        self.assertEqual(data['items'][0]['id'], key.id)

        data_store = DataStore(executor=self.executor)
        data = data_store.get_resource(self.app.tenant.href + '/applications')
        self.assertIsInstance(data, dict)

        hrefs = [data['items'][i]['href'] for i in range(len(data['items']))]
        self.assertTrue(self.app.href in hrefs)
 def setUp(self):
     self.client = MagicMock(BASE_URL='http://example.com')
     self.client.data_store = DataStore(MagicMock())
     self.factor = Factor(self.client,
                          properties={
                              'href':
                              '/factors/factor_id',
                              'name':
                              'factor',
                              'type':
                              'SMS',
                              'challenges':
                              ChallengeList(
                                  self.client,
                                  properties={'href': '/challenges'}),
                              'verification_status':
                              'UNVERIFIED',
                          })
     self.factors = FactorList(client=self.client, href='test/factors')
     self.challenge = Challenge(self.client,
                                properties={
                                    'href': '/challenges/challenge_id',
                                    'factor': self.factor
                                })
Exemple #19
0
    def test_recursive_cache_put(self, CacheManager):
        ds = DataStore(MagicMock())

        data = {
            'href': 'http://example.com/accounts/FOO',
            'name': 'Foo',
            'groups': {
                'href':
                'http://example.com/accounts/FOO/groups',
                'items': [{
                    'href': 'http://example.com/groups/G1',
                    'name': 'Foo Group 1',
                }, {
                    'href': 'http://example.com/groups/G2',
                    'name': 'Foo Group 2',
                }]
            },
            'directory': {
                'href': 'http://example.com/directories/BAR',
                'name': 'Directory',
            }
        }

        ds._cache_put('http://example.com/accounts/FOO', data=data)

        put = CacheManager.return_value.get_cache.return_value.put

        expected = sorted([
            call('http://example.com/groups/G1', {
                'href': 'http://example.com/groups/G1',
                'name': 'Foo Group 1'
            },
                 new=True),
            call('http://example.com/groups/G2', {
                'href': 'http://example.com/groups/G2',
                'name': 'Foo Group 2'
            },
                 new=True),
            call('http://example.com/directories/BAR', {
                'href': 'http://example.com/directories/BAR',
                'name': 'Directory'
            },
                 new=True),
            call('http://example.com/accounts/FOO', {
                'href': 'http://example.com/accounts/FOO',
                'name': 'Foo',
                'groups': {
                    'href':
                    'http://example.com/accounts/FOO/groups',
                    'items': [
                        {
                            'href': 'http://example.com/groups/G1'
                        },
                        {
                            'href': 'http://example.com/groups/G2'
                        },
                    ]
                },
                'directory': {
                    'href': 'http://example.com/directories/BAR'
                }
            },
                 new=True)
        ],
                          key=lambda c: c[1][0])

        actual = sorted(put.call_args_list, key=lambda c: c[0][0])
        self.assertEqual(actual, expected)