async def test_config_file_custom_name(self):
     async with MangadexClient.from_config(
             self.file_path, section_name="asyncdex_custom_name") as client:
         assert not client.anonymous_mode
         assert client.username
         assert client.password
         assert client.refresh_token
         assert not client.session_token
 async def test_not_anonymous_refresh_token(self):
     client = MangadexClient(refresh_token="Test")
     assert not client.anonymous_mode
     assert not client.username
     assert not client.password
     assert client.refresh_token
     assert not client.session_token
     await client.close()
 async def test_auto_renew_login(self, username, password):
     async with MangadexClient(username=username,
                               password=password) as client:
         await client.user.fetch()
         client.session_token = "blah"
         client.refresh_token = "blah"
         await client.user.fetch_user()
         assert client.session_token != "blah"
         assert client.refresh_token != "blah"
 async def test_auto_expire_session_token(self, username, password):
     async with MangadexClient(username=username,
                               password=password) as client:
         await client.login()
         client._session_token_acquired = datetime(2000, 1, 1)
         assert not client.session_token
         await client.get_session_token()
         assert client.session_token
         assert client._session_token_acquired != datetime(2000, 1, 1)
 async def test_init_env_var_refresh_token_only(self, monkeypatch):
     monkeypatch.delenv("asyncdex_username", raising=False)
     monkeypatch.delenv("asyncdex_password", raising=False)
     monkeypatch.setenv("asyncdex_refresh_token", "test")
     async with MangadexClient.from_environment_variables() as client:
         assert not client.anonymous_mode
         assert not client.username
         assert not client.password
         assert client.refresh_token
         assert not client.session_token
 async def test_anonymous_option(self):
     client = MangadexClient(username="******",
                             password="******",
                             refresh_token="Test",
                             anonymous=True)
     assert client.anonymous_mode
     assert not client.username
     assert not client.password
     assert not client.refresh_token
     assert not client.session_token
     await client.close()
 async def test_message_response_json_context(self):
     async with MangadexClient() as client:
         r = await client.request("get", routes["ping"])
         with pytest.raises(HTTPException) as exc:
             raise HTTPException(
                 "GET",
                 routes["ping"],
                 response=r,
                 json={"errors": [{"title": "Test", "detail": "This is a test.", "context": {"test": 1}}]},
             )
         assert str(exc.value) == "HTTP 200: Test: This is a test. ({'test': 1})"
 async def test_init_env_var_alternate_names(self, monkeypatch):
     monkeypatch.setenv("au", "test")
     monkeypatch.setenv("ap", "test")
     monkeypatch.setenv("art", "test")
     async with MangadexClient.from_environment_variables(
             username_variable_name="au",
             password_variable_name="ap",
             refresh_token_variable_name="art") as client:
         assert not client.anonymous_mode
         assert client.username
         assert client.password
         assert client.refresh_token
         assert not client.session_token
 async def test_auto_session_token(self, refresh_token):
     async with MangadexClient(refresh_token=refresh_token) as client:
         await client.ping()
         assert client.session_token
         assert client.user.id != "client-user"
         assert client.user.permissions == [
             "user.list",
             "manga.view",
             "chapter.view",
             "author.view",
             "scanlation_group.view",
             "cover.view",
             "manga.list",
             "chapter.list",
             "author.list",
             "scanlation_group.list",
             "cover.list",
         ]
Exemple #10
0
 async def test_login_username_password(self, username, password):
     async with MangadexClient() as client:
         await client.login(username, password)
         assert client.session_token
         assert client.user.id != "client-user"
         assert client.user.permissions == [
             "user.list",
             "manga.view",
             "chapter.view",
             "author.view",
             "scanlation_group.view",
             "cover.view",
             "manga.list",
             "chapter.list",
             "author.list",
             "scanlation_group.list",
             "cover.list",
         ]
Exemple #11
0
 async def test_refresh_token_from_username_and_password(
         self, username, password):
     async with MangadexClient(username=username,
                               password=password) as client:
         await client.login()
         assert client.session_token
         assert client.user.id != "client-user"
         assert client.user.permissions == [
             "user.list",
             "manga.view",
             "chapter.view",
             "author.view",
             "scanlation_group.view",
             "cover.view",
             "manga.list",
             "chapter.list",
             "author.list",
             "scanlation_group.list",
             "cover.list",
         ]
         client.session_token = None
         assert not client.session_token
         await client.get_session_token()
         assert client.session_token
 async def test_message_response(self):
     async with MangadexClient() as client:
         with pytest.raises(HTTPException) as exc:
             await client.request("GET", "/fakepath" * 1000)
     assert (
         str(exc.value) == "HTTP 414: HTTP Error on GET for "
         "https://api.mangadex.org/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath/fakepath"
         "/fakepath"
         "/fakepath/fakepath/fakepath."
     )
Exemple #13
0
 async def test_login_no_creds(self):
     async with MangadexClient() as client:
         with pytest.raises(Unauthorized):
             await client.login()
Exemple #14
0
 async def test_unauthorized_exception(self):
     async with MangadexClient() as client:
         with pytest.raises(Unauthorized):
             client.raise_exception_if_not_authenticated("GET", "TEST")
Exemple #15
0
 async def test_repr(self):
     async with MangadexClient(username="******", password="******") as client:
         assert repr(
             client) == "MangadexClient(anonymous=False, username='******')"
Exemple #16
0
 async def test_login_no_creds_refresh_token(self, refresh_token):
     async with MangadexClient(refresh_token=refresh_token) as client:
         with pytest.raises(Unauthorized):
             await client.login()
Exemple #17
0
 def test_username_and_password(self):
     with pytest.raises(ValueError):
         MangadexClient(username="******")
     with pytest.raises(ValueError):
         MangadexClient(password="******")
Exemple #18
0
 async def test_get_manga(self):
     async with MangadexClient() as client:
         manga = client.get_manga("Test")
         assert isinstance(manga, Manga)
Exemple #19
0
 async def test_get_author(self):
     async with MangadexClient() as client:
         author = client.get_author("Test")
         assert isinstance(author, Author)
Exemple #20
0
 async def test_get_chapter(self):
     async with MangadexClient() as client:
         chapter = client.get_chapter("Test")
         assert isinstance(chapter, Chapter)
Exemple #21
0
 async def test_login_username_or_password(self):
     async with MangadexClient() as client:
         with pytest.raises(ValueError):
             await client.login(username="******")
         with pytest.raises(ValueError):
             await client.login(password="******")
Exemple #22
0
 async def test_get_group(self):
     async with MangadexClient() as client:
         group = client.get_group("Test")
         assert isinstance(group, Group)