Skip to content

Commit

Permalink
set_access_key is not worked on in a background task and needs to ret…
Browse files Browse the repository at this point in the history
…urn a Result object
  • Loading branch information
redvox committed Jan 20, 2025
1 parent c199e3b commit 0002f89
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 11 deletions.
9 changes: 7 additions & 2 deletions app/aws/credentials.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ def _remove_unused_profiles(credentials_file, profile_group: ProfileGroup):
return credentials_file


def write_profile_config(profile_group: ProfileGroup, region: str):
def write_profile_config(profile_group: ProfileGroup, region: str) -> Result:
result = Result()
config_file = _load_config_file()

Expand Down Expand Up @@ -238,14 +238,19 @@ def _remove_unused_configs(config_file: configparser, profile_group: ProfileGrou
return config_file


def set_access_key(key_name: str, key_id: str, key_secret: str) -> None:
def set_access_key(key_name: str, key_id: str, key_secret: str) -> Result:
result = Result()

credentials_file = _load_credentials_file()
if not credentials_file.has_section(key_name):
credentials_file.add_section(key_name)
credentials_file.set(key_name, 'aws_access_key_id', key_id)
credentials_file.set(key_name, 'aws_secret_access_key', key_secret)
_write_credentials_file(credentials_file)

result.set_success()
return result


def get_access_key_list() -> list:
credentials_file = _load_credentials_file()
Expand Down
4 changes: 2 additions & 2 deletions app/core/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -248,8 +248,8 @@ def _handle_support_files(profile_group: ProfileGroup):
files.write_active_group_file(profile_group.name)

@staticmethod
def set_access_key(key_name: str, key_id: str, key_secret: str):
credentials.set_access_key(key_name=key_name, key_id=key_id, key_secret=key_secret)
def set_access_key(key_name: str, key_id: str, key_secret: str) -> Result:
return credentials.set_access_key(key_name=key_name, key_id=key_id, key_secret=key_secret)

@staticmethod
def get_access_key_list():
Expand Down
3 changes: 2 additions & 1 deletion app/gui/gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,9 @@ def _on_edit_config_success(self):

def set_access_key(self, key_name, key_id, key_secret):
self._to_busy_state()
logger.info('initiate set key')
self.task = BackgroundTask(
func=self.core.edit_config,
func=self.core.set_access_key,
func_kwargs={'key_name': key_name, 'key_id': key_id, 'key_secret': key_secret},
on_success=self._on_set_access_key_success,
on_failure=self._on_error,
Expand Down
15 changes: 9 additions & 6 deletions tests/test_aws/test_credentials.py
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ def test_fetch_role_credentials__chain_assume(self, mock_credentials, mock_assum
self.assertEqual(expected_mock_remove_profile_calls, mock_remove_profile.call_args_list)
self.assertEqual(expected_mock_remove_profile_calls, mock_remove_profile.call_args_list)

def test_remove_unused_profiles(self):
def test__remove_unused_profiles(self):
mock_config_parser = Mock()
mock_config_parser.sections.return_value = [
'developer', 'unused-profile',
Expand Down Expand Up @@ -379,7 +379,7 @@ def test_write_profile_config__no_default_region(self, mock_credentials, mock_ad
self.assertEqual(expected, mock_remove_profile.call_args_list)
self.assertEqual(expected, mock_remove_profile.call_args_list)

def test___remove_unused_configs(self):
def test__remove_unused_configs(self):
mock_config_parser = Mock()
mock_config_parser.sections.return_value = ['profile developer',
'profile unused-profile',
Expand All @@ -398,12 +398,15 @@ def test___remove_unused_configs(self):

@mock.patch('app.aws.credentials._write_credentials_file')
@mock.patch('app.aws.credentials._load_credentials_file')
def test__set_access_key(self, mock_load_credentials_file, _):
def test_set_access_key(self, mock_load_credentials_file, _):
mock_config_parser = Mock()
mock_config_parser.has_section.return_value = False
mock_load_credentials_file.return_value = mock_config_parser

credentials.set_access_key('key-name', 'key-id', 'access-key')
result = credentials.set_access_key('key-name', 'key-id', 'access-key')
self.assertEqual(True, result.was_success)
self.assertEqual(False, result.was_error)

self.assertEqual([call('key-name')],
mock_config_parser.has_section.call_args_list)
self.assertEqual([call('key-name')],
Expand All @@ -412,7 +415,7 @@ def test__set_access_key(self, mock_load_credentials_file, _):
call('key-name', 'aws_secret_access_key', 'access-key')],
mock_config_parser.set.call_args_list)

def test___add_profile_credentials(self):
def test__add_profile_credentials(self):
mock_config_parser = Mock()
mock_config_parser.has_section.return_value = False

Expand All @@ -426,7 +429,7 @@ def test___add_profile_credentials(self):
call('test-profile', 'aws_session_token', 'test-session-token')],
mock_config_parser.set.call_args_list)

def test___add_profile_config(self):
def test__add_profile_config(self):
mock_config_parser = Mock()
mock_config_parser.has_section.return_value = False

Expand Down

0 comments on commit 0002f89

Please sign in to comment.