blob: d7d3fbb85ade9599fd3de31e358830a3392db0a4 [file]
"""AuthDigestProvider scenarios."""
from . import digest_client as dc
from .env import AAATestEnv
class TestDigestProvider:
def url(self, env, path):
return env.mkurl("http", "aaa", path)
def test_digest_050_omitted_provider_defaults_to_file(self, env):
# /digest/noprovider/ has no AuthDigestProvider directive at all;
# mod_auth_digest falls back to the "file" provider (mod_authn_file)
# by default (see get_hash() / AUTHN_DEFAULT_PROVIDER in mod_auth.h).
path = "/digest/noprovider/secret.txt"
r = env.curl_get(self.url(env, path))
assert r.response["status"] == 401
challenge = dc.DigestChallenge.parse(r.response["header"]["www-authenticate"])
auth = dc.build_authorization(
AAATestEnv.DIGEST_USER, challenge, AAATestEnv.DIGEST_PASSWORD,
method="GET", uri=path)
r = env.curl_get(self.url(env, path), options=["-H", f"Authorization: {auth}"])
assert r.response["status"] == 200
assert r.response["body"].decode() == "digest-noprovider-secret\n"
def test_digest_051_unknown_provider_rejected_at_config_time(self, env):
r = env.configtest([
'AuthType Digest',
f'AuthName "{AAATestEnv.REALM}"',
'AuthDigestProvider no-such-provider',
f'AuthUserFile "{env.digest_pwfile}"',
'Require valid-user',
])
assert r.exit_code != 0
assert "Unknown Authn provider" in r.stderr