Skip to content

Commit 8d268fc

Browse files
committed
Lint
1 parent 07e9834 commit 8d268fc

31 files changed

Lines changed: 452 additions & 237 deletions

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/asottile/pyupgrade
3-
rev: v2.20.0
3+
rev: v3.2.0
44
hooks:
55
- id: pyupgrade
66
args: [--py36-plus]

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ respx
1818
pre-commit==2.20.0
1919
pyupgrade==3.2.0
2020
black==22.10.0
21-
flake8==5.0.4
21+
flake8==3.9.2
2222
# flake8-docstrings==1.5.0
2323
pydocstyle==6.1.1
2424
bandit==1.7.4

tests/common.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
import os
21
import json
2+
import os
33

44
TEST_PATH = os.path.dirname(__file__)
55

66

77
def get_response(name):
88
"""Read a response file."""
9-
with open(f"{TEST_PATH}/data/responses/{name}.json",encoding='utf8') as f:
9+
with open(f"{TEST_PATH}/data/responses/{name}.json", encoding="utf8") as f:
1010
return f.read()
1111

12+
1213
def get_response_json(name):
1314
"""Read a response file and return json dict."""
1415
text = get_response(name)
15-
return json.loads(text)
16+
return json.loads(text)

tests/conftest.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from datetime import datetime
22

3+
from ecdsa.keys import SigningKey
34
from httpx import AsyncClient
4-
import respx
5-
from ecdsa.keys import SigningKey, VerifyingKey
65
import pytest
76
import pytest_asyncio
87

@@ -19,6 +18,7 @@
1918

2019
collect_ignore = ["setup.py"]
2120

21+
2222
@pytest_asyncio.fixture(scope="function")
2323
async def auth_mgr(event_loop):
2424
session = AsyncClient()
@@ -34,6 +34,7 @@ async def auth_mgr(event_loop):
3434
def xbl_client(auth_mgr):
3535
return XboxLiveClient(auth_mgr)
3636

37+
3738
@pytest.fixture(scope="session")
3839
def ecdsa_signing_key_str() -> str:
3940
with open("tests/data/test_signing_key.pem") as f:

tests/test_account.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99

1010
@pytest.mark.asyncio
1111
async def test_claim_gamertag(respx_mock, xbl_client):
12-
route = respx_mock.post("https://user.mgt.xboxlive.com").mock(return_value=Response(200))
12+
route = respx_mock.post("https://user.mgt.xboxlive.com").mock(
13+
return_value=Response(200)
14+
)
1315
ret = await xbl_client.account.claim_gamertag("2669321029139235", "PrettyPony")
1416

1517
assert ret == ClaimGamertagResult.Available
@@ -18,7 +20,9 @@ async def test_claim_gamertag(respx_mock, xbl_client):
1820

1921
@pytest.mark.asyncio
2022
async def test_claim_gamertag_error(respx_mock, xbl_client):
21-
route = respx_mock.post("https://user.mgt.xboxlive.com").mock(return_value=Response(500))
23+
route = respx_mock.post("https://user.mgt.xboxlive.com").mock(
24+
return_value=Response(500)
25+
)
2226
with pytest.raises(HTTPStatusError) as err:
2327
await xbl_client.account.claim_gamertag("2669321029139235", "PrettyPony")
2428

@@ -29,7 +33,9 @@ async def test_claim_gamertag_error(respx_mock, xbl_client):
2933

3034
@pytest.mark.asyncio
3135
async def test_change_gamertag(respx_mock, xbl_client):
32-
route = respx_mock.post("https://accounts.xboxlive.com").mock(return_value=Response(200))
36+
route = respx_mock.post("https://accounts.xboxlive.com").mock(
37+
return_value=Response(200)
38+
)
3339
ret = await xbl_client.account.change_gamertag("2669321029139235", "PrettyPony")
3440

3541
assert ret == ChangeGamertagResult.ChangeSuccessful
@@ -38,7 +44,9 @@ async def test_change_gamertag(respx_mock, xbl_client):
3844

3945
@pytest.mark.asyncio
4046
async def test_change_gamertag_error(respx_mock, xbl_client):
41-
route = respx_mock.post("https://accounts.xboxlive.com").mock(return_value=Response(500))
47+
route = respx_mock.post("https://accounts.xboxlive.com").mock(
48+
return_value=Response(500)
49+
)
4250
with pytest.raises(HTTPStatusError) as err:
4351
await xbl_client.account.change_gamertag("2669321029139235", "PrettyPony")
4452

tests/test_achievements.py

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import os
2-
3-
import pytest
41
from httpx import Response
2+
import pytest
53

64
from tests.common import get_response_json
75

86

97
@pytest.mark.asyncio
108
async def test_achievement_360_all(respx_mock, xbl_client):
11-
route = respx_mock.get("https://achievements.xboxlive.com").mock(return_value=Response(200, json=get_response_json("achievements_360_all")))
9+
route = respx_mock.get("https://achievements.xboxlive.com").mock(
10+
return_value=Response(200, json=get_response_json("achievements_360_all"))
11+
)
1212

1313
ret = await xbl_client.achievements.get_achievements_xbox360_all(
1414
"2669321029139235", 1297290392
@@ -20,65 +20,81 @@ async def test_achievement_360_all(respx_mock, xbl_client):
2020

2121
@pytest.mark.asyncio
2222
async def test_achievement_360_earned(respx_mock, xbl_client):
23-
route = respx_mock.get("https://achievements.xboxlive.com").mock(return_value=Response(200, json=get_response_json("achievements_360_earned")))
23+
route = respx_mock.get("https://achievements.xboxlive.com").mock(
24+
return_value=Response(200, json=get_response_json("achievements_360_earned"))
25+
)
2426

2527
ret = await xbl_client.achievements.get_achievements_xbox360_earned(
2628
"2669321029139235", 1297290392
2729
)
28-
30+
2931
assert len(ret.achievements) == 1
3032
assert route.called
3133

3234

3335
@pytest.mark.asyncio
3436
async def test_achievement_360_recent_progress(respx_mock, xbl_client):
35-
route = respx_mock.get("https://achievements.xboxlive.com").mock(return_value=Response(200, json=get_response_json("achievements_360_recent_progress")))
37+
route = respx_mock.get("https://achievements.xboxlive.com").mock(
38+
return_value=Response(
39+
200, json=get_response_json("achievements_360_recent_progress")
40+
)
41+
)
3642

3743
ret = (
3844
await xbl_client.achievements.get_achievements_xbox360_recent_progress_and_info(
3945
xuid="2669321029139235"
4046
)
4147
)
42-
48+
4349
assert len(ret.titles) == 32
4450
assert route.called
4551

4652

4753
@pytest.mark.asyncio
4854
async def test_achievement_one_details(respx_mock, xbl_client):
49-
route = respx_mock.get("https://achievements.xboxlive.com").mock(return_value=Response(200, json=get_response_json("achievements_one_details")))
55+
route = respx_mock.get("https://achievements.xboxlive.com").mock(
56+
return_value=Response(200, json=get_response_json("achievements_one_details"))
57+
)
5058

5159
ret = await xbl_client.achievements.get_achievements_detail_item(
5260
xuid="2669321029139235",
5361
service_config_id="1370999b-fca2-4c53-8ec5-73493bcb67e5",
5462
achievement_id="39",
5563
)
56-
64+
5765
assert len(ret.achievements) == 1
5866
assert route.called
5967

6068

6169
@pytest.mark.asyncio
6270
async def test_achievement_one_gameprogress(respx_mock, xbl_client):
63-
route = respx_mock.get("https://achievements.xboxlive.com").mock(return_value=Response(200, json=get_response_json("achievements_one_gameprogress")))
71+
route = respx_mock.get("https://achievements.xboxlive.com").mock(
72+
return_value=Response(
73+
200, json=get_response_json("achievements_one_gameprogress")
74+
)
75+
)
6476

6577
ret = await xbl_client.achievements.get_achievements_xboxone_gameprogress(
6678
xuid="2669321029139235", title_id=219630713
6779
)
68-
80+
6981
assert len(ret.achievements) == 32
7082
assert route.called
7183

7284

7385
@pytest.mark.asyncio
7486
async def test_achievement_one_recent_progress(respx_mock, xbl_client):
75-
route = respx_mock.get("https://achievements.xboxlive.com").mock(return_value=Response(200, json=get_response_json("achievements_one_recent_progress")))
87+
route = respx_mock.get("https://achievements.xboxlive.com").mock(
88+
return_value=Response(
89+
200, json=get_response_json("achievements_one_recent_progress")
90+
)
91+
)
7692

7793
ret = (
7894
await xbl_client.achievements.get_achievements_xboxone_recent_progress_and_info(
7995
xuid="2669321029139235"
8096
)
8197
)
82-
98+
8399
assert len(ret.titles) == 32
84100
assert route.called

tests/test_auth.py

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from datetime import datetime, timedelta, timezone
22

3-
import pytest
43
from httpx import Response
4+
import pytest
5+
56
from tests.common import get_response_json
67

78

@@ -20,9 +21,15 @@ async def test_generate_auth_url_with_state(auth_mgr):
2021

2122
@pytest.mark.asyncio
2223
async def test_request_tokens(respx_mock, auth_mgr):
23-
route1 = respx_mock.post("https://login.live.com").mock(return_value=Response(200, json=get_response_json("auth_oauth2_token")))
24-
route2 = respx_mock.post("https://user.auth.xboxlive.com/user/authenticate").mock(return_value=Response(200, json=get_response_json("auth_user_token")))
25-
route3 = respx_mock.post("https://xsts.auth.xboxlive.com/xsts/authorize").mock(return_value=Response(200, json=get_response_json("auth_xsts_token")))
24+
route1 = respx_mock.post("https://login.live.com").mock(
25+
return_value=Response(200, json=get_response_json("auth_oauth2_token"))
26+
)
27+
route2 = respx_mock.post("https://user.auth.xboxlive.com/user/authenticate").mock(
28+
return_value=Response(200, json=get_response_json("auth_user_token"))
29+
)
30+
route3 = respx_mock.post("https://xsts.auth.xboxlive.com/xsts/authorize").mock(
31+
return_value=Response(200, json=get_response_json("auth_xsts_token"))
32+
)
2633
await auth_mgr.request_tokens("CODE")
2734
assert route1.called
2835
assert route2.called
@@ -37,9 +44,15 @@ async def test_refresh_tokens(respx_mock, auth_mgr):
3744
auth_mgr.user_token.not_after = expired
3845
auth_mgr.xsts_token.not_after = expired
3946

40-
route1 = respx_mock.post("https://login.live.com").mock(return_value=Response(200, json=get_response_json("auth_oauth2_token")))
41-
route2 = respx_mock.post("https://user.auth.xboxlive.com/user/authenticate").mock(return_value=Response(200, json=get_response_json("auth_user_token")))
42-
route3 = respx_mock.post("https://xsts.auth.xboxlive.com/xsts/authorize").mock(return_value=Response(200, json=get_response_json("auth_xsts_token")))
47+
route1 = respx_mock.post("https://login.live.com").mock(
48+
return_value=Response(200, json=get_response_json("auth_oauth2_token"))
49+
)
50+
route2 = respx_mock.post("https://user.auth.xboxlive.com/user/authenticate").mock(
51+
return_value=Response(200, json=get_response_json("auth_user_token"))
52+
)
53+
route3 = respx_mock.post("https://xsts.auth.xboxlive.com/xsts/authorize").mock(
54+
return_value=Response(200, json=get_response_json("auth_xsts_token"))
55+
)
4356
await auth_mgr.refresh_tokens()
4457
assert route1.called
4558
assert route2.called
@@ -63,16 +76,22 @@ async def test_refresh_tokens_user_still_valid(respx_mock, auth_mgr):
6376
auth_mgr.xsts_token.not_after = expired
6477

6578
auth_mgr.user_token.not_after = datetime.now(timezone.utc) + timedelta(days=1)
66-
route1 = respx_mock.post("https://login.live.com").mock(return_value=Response(200, json=get_response_json("auth_oauth2_token")))
67-
route2 = respx_mock.post("https://xsts.auth.xboxlive.com/xsts/authorize").mock(return_value=Response(200, json=get_response_json("auth_xsts_token")))
79+
route1 = respx_mock.post("https://login.live.com").mock(
80+
return_value=Response(200, json=get_response_json("auth_oauth2_token"))
81+
)
82+
route2 = respx_mock.post("https://xsts.auth.xboxlive.com/xsts/authorize").mock(
83+
return_value=Response(200, json=get_response_json("auth_xsts_token"))
84+
)
6885
await auth_mgr.refresh_tokens()
6986
assert route1.called
7087
assert route2.called
7188

7289

7390
@pytest.mark.asyncio
7491
async def test_get_title_endpoints(respx_mock, auth_mgr):
75-
route = respx_mock.get("https://title.mgt.xboxlive.com").mock(return_value=Response(200, json=get_response_json("auth_title_endpoints")))
92+
route = respx_mock.get("https://title.mgt.xboxlive.com").mock(
93+
return_value=Response(200, json=get_response_json("auth_title_endpoints"))
94+
)
7695
await auth_mgr.get_title_endpoints()
7796
assert route.called
7897

tests/test_catalog.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,70 @@
1-
import pytest
21
from httpx import Response
2+
import pytest
3+
34
from xbox.webapi.api.provider.catalog.models import AlternateIdType, FieldsTemplate
45

56
from tests.common import get_response_json
67

78

89
@pytest.mark.asyncio
910
async def test_get_products(respx_mock, xbl_client):
10-
route = respx_mock.get("https://displaycatalog.mp.microsoft.com").mock(return_value=Response(200, json=get_response_json("catalog_browse")))
11+
route = respx_mock.get("https://displaycatalog.mp.microsoft.com").mock(
12+
return_value=Response(200, json=get_response_json("catalog_browse"))
13+
)
1114
ret = await xbl_client.catalog.get_products(["C5DTJ99626K3", "BT5P2X999VH2"])
12-
15+
1316
assert len(ret.products) == 2
1417
assert route.called
1518

1619

1720
@pytest.mark.asyncio
1821
async def test_get_products_detail(respx_mock, xbl_client):
19-
route = respx_mock.get("https://displaycatalog.mp.microsoft.com").mock(return_value=Response(200, json=get_response_json("catalog_browse_details")))
22+
route = respx_mock.get("https://displaycatalog.mp.microsoft.com").mock(
23+
return_value=Response(200, json=get_response_json("catalog_browse_details"))
24+
)
2025

2126
ret = await xbl_client.catalog.get_products(
2227
["C5DTJ99626K3", "BT5P2X999VH2"], fields=FieldsTemplate.DETAILS
2328
)
24-
29+
2530
assert len(ret.products) == 2
2631
assert route.called
2732

2833

2934
@pytest.mark.asyncio
3035
async def test_get_product_from_alternate_id(respx_mock, xbl_client):
31-
route = respx_mock.get("https://displaycatalog.mp.microsoft.com").mock(return_value=Response(200, json=get_response_json("catalog_product_lookup")))
36+
route = respx_mock.get("https://displaycatalog.mp.microsoft.com").mock(
37+
return_value=Response(200, json=get_response_json("catalog_product_lookup"))
38+
)
3239
ret = await xbl_client.catalog.get_product_from_alternate_id(
3340
"4DF9E0F8.Netflix_mcm4njqhnhss8", AlternateIdType.PACKAGE_FAMILY_NAME
3441
)
35-
42+
3643
assert ret.total_result_count == 1
3744
assert route.called
3845

3946

4047
@pytest.mark.asyncio
4148
async def test_get_product_from_alternate_id_legacy(respx_mock, xbl_client):
42-
route = respx_mock.get("https://displaycatalog.mp.microsoft.com").mock(return_value=Response(200, json=get_response_json("catalog_product_lookup_legacy")))
49+
route = respx_mock.get("https://displaycatalog.mp.microsoft.com").mock(
50+
return_value=Response(
51+
200, json=get_response_json("catalog_product_lookup_legacy")
52+
)
53+
)
4354
ret = await xbl_client.catalog.get_product_from_alternate_id(
4455
"71e7df12-89e0-4dc7-a5ff-a182fc2df94f", AlternateIdType.LEGACY_XBOX_PRODUCT_ID
4556
)
46-
57+
4758
assert ret.total_result_count == 1
4859
assert route.called
4960

5061

5162
@pytest.mark.asyncio
5263
async def test_product_search(respx_mock, xbl_client):
53-
route = respx_mock.get("https://displaycatalog.mp.microsoft.com").mock(return_value=Response(200, json=get_response_json("catalog_search")))
64+
route = respx_mock.get("https://displaycatalog.mp.microsoft.com").mock(
65+
return_value=Response(200, json=get_response_json("catalog_search"))
66+
)
5467
ret = await xbl_client.catalog.product_search("dest")
55-
68+
5669
assert ret.total_result_count == 10
5770
assert route.called

0 commit comments

Comments
 (0)