def METHOD_NAME(self, user, password):
    with self.http_con() as con:
        _, headers, status = self.http_con_request(con, {}, path="token")
        self.assertEqual(status, 401)
        self.assertEqual(
            headers, headers | {"www-authenticate": "SCRAM-SHA-256"}
        )
    client_nonce = scram.generate_nonce()
    client_first, client_first_bare = scram.build_client_first_message(
        client_nonce, user
    )
    client_first_b64 = base64.b64encode(
        client_first.encode("ascii")
    ).decode("ascii")
    with self.http_con() as con:
        con.request(
            "GET",
            "/auth/token",
            headers={
                "Authorization": f"SCRAM-SHA-256 data={client_first_b64}"
            },
        )
        resp = con.getresponse()
        headers = {k.lower(): v for k, v in resp.getheaders()}
        self.assertEqual(resp.status, 401)
    scheme, _, data = headers["www-authenticate"].partition(" ")
    self.assertEqual(scheme, "SCRAM-SHA-256")
    values = {}
    for kv_str in data.split():
        key, _, value = kv_str.rstrip(",").partition("=")
        values[key] = value
    self.assertIn("sid", values)
    self.assertIn("data", values)
    sid = values["sid"]
    server_first = base64.b64decode(values["data"])
    server_nonce, salt, itercount = scram.parse_server_first_message(
        server_first
    )
    client_final, expected_server_sig = scram.build_client_final_message(
        password,
        salt,
        itercount,
        client_first_bare.encode("utf-8"),
        server_first,
        server_nonce,
    )
    client_final_b64 = base64.b64encode(
        client_final.encode("ascii")
    ).decode("ascii")
    with self.http_con() as con:
        con.request(
            "GET",
            "/auth/token",
            headers={
                "Authorization": f"SCRAM-SHA-256 sid={sid} "
                f"data={client_final_b64}"
            },
        )
        resp = con.getresponse()
        content = resp.read()
        headers = {k.lower(): v for k, v in resp.getheaders()}
        return content, headers, resp.status, sid, expected_server_sig