mirror of
https://github.com/TheAlgorithms/Python.git
synced 2026-09-28 21:45:27 +08:00
* deps: migrate from httpx to httpx2 (pydantic's maintained fork) Mechanical rename of httpx -> httpx2 (API-compatible fork of httpx 0.28.1): pyproject.toml deps, PEP 723 inline-script headers, and all import/call sites. Excludes uv.lock (the keeper's allow-list rejects .lock files); the lock refresh needs a separate maintainer-merged PR. Refs #15081 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * deps: drop tweepy + migrate remaining requests refs to httpx2 - maths/allocation_number.py: docstring example uses httpx2, not requests - web_programming/get_imdbtop.py.DISABLED: import httpx2 instead of requests - remove web_programming/get_user_tweets.py.DISABLED (a Twitter API how-to, not an algorithm) and drop the tweepy dependency that was its only user and the last high-level dep pulling in requests - uv.lock intentionally untouched (keeper allow-list) Refs #15081 --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
28 lines
855 B
Python
28 lines
855 B
Python
import json
|
|
|
|
import httpx2
|
|
|
|
from .fetch_github_info import AUTHENTICATED_USER_ENDPOINT, fetch_github_info
|
|
|
|
|
|
def test_fetch_github_info(monkeypatch):
|
|
class FakeResponse:
|
|
def __init__(self, content) -> None:
|
|
assert isinstance(content, (bytes, str))
|
|
self.content = content
|
|
|
|
def json(self):
|
|
return json.loads(self.content)
|
|
|
|
def mock_response(*args, **kwargs):
|
|
assert args[0] == AUTHENTICATED_USER_ENDPOINT
|
|
assert "Authorization" in kwargs["headers"]
|
|
assert kwargs["headers"]["Authorization"].startswith("token ")
|
|
assert "Accept" in kwargs["headers"]
|
|
return FakeResponse(b'{"login":"test","id":1}')
|
|
|
|
monkeypatch.setattr(httpx2, "get", mock_response)
|
|
result = fetch_github_info("token")
|
|
assert result["login"] == "test"
|
|
assert result["id"] == 1
|