diff --git a/src/awscli_login/config.py b/src/awscli_login/config.py index ef7947e3..d993a9f2 100644 --- a/src/awscli_login/config.py +++ b/src/awscli_login/config.py @@ -139,7 +139,8 @@ def _set_attrs_from_args(self) -> None: for option in options: value = getattr(self._args, option) - if value: + # Allow False, empty strings, zero, etc. + if value is not None: setattr(self, option, value) def _set_override_attrs(self) -> None: diff --git a/src/tests/config/test_profile.py b/src/tests/config/test_profile.py index 5d8112e4..e69f3688 100644 --- a/src/tests/config/test_profile.py +++ b/src/tests/config/test_profile.py @@ -221,6 +221,10 @@ def setUp(self) -> None: enable_keyring = True passcode = secret_code refresh = 1500 +duration = 900 +disable_refresh = True +http_header_factor = X_Foo +http_header_passcode = X_Bar """ def test_full_config(self) -> None: @@ -236,6 +240,10 @@ def test_full_config(self) -> None: "enable_keyring": True, "passcode": "secret_code", "refresh": 1500, + "duration": 900, + "disable_refresh": True, + "http_header_factor": "X_Foo", + "http_header_passcode": "X_Bar", } self.assertProfileHasAttrs(**expected_attr_vals) @@ -254,6 +262,32 @@ def test_full_config(self) -> None: "role_arn": "arn:aws:iam::account-id:role/role-name2", "passcode": "secret", "refresh": 1000, + "duration": 1500, + "disable_refresh": True, + "http_header_factor": "X_Bar", + "http_header_passcode": "X_Foo", + } # Dict[str, Any] + expected_attr_vals = copy(args) + expected_attr_vals.update({'enable_keyring': False}) + args.update({'ask_password': True}) + + self.Profile(profile='default', no_args=False, **args) + self.assertProfileHasAttrs(**expected_attr_vals) + + def test_logically_false_args_full_config(self) -> None: + """ Testing logically False command line args override config. """ + args = { + "ecp_endpoint_url": '', + "username": '', + "password": '', + "factor": '', + "role_arn": "", + "passcode": "", + "refresh": 0, + "duration": 0, + "disable_refresh": False, + "http_header_factor": "", + "http_header_passcode": "", } # Dict[str, Any] expected_attr_vals = copy(args) expected_attr_vals.update({'enable_keyring': False})