def test_get_password_keyring_defers_to_prompt(monkeypatch, entered_password, config): class MockKeyring: @staticmethod def get_password(system, user): return monkeypatch.setattr(auth, "keyring", MockKeyring) pw = auth.Resolver(config, cred("user")).password assert pw == "entered pw"
def test_logs_cli_values(caplog): caplog.set_level(logging.INFO, "twine") res = auth.Resolver(config, auth.CredentialInput("username", "password")) assert res.username == "username" assert res.password == "password" assert caplog.messages == [ "username set by command options", "password set by command options", ]
def test_logs_config_values(config, caplog): caplog.set_level(logging.INFO, "twine") config.update(username="******", password="******") res = auth.Resolver(config, auth.CredentialInput()) assert res.username == "username" assert res.password == "password" assert caplog.messages == [ "username set from config file", "password set from config file", ]
def test_get_username_and_password_keyring_overrides_prompt(monkeypatch, config): class MockKeyring: @staticmethod def get_credential(system, user): return cred( "real_user", "real_user@{system} sekure pa55word".format(**locals()) ) @staticmethod def get_password(system, user): cred = MockKeyring.get_credential(system, user) if user != cred.username: raise RuntimeError("unexpected username") return cred.password monkeypatch.setattr(auth, "keyring", MockKeyring) res = auth.Resolver(config, cred()) assert res.username == "real_user" assert res.password == "real_user@system sekure pa55word"
def test_empty_password_bypasses_prompt(monkeypatch, entered_password, config): config.update(password="") pw = auth.Resolver(config, cred("user")).password assert pw == ""
def test_no_password_defers_to_prompt(monkeypatch, entered_password, config): config.update(password=None) pw = auth.Resolver(config, cred("user")).password assert pw == "entered pw"
def test_get_username_runtime_error_suppressed( entered_username, keyring_no_backends_get_credential, recwarn, config): assert auth.Resolver(config, cred()).username == "entered user" assert len(recwarn) == 1 warning = recwarn.pop(UserWarning) assert "fail!" in str(warning)
def test_get_username_keyring_missing_get_credentials_prompts( entered_username, keyring_missing_get_credentials, config): assert auth.Resolver(config, cred()).username == "entered user"