Example #1
0
    def test_simple_action_config_value_provided_overriden_in_datastore(self):
        pack = 'dummy_pack_5'
        user = '******'

        # No values provided in the datastore
        runner = self._get_mock_runner_obj_from_container(pack=pack, user=user)

        self.assertEqual(runner._config['api_key'],
                         'some_api_key')  # static value
        self.assertEqual(runner._config['regions'],
                         ['us-west-1'])  # static value
        self.assertEqual(runner._config['api_secret'], None)
        self.assertEqual(runner._config['private_key_path'], None)

        # api_secret overriden in the datastore (user scoped value)
        config_service.set_datastore_value_for_config_key(
            pack_name='dummy_pack_5',
            key_name='api_secret',
            user='******',
            value='foosecret',
            secret=True)

        # private_key_path overriden in the datastore (global / non-user scoped value)
        config_service.set_datastore_value_for_config_key(
            pack_name='dummy_pack_5',
            key_name='private_key_path',
            value='foopath')

        runner = self._get_mock_runner_obj_from_container(pack=pack, user=user)
        self.assertEqual(runner._config['api_key'],
                         'some_api_key')  # static value
        self.assertEqual(runner._config['regions'],
                         ['us-west-1'])  # static value
        self.assertEqual(runner._config['api_secret'], 'foosecret')
        self.assertEqual(runner._config['private_key_path'], 'foopath')
Example #2
0
    def test_simple_action_config_value_provided_overriden_in_datastore(self):
        wrapper = PythonActionWrapper(pack='dummy_pack_5',
                                      file_path=PASCAL_ROW_ACTION_PATH,
                                      user='******')

        # No values provided in the datastore
        instance = wrapper._get_action_instance()
        self.assertEqual(instance.config['api_key'],
                         'some_api_key')  # static value
        self.assertEqual(instance.config['regions'],
                         ['us-west-1'])  # static value
        self.assertEqual(instance.config['api_secret'], None)
        self.assertEqual(instance.config['private_key_path'], None)

        # api_secret overriden in the datastore (user scoped value)
        config_service.set_datastore_value_for_config_key(
            pack_name='dummy_pack_5',
            key_name='api_secret',
            user='******',
            value='foosecret',
            secret=True)

        # private_key_path overriden in the datastore (global / non-user scoped value)
        config_service.set_datastore_value_for_config_key(
            pack_name='dummy_pack_5',
            key_name='private_key_path',
            value='foopath')

        instance = wrapper._get_action_instance()
        self.assertEqual(instance.config['api_key'],
                         'some_api_key')  # static value
        self.assertEqual(instance.config['regions'],
                         ['us-west-1'])  # static value
        self.assertEqual(instance.config['api_secret'], 'foosecret')
        self.assertEqual(instance.config['private_key_path'], 'foopath')
Example #3
0
    def test_simple_action_config_value_provided_overriden_in_datastore(self):
        wrapper = PythonActionWrapper(pack='dummy_pack_5', file_path=PASCAL_ROW_ACTION_PATH,
                                      user='******')

        # No values provided in the datastore
        instance = wrapper._get_action_instance()
        self.assertEqual(instance.config['api_key'], 'some_api_key')  # static value
        self.assertEqual(instance.config['regions'], ['us-west-1'])  # static value
        self.assertEqual(instance.config['api_secret'], None)
        self.assertEqual(instance.config['private_key_path'], None)

        # api_secret overriden in the datastore (user scoped value)
        config_service.set_datastore_value_for_config_key(pack_name='dummy_pack_5',
                                                          key_name='api_secret',
                                                          user='******',
                                                          value='foosecret',
                                                          secret=True)

        # private_key_path overriden in the datastore (global / non-user scoped value)
        config_service.set_datastore_value_for_config_key(pack_name='dummy_pack_5',
                                                          key_name='private_key_path',
                                                          value='foopath')

        instance = wrapper._get_action_instance()
        self.assertEqual(instance.config['api_key'], 'some_api_key')  # static value
        self.assertEqual(instance.config['regions'], ['us-west-1'])  # static value
        self.assertEqual(instance.config['api_secret'], 'foosecret')
        self.assertEqual(instance.config['private_key_path'], 'foopath')
Example #4
0
    def test_get_config_some_values_overriden_in_datastore(self):
        # Test a scenario where some values are overriden in datastore via pack
        # flobal config
        kvp_db = set_datastore_value_for_config_key(pack_name='dummy_pack_5',
                                                    key_name='api_secret',
                                                    value='some_api_secret',
                                                    secret=True,
                                                    user='******')

        # This is a secret so a value should be encrypted
        self.assertTrue(kvp_db.value != 'some_api_secret')
        self.assertTrue(len(kvp_db.value) > len('some_api_secret') * 2)
        self.assertTrue(kvp_db.secret)

        kvp_db = set_datastore_value_for_config_key(pack_name='dummy_pack_5',
                                                    key_name='private_key_path',
                                                    value='some_private_key')
        self.assertEqual(kvp_db.value, 'some_private_key')
        self.assertFalse(kvp_db.secret)

        loader = ContentPackConfigLoader(pack_name='dummy_pack_5', user='******')
        config = loader.get_config()

        # regions is provided in the pack global config
        # api_secret is dynamically loaded from the datastore for a particular user
        expected_config = {
            'api_key': 'some_api_key',
            'api_secret': 'some_api_secret',
            'regions': ['us-west-1'],
            'region': 'default-region-value',
            'private_key_path': 'some_private_key'
        }

        self.assertEqual(config, expected_config)
Example #5
0
    def test_get_config_some_values_overriden_in_datastore(self):
        # Test a scenario where some values are overriden in datastore via pack
        # flobal config
        kvp_db = set_datastore_value_for_config_key(pack_name='dummy_pack_5',
                                                    key_name='api_secret',
                                                    value='some_api_secret',
                                                    secret=True,
                                                    user='******')

        # This is a secret so a value should be encrypted
        self.assertTrue(kvp_db.value != 'some_api_secret')
        self.assertTrue(len(kvp_db.value) > len('some_api_secret') * 2)
        self.assertTrue(kvp_db.secret)

        kvp_db = set_datastore_value_for_config_key(pack_name='dummy_pack_5',
                                                    key_name='private_key_path',
                                                    value='some_private_key')
        self.assertEqual(kvp_db.value, 'some_private_key')
        self.assertFalse(kvp_db.secret)

        loader = ContentPackConfigLoader(pack_name='dummy_pack_5', user='******')
        config = loader.get_config()

        # regions is provided in the pack global config
        # api_secret is dynamically loaded from the datastore for a particular user
        expected_config = {
            'api_key': 'some_api_key',
            'api_secret': 'some_api_secret',
            'regions': ['us-west-1'],
            'region': 'default-region-value',
            'private_key_path': 'some_private_key',
            'non_required_with_default_value': 'config value'
        }

        self.assertEqual(config, expected_config)
Example #6
0
    def test_simple_action_config_value_provided_overriden_in_datastore(self):
        pack = 'dummy_pack_5'
        user = '******'

        # No values provided in the datastore
        runner = self._get_mock_runner_obj_from_container(pack=pack, user=user)

        self.assertEqual(runner._config['api_key'], 'some_api_key')  # static value
        self.assertEqual(runner._config['regions'], ['us-west-1'])  # static value
        self.assertEqual(runner._config['api_secret'], None)
        self.assertEqual(runner._config['private_key_path'], None)

        # api_secret overriden in the datastore (user scoped value)
        config_service.set_datastore_value_for_config_key(pack_name='dummy_pack_5',
                                                          key_name='api_secret',
                                                          user='******',
                                                          value='foosecret',
                                                          secret=True)

        # private_key_path overriden in the datastore (global / non-user scoped value)
        config_service.set_datastore_value_for_config_key(pack_name='dummy_pack_5',
                                                          key_name='private_key_path',
                                                          value='foopath')

        runner = self._get_mock_runner_obj_from_container(pack=pack, user=user)
        self.assertEqual(runner._config['api_key'], 'some_api_key')  # static value
        self.assertEqual(runner._config['regions'], ['us-west-1'])  # static value
        self.assertEqual(runner._config['api_secret'], 'foosecret')
        self.assertEqual(runner._config['private_key_path'], 'foopath')
Example #7
0
    def test_get_config_some_values_overriden_in_datastore(self):
        # Test a scenario where some values are overriden in datastore via pack
        # global config
        kvp_db = set_datastore_value_for_config_key(
            pack_name="dummy_pack_5",
            key_name="api_secret",
            value="some_api_secret",
            secret=True,
            user="******",
        )

        # This is a secret so a value should be encrypted
        self.assertTrue(kvp_db.value != "some_api_secret")
        self.assertTrue(len(kvp_db.value) > len("some_api_secret") * 2)
        self.assertTrue(kvp_db.secret)

        kvp_db = set_datastore_value_for_config_key(
            pack_name="dummy_pack_5",
            key_name="private_key_path",
            value="some_private_key",
        )
        self.assertEqual(kvp_db.value, "some_private_key")
        self.assertFalse(kvp_db.secret)

        loader = ContentPackConfigLoader(pack_name="dummy_pack_5", user="******")
        config = loader.get_config()

        # regions is provided in the pack global config
        # api_secret is dynamically loaded from the datastore for a particular user
        expected_config = {
            "api_key": "some_api_key",
            "api_secret": "some_api_secret",
            "regions": ["us-west-1"],
            "region": "default-region-value",
            "private_key_path": "some_private_key",
            "non_required_with_default_value": "config value",
        }

        self.assertEqual(config, expected_config)
Example #8
0
    def test_simple_action_config_value_provided_overriden_in_datastore(self):
        pack = "dummy_pack_5"
        user = "******"

        # No values provided in the datastore
        runner = self._get_mock_runner_obj_from_container(pack=pack, user=user)

        self.assertEqual(runner._config["api_key"],
                         "some_api_key")  # static value
        self.assertEqual(runner._config["regions"],
                         ["us-west-1"])  # static value
        self.assertEqual(runner._config["api_secret"], None)
        self.assertEqual(runner._config["private_key_path"], None)

        # api_secret overriden in the datastore (user scoped value)
        config_service.set_datastore_value_for_config_key(
            pack_name="dummy_pack_5",
            key_name="api_secret",
            user="******",
            value="foosecret",
            secret=True,
        )

        # private_key_path overriden in the datastore (global / non-user scoped value)
        config_service.set_datastore_value_for_config_key(
            pack_name="dummy_pack_5",
            key_name="private_key_path",
            value="foopath")

        runner = self._get_mock_runner_obj_from_container(pack=pack, user=user)
        self.assertEqual(runner._config["api_key"],
                         "some_api_key")  # static value
        self.assertEqual(runner._config["regions"],
                         ["us-west-1"])  # static value
        self.assertEqual(runner._config["api_secret"], "foosecret")
        self.assertEqual(runner._config["private_key_path"], "foopath")
Example #9
0
    def test_get_config_nested_schema_default_values_from_config_schema_are_used(
            self):
        # Special case for more complex config schemas with attributes ntesting.
        # Validate that the default values are also used for one level nested object properties.
        pack_name = 'dummy_pack_schema_with_nested_object_1'

        # 1. None of the nested object values are provided
        loader = ContentPackConfigLoader(pack_name=pack_name)
        config = loader.get_config()

        expected_config = {
            'api_key': '',
            'api_secret': '',
            'regions': ['us-west-1', 'us-east-1'],
            'auth_settings': {
                'host': '127.0.0.3',
                'port': 8080,
                'device_uids': ['a', 'b', 'c']
            }
        }
        self.assertEqual(config, expected_config)

        # 2. Some of the nested object values are provided (host, port)
        pack_name = 'dummy_pack_schema_with_nested_object_2'

        loader = ContentPackConfigLoader(pack_name=pack_name)
        config = loader.get_config()

        expected_config = {
            'api_key': '',
            'api_secret': '',
            'regions': ['us-west-1', 'us-east-1'],
            'auth_settings': {
                'host': '127.0.0.6',
                'port': 9090,
                'device_uids': ['a', 'b', 'c']
            }
        }
        self.assertEqual(config, expected_config)

        # 3. Nested attribute (auth_settings.token) references a non-secret datastore value
        pack_name = 'dummy_pack_schema_with_nested_object_3'

        kvp_db = set_datastore_value_for_config_key(
            pack_name=pack_name,
            key_name='auth_settings_token',
            value='some_auth_settings_token')
        self.assertEqual(kvp_db.value, 'some_auth_settings_token')
        self.assertFalse(kvp_db.secret)

        loader = ContentPackConfigLoader(pack_name=pack_name)
        config = loader.get_config()

        expected_config = {
            'api_key': '',
            'api_secret': '',
            'regions': ['us-west-1', 'us-east-1'],
            'auth_settings': {
                'host': '127.0.0.10',
                'port': 8080,
                'device_uids': ['a', 'b', 'c'],
                'token': 'some_auth_settings_token'
            }
        }
        self.assertEqual(config, expected_config)

        # 4. Nested attribute (auth_settings.token) references a secret datastore value
        pack_name = 'dummy_pack_schema_with_nested_object_4'

        kvp_db = set_datastore_value_for_config_key(
            pack_name=pack_name,
            key_name='auth_settings_token',
            value='joe_token_secret',
            secret=True,
            user='******')
        self.assertTrue(kvp_db.value != 'joe_token_secret')
        self.assertTrue(len(kvp_db.value) > len('joe_token_secret') * 2)
        self.assertTrue(kvp_db.secret)

        kvp_db = set_datastore_value_for_config_key(
            pack_name=pack_name,
            key_name='auth_settings_token',
            value='alice_token_secret',
            secret=True,
            user='******')
        self.assertTrue(kvp_db.value != 'alice_token_secret')
        self.assertTrue(len(kvp_db.value) > len('alice_token_secret') * 2)
        self.assertTrue(kvp_db.secret)

        loader = ContentPackConfigLoader(pack_name=pack_name, user='******')
        config = loader.get_config()

        expected_config = {
            'api_key': '',
            'api_secret': '',
            'regions': ['us-west-1', 'us-east-1'],
            'auth_settings': {
                'host': '127.0.0.11',
                'port': 8080,
                'device_uids': ['a', 'b', 'c'],
                'token': 'joe_token_secret'
            }
        }
        self.assertEqual(config, expected_config)

        loader = ContentPackConfigLoader(pack_name=pack_name, user='******')
        config = loader.get_config()

        expected_config = {
            'api_key': '',
            'api_secret': '',
            'regions': ['us-west-1', 'us-east-1'],
            'auth_settings': {
                'host': '127.0.0.11',
                'port': 8080,
                'device_uids': ['a', 'b', 'c'],
                'token': 'alice_token_secret'
            }
        }
        self.assertEqual(config, expected_config)
Example #10
0
    def test_get_config_nested_schema_default_values_from_config_schema_are_used(
            self):
        # Special case for more complex config schemas with attributes ntesting.
        # Validate that the default values are also used for one level nested object properties.
        pack_name = "dummy_pack_schema_with_nested_object_1"

        # 1. None of the nested object values are provided
        loader = ContentPackConfigLoader(pack_name=pack_name)
        config = loader.get_config()

        expected_config = {
            "api_key": "",
            "api_secret": "",
            "regions": ["us-west-1", "us-east-1"],
            "auth_settings": {
                "host": "127.0.0.3",
                "port": 8080,
                "device_uids": ["a", "b", "c"],
            },
        }
        self.assertEqual(config, expected_config)

        # 2. Some of the nested object values are provided (host, port)
        pack_name = "dummy_pack_schema_with_nested_object_2"

        loader = ContentPackConfigLoader(pack_name=pack_name)
        config = loader.get_config()

        expected_config = {
            "api_key": "",
            "api_secret": "",
            "regions": ["us-west-1", "us-east-1"],
            "auth_settings": {
                "host": "127.0.0.6",
                "port": 9090,
                "device_uids": ["a", "b", "c"],
            },
        }
        self.assertEqual(config, expected_config)

        # 3. Nested attribute (auth_settings.token) references a non-secret datastore value
        pack_name = "dummy_pack_schema_with_nested_object_3"

        kvp_db = set_datastore_value_for_config_key(
            pack_name=pack_name,
            key_name="auth_settings_token",
            value="some_auth_settings_token",
        )
        self.assertEqual(kvp_db.value, "some_auth_settings_token")
        self.assertFalse(kvp_db.secret)

        loader = ContentPackConfigLoader(pack_name=pack_name)
        config = loader.get_config()

        expected_config = {
            "api_key": "",
            "api_secret": "",
            "regions": ["us-west-1", "us-east-1"],
            "auth_settings": {
                "host": "127.0.0.10",
                "port": 8080,
                "device_uids": ["a", "b", "c"],
                "token": "some_auth_settings_token",
            },
        }
        self.assertEqual(config, expected_config)

        # 4. Nested attribute (auth_settings.token) references a secret datastore value
        pack_name = "dummy_pack_schema_with_nested_object_4"

        kvp_db = set_datastore_value_for_config_key(
            pack_name=pack_name,
            key_name="auth_settings_token",
            value="joe_token_secret",
            secret=True,
            user="******",
        )
        self.assertTrue(kvp_db.value != "joe_token_secret")
        self.assertTrue(len(kvp_db.value) > len("joe_token_secret") * 2)
        self.assertTrue(kvp_db.secret)

        kvp_db = set_datastore_value_for_config_key(
            pack_name=pack_name,
            key_name="auth_settings_token",
            value="alice_token_secret",
            secret=True,
            user="******",
        )
        self.assertTrue(kvp_db.value != "alice_token_secret")
        self.assertTrue(len(kvp_db.value) > len("alice_token_secret") * 2)
        self.assertTrue(kvp_db.secret)

        loader = ContentPackConfigLoader(pack_name=pack_name, user="******")
        config = loader.get_config()

        expected_config = {
            "api_key": "",
            "api_secret": "",
            "regions": ["us-west-1", "us-east-1"],
            "auth_settings": {
                "host": "127.0.0.11",
                "port": 8080,
                "device_uids": ["a", "b", "c"],
                "token": "joe_token_secret",
            },
        }
        self.assertEqual(config, expected_config)

        loader = ContentPackConfigLoader(pack_name=pack_name, user="******")
        config = loader.get_config()

        expected_config = {
            "api_key": "",
            "api_secret": "",
            "regions": ["us-west-1", "us-east-1"],
            "auth_settings": {
                "host": "127.0.0.11",
                "port": 8080,
                "device_uids": ["a", "b", "c"],
                "token": "alice_token_secret",
            },
        }
        self.assertEqual(config, expected_config)
Example #11
0
    def test_get_config_nested_schema_default_values_from_config_schema_are_used(self):
        # Special case for more complex config schemas with attributes ntesting.
        # Validate that the default values are also used for one level nested object properties.
        pack_name = 'dummy_pack_schema_with_nested_object_1'

        # 1. None of the nested object values are provided
        loader = ContentPackConfigLoader(pack_name=pack_name)
        config = loader.get_config()

        expected_config = {
            'api_key': '',
            'api_secret': '',
            'regions': ['us-west-1', 'us-east-1'],
            'auth_settings': {
                'host': '127.0.0.3',
                'port': 8080,
                'device_uids': ['a', 'b', 'c']
            }
        }
        self.assertEqual(config, expected_config)

        # 2. Some of the nested object values are provided (host, port)
        pack_name = 'dummy_pack_schema_with_nested_object_2'

        loader = ContentPackConfigLoader(pack_name=pack_name)
        config = loader.get_config()

        expected_config = {
            'api_key': '',
            'api_secret': '',
            'regions': ['us-west-1', 'us-east-1'],
            'auth_settings': {
                'host': '127.0.0.6',
                'port': 9090,
                'device_uids': ['a', 'b', 'c']
            }
        }
        self.assertEqual(config, expected_config)

        # 3. Nested attribute (auth_settings.token) references a non-secret datastore value
        pack_name = 'dummy_pack_schema_with_nested_object_3'

        kvp_db = set_datastore_value_for_config_key(pack_name=pack_name,
                                                    key_name='auth_settings_token',
                                                    value='some_auth_settings_token')
        self.assertEqual(kvp_db.value, 'some_auth_settings_token')
        self.assertFalse(kvp_db.secret)

        loader = ContentPackConfigLoader(pack_name=pack_name)
        config = loader.get_config()

        expected_config = {
            'api_key': '',
            'api_secret': '',
            'regions': ['us-west-1', 'us-east-1'],
            'auth_settings': {
                'host': '127.0.0.10',
                'port': 8080,
                'device_uids': ['a', 'b', 'c'],
                'token': 'some_auth_settings_token'
            }
        }
        self.assertEqual(config, expected_config)

        # 4. Nested attribute (auth_settings.token) references a secret datastore value
        pack_name = 'dummy_pack_schema_with_nested_object_4'

        kvp_db = set_datastore_value_for_config_key(pack_name=pack_name,
                                                    key_name='auth_settings_token',
                                                    value='joe_token_secret',
                                                    secret=True,
                                                    user='******')
        self.assertTrue(kvp_db.value != 'joe_token_secret')
        self.assertTrue(len(kvp_db.value) > len('joe_token_secret') * 2)
        self.assertTrue(kvp_db.secret)

        kvp_db = set_datastore_value_for_config_key(pack_name=pack_name,
                                                    key_name='auth_settings_token',
                                                    value='alice_token_secret',
                                                    secret=True,
                                                    user='******')
        self.assertTrue(kvp_db.value != 'alice_token_secret')
        self.assertTrue(len(kvp_db.value) > len('alice_token_secret') * 2)
        self.assertTrue(kvp_db.secret)

        loader = ContentPackConfigLoader(pack_name=pack_name, user='******')
        config = loader.get_config()

        expected_config = {
            'api_key': '',
            'api_secret': '',
            'regions': ['us-west-1', 'us-east-1'],
            'auth_settings': {
                'host': '127.0.0.11',
                'port': 8080,
                'device_uids': ['a', 'b', 'c'],
                'token': 'joe_token_secret'
            }
        }
        self.assertEqual(config, expected_config)

        loader = ContentPackConfigLoader(pack_name=pack_name, user='******')
        config = loader.get_config()

        expected_config = {
            'api_key': '',
            'api_secret': '',
            'regions': ['us-west-1', 'us-east-1'],
            'auth_settings': {
                'host': '127.0.0.11',
                'port': 8080,
                'device_uids': ['a', 'b', 'c'],
                'token': 'alice_token_secret'
            }
        }
        self.assertEqual(config, expected_config)