Ejemplo n.º 1
0
    def test_sync_plugin_configuration(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(),
                                      request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Check if remote upstream_url matches the locally known upstream_url
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)

        # Create plugin_configuration
        plugin_configuration_ref = PluginConfigurationReferenceFactory(
            api=api_ref)

        # Publish plugin_configuration
        logic.synchronize_plugin_configuration(self.client,
                                               plugin_configuration_ref)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(
            plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'],
                         Plugins.label(plugin_configuration_ref.plugin))
Ejemplo n.º 2
0
    def test_sync_updated_api(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(), request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)
        self.assertEqual(result['request_host'], api_ref.request_host)
        self.assertEqual(result['name'], api_ref.request_host)

        # Update
        new_name = fake.api_name()
        self.assertNotEqual(new_name, api_ref.name)
        api_ref.name = new_name
        api_ref.save()

        # Publish
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)
        self.assertEqual(result['request_host'], api_ref.request_host)
        self.assertEqual(result['name'], new_name)
Ejemplo n.º 3
0
    def test_create_oauth2_plugin_with_scopes(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(),
                                      request_host=fake.domain_name())

        # Create plugin_configuration_ref
        plugin_configuration_ref = PluginConfigurationReferenceFactory(
            api=api_ref,
            plugin=Plugins.OAUTH2_AUTHENTICATION,
            config={'scopes': 'email,subscriptions,topups'})

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Reload plugin configuration
        plugin_configuration_ref = PluginConfigurationReference.objects.get(
            id=plugin_configuration_ref.id)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(
            plugin_configuration_ref.kong_id)
        self.assertEqual(result['name'],
                         Plugins.label(plugin_configuration_ref.plugin))
        self.assertEqual(result['config']['scopes'],
                         ['email', 'subscriptions', 'topups'])
Ejemplo n.º 4
0
    def test_update_oauth2_plugin_with_scopes(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(), request_host=fake.domain_name())

        # Create plugin_configuration_ref
        plugin_configuration_ref = PluginConfigurationReferenceFactory(
            api=api_ref, plugin=Plugins.OAUTH2_AUTHENTICATION, config={})

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Reload plugin configuration
        plugin_configuration_ref = PluginConfigurationReference.objects.get(id=plugin_configuration_ref.id)

        # Update plugin_configuration_ref
        plugin_configuration_ref.config = dict({
            'scopes': 'email,subscriptions,topups'
        }, **plugin_configuration_ref.config)
        plugin_configuration_ref.save()

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Reload plugin configuration
        plugin_configuration_ref = PluginConfigurationReference.objects.get(id=plugin_configuration_ref.id)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(plugin_configuration_ref.kong_id)
        self.assertEqual(result['config']['scopes'], ['email', 'subscriptions', 'topups'])
    def test_sync_plugin_configuration(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(), request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Check if remote upstream_url matches the locally known upstream_url
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)

        # Create plugin_configuration
        plugin_configuration_ref = PluginConfigurationReferenceFactory(api=api_ref)

        # Publish plugin_configuration
        logic.synchronize_plugin_configuration(self.client, plugin_configuration_ref)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'], Plugins.label(plugin_configuration_ref.plugin))
Ejemplo n.º 6
0
    def test_sync_incomplete_api(self):
        # Create incomplete api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Try to sync, expect an error
        with self.assertRaises(ValueError):
            logic.synchronize_api(self.client, api_ref)

        self.assertFalse(api_ref.synchronized)

        # Fix api_ref
        api_ref.request_host = fake.domain_name()
        api_ref.save()

        # Sync again
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)
        self.assertEqual(result['request_host'], api_ref.request_host)
Ejemplo n.º 7
0
    def test_sync_updated_api(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(),
                                      request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)
        self.assertEqual(result['request_host'], api_ref.request_host)
        self.assertEqual(result['name'], api_ref.request_host)

        # Update
        new_name = fake.api_name()
        self.assertNotEqual(new_name, api_ref.name)
        api_ref.name = new_name
        api_ref.save()

        # Publish
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)
        self.assertEqual(result['request_host'], api_ref.request_host)
        self.assertEqual(result['name'], new_name)
Ejemplo n.º 8
0
    def test_delete_synchronized_plugin_configuration(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(),
                                      request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Create plugin_configuration
        plugin_configuration_ref = PluginConfigurationReferenceFactory(
            api=api_ref)

        # Publish plugin_configuration
        logic.synchronize_plugin_configuration(self.client,
                                               plugin_configuration_ref)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(
            plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'],
                         Plugins.label(plugin_configuration_ref.plugin))

        # Delete plugin_configuration
        plugin_configuration_kong_id = plugin_configuration_ref.kong_id
        plugin_configuration_ref.delete()

        # Check
        with self.assertRaises(ValueError):
            _ = self.client.apis.plugins(
                api_ref.kong_id).retrieve(plugin_configuration_kong_id)
Ejemplo n.º 9
0
    def test_sync_update(self):
        # Create api_ref
        api_ref = APIReferenceFactory(target_url=fake.url(),
                                      public_dns=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['target_url'], api_ref.target_url)
        self.assertEqual(result['public_dns'], api_ref.public_dns)
        self.assertEqual(result['name'], api_ref.public_dns)

        # Update
        new_name = fake.api_name()
        api_ref.name = new_name
        api_ref.save()

        # Publish
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['target_url'], api_ref.target_url)
        self.assertEqual(result['public_dns'], api_ref.public_dns)
        self.assertEqual(result['name'], new_name)
Ejemplo n.º 10
0
    def test_withdraw_api(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(),
                                      request_host=fake.domain_name())

        # Publish
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)
        self.assertEqual(result['request_host'], api_ref.request_host)

        # Store kong_id
        kong_id = api_ref.kong_id

        # You can delete afterwards
        logic.withdraw_api(self.client, api_ref)
        self.assertFalse(api_ref.synchronized)

        # Check kong
        with self.assertRaises(ValueError):
            _ = self.client.apis.retrieve(kong_id)
Ejemplo n.º 11
0
    def test_sync_plugin_configuration_without_fields(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(),
                                      request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Check if remote upstream_url matches the locally known upstream_url
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)

        # Create plugin_configuration
        plugin_configuration_ref = PluginConfigurationReferenceFactory(
            api=api_ref, config={})

        # Attempt to publish
        with self.assertRaises(ValueError):
            logic.synchronize_plugin_configuration(self.client,
                                                   plugin_configuration_ref)

        # Make sure we did not get a Kong ID (meaning it did not sync to Kong)
        self.assertIsNone(plugin_configuration_ref.kong_id)
Ejemplo n.º 12
0
    def test_withdraw(self):
        # Create api_ref
        api_ref = APIReferenceFactory(target_url=fake.url(),
                                      public_dns=fake.domain_name())

        # Publish
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['target_url'], api_ref.target_url)
        self.assertEqual(result['public_dns'], api_ref.public_dns)

        # Store kong_id
        kong_id = api_ref.kong_id

        # You can delete afterwards
        get_api_sync_engine().withdraw(self.client, api_ref)
        self.assertFalse(api_ref.synchronized)

        # Check kong
        with self.assertRaises(ValueError):
            result = self.client.apis.retrieve(kong_id)
Ejemplo n.º 13
0
    def test_update_synchronized_plugin_configuration(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(), request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Create plugin_configuration
        plugin_configuration_ref = PluginConfigurationReferenceFactory(api=api_ref)

        # Publish plugin_configuration
        logic.synchronize_plugin_configuration(self.client, plugin_configuration_ref)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'], Plugins.label(plugin_configuration_ref.plugin))
        self.assertEqual(result['config']['second'], plugin_configuration_ref.config['second'])

        # Update plugin_configuration
        new_value = 5
        self.assertNotEqual(new_value, plugin_configuration_ref.config['second'])
        plugin_configuration_ref.config['second'] = new_value
        plugin_configuration_ref.save()
        logic.publish_plugin_configuration(self.client, plugin_configuration_ref)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'], Plugins.label(plugin_configuration_ref.plugin))
        self.assertEqual(result['config']['second'], plugin_configuration_ref.config['second'])
Ejemplo n.º 14
0
    def test_sync_incomplete_api(self):
        # Create incomplete api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Try to sync, expect an error
        with self.assertRaises(ValueError):
            logic.synchronize_api(self.client, api_ref)

        self.assertFalse(api_ref.synchronized)

        # Fix api_ref
        api_ref.request_host = fake.domain_name()
        api_ref.save()

        # Sync again
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)
        self.assertEqual(result['request_host'], api_ref.request_host)
Ejemplo n.º 15
0
    def test_disable_synchronized_plugin_configuration(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(), request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Create plugin_configuration
        plugin_configuration_ref = PluginConfigurationReferenceFactory(api=api_ref)

        # Publish plugin_configuration
        logic.synchronize_plugin_configuration(self.client, plugin_configuration_ref)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'], Plugins.label(plugin_configuration_ref.plugin))
        self.assertTrue(result['enabled'])

        # Update plugin_configuration
        logic.enable_plugin_configuration(self.client, plugin_configuration_ref, enabled=False)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'], Plugins.label(plugin_configuration_ref.plugin))
        self.assertFalse(result['enabled'])
Ejemplo n.º 16
0
    def test_delete_synchronized_plugin_configuration(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(), request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Create plugin_configuration
        plugin_configuration_ref = PluginConfigurationReferenceFactory(api=api_ref)

        # Publish plugin_configuration
        logic.synchronize_plugin_configuration(self.client, plugin_configuration_ref)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'], Plugins.label(plugin_configuration_ref.plugin))

        # Delete plugin_configuration
        plugin_configuration_kong_id = plugin_configuration_ref.kong_id
        plugin_configuration_ref.delete()

        # Check
        with self.assertRaises(ValueError):
            _ = self.client.apis.plugins(api_ref.kong_id).retrieve(plugin_configuration_kong_id)
Ejemplo n.º 17
0
    def test_update_synchronized_plugin_configuration(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(),
                                      request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Create plugin_configuration
        plugin_configuration_ref = PluginConfigurationReferenceFactory(
            api=api_ref)

        # Publish plugin_configuration
        logic.synchronize_plugin_configuration(self.client,
                                               plugin_configuration_ref)

        # Check if remote plugin name matches the locally known plugin, and that the configuration matches the locally
        #   known configuration
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(
            plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'],
                         Plugins.label(plugin_configuration_ref.plugin))
        self.assertEqual(result['config']['second'],
                         plugin_configuration_ref.config['second'])

        # Update plugin_configuration
        new_value = 5
        self.assertNotEqual(new_value,
                            plugin_configuration_ref.config['second'])
        plugin_configuration_ref.config['second'] = new_value
        plugin_configuration_ref.save()
        logic.publish_plugin_configuration(self.client,
                                           plugin_configuration_ref)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(
            plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'],
                         Plugins.label(plugin_configuration_ref.plugin))
        self.assertEqual(result['config']['second'],
                         plugin_configuration_ref.config['second'])
Ejemplo n.º 18
0
    def test_delete_api(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(), request_host=fake.domain_name())

        # Publish
        logic.synchronize_api(self.client, api_ref)
        self.assertTrue(api_ref.synchronized)

        # Check kong
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)
        self.assertEqual(result['request_host'], api_ref.request_host)

        # You can delete afterwards
        api_kong_id = api_ref.kong_id
        api_ref.delete()

        # Check kong
        with self.assertRaises(ValueError):
            _ = self.client.apis.retrieve(api_kong_id)
Ejemplo n.º 19
0
    def test_create_oauth2_plugin(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(), request_host=fake.domain_name())

        # Create plugin_configuration_ref
        plugin_configuration_ref = PluginConfigurationReferenceFactory(
            api=api_ref, plugin=Plugins.OAUTH2_AUTHENTICATION, config={})

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Reload plugin configuration
        plugin_configuration_ref = PluginConfigurationReference.objects.get(id=plugin_configuration_ref.id)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'], Plugins.label(plugin_configuration_ref.plugin))
Ejemplo n.º 20
0
    def test_sync_plugin_configuration_without_fields(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(), request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Check
        result = self.client.apis.retrieve(api_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['upstream_url'], api_ref.upstream_url)

        # Create plugin_configuration
        plugin_configuration_ref = PluginConfigurationReferenceFactory(api=api_ref, config={})

        # Attempt to publish
        with self.assertRaises(ValueError):
            logic.synchronize_plugin_configuration(self.client, plugin_configuration_ref)
Ejemplo n.º 21
0
    def test_disable_synchronized_plugin_configuration(self):
        # Create api_ref
        api_ref = APIReferenceFactory(upstream_url=fake.url(),
                                      request_host=fake.domain_name())

        # Mark for auto cleanup
        self._cleanup_afterwards(api_ref)

        # Publish api
        logic.synchronize_api(self.client, api_ref)

        # Create plugin_configuration
        plugin_configuration_ref = PluginConfigurationReferenceFactory(
            api=api_ref)

        # Publish plugin_configuration
        logic.synchronize_plugin_configuration(self.client,
                                               plugin_configuration_ref)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(
            plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'],
                         Plugins.label(plugin_configuration_ref.plugin))
        self.assertTrue(result['enabled'])

        # Update plugin_configuration
        logic.enable_plugin_configuration(self.client,
                                          plugin_configuration_ref,
                                          enabled=False)

        # Check
        result = self.client.apis.plugins(api_ref.kong_id).retrieve(
            plugin_configuration_ref.kong_id)
        self.assertIsNotNone(result)
        self.assertEqual(result['name'],
                         Plugins.label(plugin_configuration_ref.plugin))
        self.assertFalse(result['enabled'])