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')
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')
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')
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)
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)
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')
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)
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")
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)
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)
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)