Skip to content

Commit

Permalink
hotfix 2.1.2: replace missing RawConfig, keep pytest between 7.0.0 an…
Browse files Browse the repository at this point in the history
…d 7.3.1, and update help text. (#129)
  • Loading branch information
sevignyj authored Jul 19, 2023
1 parent 162209e commit 45703a5
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 13 deletions.
2 changes: 1 addition & 1 deletion requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ pydocstyle
pylint
pyotp
pyroma
pytest
pytest>=7.0.0,<=7.3.1
pytest-cov
pytest-env
pytest-mock
Expand Down
16 changes: 8 additions & 8 deletions tests/unit_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -504,14 +504,14 @@ def test_process_arguments():

from tokendito import user

valid_settings = dict(okta_username="pytest", okta_password="pytest_password")
valid_settings = dict(okta_username="pytest", okta_password="%pytest_!&%password^")
invalid_settings = dict(pytest_expected_failure="pytest_failure")
args = {**valid_settings, **invalid_settings}
ret = user.process_arguments(Namespace(**args))

# Make sure that the arguments we passed are interpreted
assert ret.okta["username"] == "pytest"
assert ret.okta["password"] == "pytest_password"
assert ret.okta["password"] == "%pytest_!&%password^"
# Make sure that incorrect arguments are not passed down to the Config object.
assert "pytest" not in ret.__dict__

Expand Down Expand Up @@ -549,7 +549,7 @@ def test_process_ini_file(tmpdir):
from tokendito import user

valid_settings = dict(
okta_password="pytest_password",
okta_password="%pytest_!&%password^",
okta_username="pytest",
)
invalid_settings = dict(user_pytest_expected_failure="pytest")
Expand All @@ -559,7 +559,7 @@ def test_process_ini_file(tmpdir):
user.update_ini("pytest", path, **valid_settings)
ret = user.process_ini_file(path, "pytest")
assert ret.okta["username"] == "pytest"
assert ret.okta["password"] == "pytest_password"
assert ret.okta["password"] == "%pytest_!&%password^"

# Ensure we fail if the section is not found
user.update_ini("pytest", path, **valid_settings)
Expand Down Expand Up @@ -1134,7 +1134,7 @@ def test_config_object():
pytest_config_aws = Config(aws={"profile": "pytest_aws"})
pytest_config_okta = Config(okta={"username": "pytest_username"})
pytest_config_mixed = Config(
user={"config_profile": "pytest_user"}, okta={"password": "pytest_password"}
user={"config_profile": "pytest_user"}, okta={"password": "%pytest_!&%password^"}
)
assert (pytest_config == pytest_config_aws) is False

Expand All @@ -1149,7 +1149,7 @@ def test_config_object():
# Check that an update overwrites matching values only
pytest_config.update(pytest_config_mixed)
assert pytest_config.okta["username"] == "pytest_username"
assert pytest_config.okta["password"] == "pytest_password"
assert pytest_config.okta["password"] == "%pytest_!&%password^"
assert pytest_config.user["config_profile"] == "pytest_user"

# Check that default values from the original object are kept
Expand Down Expand Up @@ -1214,15 +1214,15 @@ def test_process_interactive_input(mocker):
from tokendito import user

# Check that a good object retrieves an interactive password
mocker.patch("getpass.getpass", return_value="pytest_password")
mocker.patch("getpass.getpass", return_value="%pytest_!&%password^")

pytest_config = Config()
pytest_config.okta["tile"] = "https://pytest/tile"
pytest_config.okta["org"] = "https://pytest/"
pytest_config.okta["username"] = "pytest"
ret = user.process_interactive_input(pytest_config)
pytest_config.update(ret)
assert pytest_config.okta["password"] == "pytest_password"
assert pytest_config.okta["password"] == "%pytest_!&%password^"

# Check that quiet mode does not retrieve a username
pytest_config.user["quiet"] = True
Expand Down
2 changes: 1 addition & 1 deletion tokendito/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

from platformdirs import user_config_dir

__version__ = "2.1.1"
__version__ = "2.1.2"
__title__ = "tokendito"
__description__ = "Get AWS STS tokens from Okta SSO"
__long_description_content_type__ = "text/markdown"
Expand Down
11 changes: 8 additions & 3 deletions tokendito/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,15 @@ def parse_cli_args(args):
"--okta-tile",
help="Okta tile URL to use.",
)
parser.add_argument("--okta-mfa", help="Sets the MFA method")
parser.add_argument(
"--okta-mfa",
help="Sets the MFA method. You "
"can also use the TOKENDITO_OKTA_MFA environment variable.",
)
parser.add_argument(
"--okta-mfa-response",
help="Sets the MFA response to a challenge",
help="Sets the MFA response to a challenge. You "
"can also use the TOKENDITO_OKTA_MFA_RESPONSE environment variable.",
)
parser.add_argument(
"--quiet",
Expand Down Expand Up @@ -582,7 +587,7 @@ def process_ini_file(file, profile):
res = dict()
pattern = re.compile(r"^(.*?)_(.*)")

ini = configparser.ConfigParser(default_section=config.user["config_profile"])
ini = configparser.RawConfigParser(default_section=config.user["config_profile"])
# Here, group(1) is the dictionary key, and group(2) the configuration element
try:
ini.read(file)
Expand Down

0 comments on commit 45703a5

Please sign in to comment.