Home / Function/ test_digestauth_401_only_sent_once() — requests Function Reference

test_digestauth_401_only_sent_once() — requests Function Reference

Architecture documentation for the test_digestauth_401_only_sent_once() function in test_lowlevel.py from the requests codebase.

Entity Profile

Dependency Diagram

graph TD
  ce1b24b1_670c_c2a7_4a3f_28b5b90bd555["test_digestauth_401_only_sent_once()"]
  48561d17_8bd1_bf20_5710_ec3053a534d2["test_lowlevel.py"]
  ce1b24b1_670c_c2a7_4a3f_28b5b90bd555 -->|defined in| 48561d17_8bd1_bf20_5710_ec3053a534d2
  7ab3c4d7_8531_6cbe_e871_9880cb1ee6de["consume_socket_content()"]
  ce1b24b1_670c_c2a7_4a3f_28b5b90bd555 -->|calls| 7ab3c4d7_8531_6cbe_e871_9880cb1ee6de
  style ce1b24b1_670c_c2a7_4a3f_28b5b90bd555 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

tests/test_lowlevel.py lines 192–235

def test_digestauth_401_only_sent_once():
    """Ensure we correctly respond to a 401 challenge once, and then
    stop responding if challenged again.
    """
    text_401 = (b'HTTP/1.1 401 UNAUTHORIZED\r\n'
                b'Content-Length: 0\r\n'
                b'WWW-Authenticate: Digest nonce="6bf5d6e4da1ce66918800195d6b9130d"'
                b', opaque="372825293d1c26955496c80ed6426e9e", '
                b'realm="me@kennethreitz.com", qop=auth\r\n\r\n')

    expected_digest = (b'Authorization: Digest username="user", '
                       b'realm="me@kennethreitz.com", '
                       b'nonce="6bf5d6e4da1ce66918800195d6b9130d", uri="/"')

    auth = requests.auth.HTTPDigestAuth('user', 'pass')

    def digest_failed_response_handler(sock):
        # Respond to initial GET with a challenge.
        request_content = consume_socket_content(sock, timeout=0.5)
        assert request_content.startswith(b"GET / HTTP/1.1")
        sock.send(text_401)

        # Verify we receive an Authorization header in response, then
        # challenge again.
        request_content = consume_socket_content(sock, timeout=0.5)
        assert expected_digest in request_content
        sock.send(text_401)

        # Verify the client didn't respond to second challenge.
        request_content = consume_socket_content(sock, timeout=0.5)
        assert request_content == b''

        return request_content

    close_server = threading.Event()
    server = Server(digest_failed_response_handler, wait_to_close_event=close_server)

    with server as (host, port):
        url = f'http://{host}:{port}/'
        r = requests.get(url, auth=auth)
        # Verify server didn't authenticate us.
        assert r.status_code == 401
        assert r.history[0].status_code == 401
        close_server.set()

Domain

Subdomains

Frequently Asked Questions

What does test_digestauth_401_only_sent_once() do?
test_digestauth_401_only_sent_once() is a function in the requests codebase, defined in tests/test_lowlevel.py.
Where is test_digestauth_401_only_sent_once() defined?
test_digestauth_401_only_sent_once() is defined in tests/test_lowlevel.py at line 192.
What does test_digestauth_401_only_sent_once() call?
test_digestauth_401_only_sent_once() calls 1 function(s): consume_socket_content.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free