Toot-Mastodon-CLI-TUI-clien.../tests/test_api.py

74 lines
1.9 KiB
Python
Raw Normal View History

2017-04-15 14:53:08 +02:00
# -*- coding: utf-8 -*-
import pytest
2017-04-15 14:46:22 +02:00
2018-06-07 10:00:50 +02:00
from unittest import mock
from toot import App, CLIENT_NAME, CLIENT_WEBSITE
from toot.api import create_app, login, SCOPES, AuthenticationError
2018-06-07 10:00:50 +02:00
from tests.utils import MockResponse
2017-04-15 14:46:22 +02:00
2018-06-07 10:00:50 +02:00
@mock.patch('toot.http.anon_post')
def test_create_app(mock_post):
mock_post.return_value = MockResponse({
'client_id': 'foo',
'client_secret': 'bar',
})
2017-04-15 14:46:22 +02:00
create_app('bigfish.software')
2017-04-15 14:46:22 +02:00
2018-06-07 10:00:50 +02:00
mock_post.assert_called_once_with('https://bigfish.software/api/v1/apps', {
'website': CLIENT_WEBSITE,
'client_name': CLIENT_NAME,
'scopes': SCOPES,
'redirect_uris': 'urn:ietf:wg:oauth:2.0:oob',
})
2017-04-15 14:46:22 +02:00
2018-06-07 10:00:50 +02:00
@mock.patch('toot.http.anon_post')
def test_login(mock_post):
app = App('bigfish.software', 'https://bigfish.software', 'foo', 'bar')
2017-04-15 14:46:22 +02:00
data = {
'grant_type': 'password',
'client_id': app.client_id,
'client_secret': app.client_secret,
'username': 'user',
'password': 'pass',
'scope': SCOPES,
}
2018-06-07 10:00:50 +02:00
mock_post.return_value = MockResponse({
'token_type': 'bearer',
'scope': 'read write follow',
'access_token': 'xxx',
'created_at': 1492523699
})
login(app, 'user', 'pass')
2018-06-07 10:00:50 +02:00
mock_post.assert_called_once_with(
'https://bigfish.software/oauth/token', data, allow_redirects=False)
2018-06-07 10:00:50 +02:00
@mock.patch('toot.http.anon_post')
def test_login_failed(mock_post):
app = App('bigfish.software', 'https://bigfish.software', 'foo', 'bar')
data = {
'grant_type': 'password',
'client_id': app.client_id,
'client_secret': app.client_secret,
'username': 'user',
'password': 'pass',
'scope': SCOPES,
}
2018-06-07 10:00:50 +02:00
mock_post.return_value = MockResponse(is_redirect=True)
2017-04-15 14:46:22 +02:00
with pytest.raises(AuthenticationError):
login(app, 'user', 'pass')
2018-06-07 10:00:50 +02:00
mock_post.assert_called_once_with(
'https://bigfish.software/oauth/token', data, allow_redirects=False)