Improve test coverage

This commit is contained in:
Junpei Kawamoto 2023-01-02 14:58:52 -06:00
parent fa1c6c97d2
commit 5542d58c36
2 changed files with 35 additions and 11 deletions

View File

@ -58,7 +58,6 @@ class Mastodon(Internals):
'User-Agent': user_agent 'User-Agent': user_agent
} }
try:
if redirect_uris is not None: if redirect_uris is not None:
if isinstance(redirect_uris, (list, tuple)): if isinstance(redirect_uris, (list, tuple)):
redirect_uris = "\n".join(list(redirect_uris)) redirect_uris = "\n".join(list(redirect_uris))
@ -67,6 +66,7 @@ class Mastodon(Internals):
request_data['redirect_uris'] = 'urn:ietf:wg:oauth:2.0:oob' request_data['redirect_uris'] = 'urn:ietf:wg:oauth:2.0:oob'
if website is not None: if website is not None:
request_data['website'] = website request_data['website'] = website
try:
if session: if session:
ret = session.post(f"{api_base_url}/api/v1/apps", data=request_data, headers=headers, timeout=request_timeout) ret = session.post(f"{api_base_url}/api/v1/apps", data=request_data, headers=headers, timeout=request_timeout)
response = ret.json() response = ret.json()

View File

@ -1,6 +1,7 @@
from mastodon import Mastodon from mastodon import Mastodon, MastodonNetworkError
import pytest import pytest
import requests import requests
from requests import HTTPError
import time import time
try: try:
@ -39,11 +40,34 @@ def test_create_app_redirect_uris(mocker):
kwargs = requests.post.call_args[1] kwargs = requests.post.call_args[1]
assert kwargs['data']['redirect_uris'] == 'http://example.net' assert kwargs['data']['redirect_uris'] == 'http://example.net'
def test_create_app_multiple_redirect_uris(mocker):
test_create_app(mocker, redirect_uris=['http://example.net', 'https://example.net'])
kwargs = requests.post.call_args[1]
assert kwargs['data']['redirect_uris'] == 'http://example.net\nhttps://example.net'
def test_create_app_website(mocker): def test_create_app_website(mocker):
test_create_app(mocker, website='http://example.net') test_create_app(mocker, website='http://example.net')
kwargs = requests.post.call_args[1] kwargs = requests.post.call_args[1]
assert kwargs['data']['website'] == 'http://example.net' assert kwargs['data']['website'] == 'http://example.net'
def test_create_app_session():
resp = Mock(**{'json.return_value': {'client_id': 'foo', 'client_secret': 'bar'}})
sess = Mock(**{'post.return_value': resp})
app = Mastodon.create_app("Mastodon.py test suite", api_base_url="example.com", session=sess)
assert app == ('foo', 'bar')
sess.post.assert_called()
def test_create_app_error(mocker):
def post(_url, **_kwargs):
raise HTTPError("Unauthorized")
mocker.patch('requests.post', side_effect=post)
with pytest.raises(MastodonNetworkError):
Mastodon.create_app("Mastodon.py test suite", api_base_url="example.com")
def test_create_app_user_agent(mocker): def test_create_app_user_agent(mocker):
test_create_app(mocker, user_agent="pytest") test_create_app(mocker, user_agent="pytest")
kwargs = requests.post.call_args[1] kwargs = requests.post.call_args[1]
@ -60,7 +84,7 @@ def test_app_account_create():
# This leaves behind stuff on the test server, which is unfortunate, but eh. # This leaves behind stuff on the test server, which is unfortunate, but eh.
suffix = str(time.time()).replace(".", "")[-5:] suffix = str(time.time()).replace(".", "")[-5:]
test_app = test_app = Mastodon.create_app( test_app = Mastodon.create_app(
"mastodon.py generated test app", "mastodon.py generated test app",
api_base_url="http://localhost:3000/" api_base_url="http://localhost:3000/"
) )
@ -80,7 +104,7 @@ def test_app_account_create():
def test_app_account_create_invalid(): def test_app_account_create_invalid():
suffix = str(time.time()).replace(".", "")[-5:] suffix = str(time.time()).replace(".", "")[-5:]
test_app = test_app = Mastodon.create_app( test_app = Mastodon.create_app(
"mastodon.py generated test app", "mastodon.py generated test app",
api_base_url="http://localhost:3000/" api_base_url="http://localhost:3000/"
) )