Skip to content
This repository was archived by the owner on Jan 13, 2024. It is now read-only.

Commit b1826a5

Browse files
committed
fix tests
1 parent 416ee57 commit b1826a5

File tree

5 files changed

+65
-6
lines changed

5 files changed

+65
-6
lines changed

twootfeed/tests/test_default_route.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
1+
from unittest.mock import patch
2+
13
from flask import Flask
24

5+
from .utils import MastodonApi, Tweepy, TwitterApi
6+
37

8+
@patch('twootfeed.twitter.generate_tweets_feed.tweepy', Tweepy([]))
9+
@patch('twootfeed.twitter.routes.twitter_api', TwitterApi())
10+
@patch('twootfeed.mastodon.routes.mastodon_api', MastodonApi([]))
411
def test_default_route(app: Flask) -> None:
512
client = app.test_client()
613
response = client.get('/')

twootfeed/tests/test_mastodon_routes.py

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
from unittest.mock import patch
12
from uuid import uuid4
23

34
import pytest
45
from flask import Flask
56

67
from .data import TEST_TOKEN
7-
from .test_twitter_routes import TestTwitterRoutes
8+
from .utils import MastodonApi
89

910
MASTODON_ENDPOINTS = [
1011
'/toots/favorites',
@@ -13,6 +14,7 @@
1314
]
1415

1516

17+
@patch('twootfeed.mastodon.routes.mastodon_api', MastodonApi([]))
1618
class TestMastodonTagsRoute:
1719
endpoint = '/toots/tags/{tag}'
1820

@@ -52,10 +54,54 @@ def test_it_returns_200_when_tag_is_provided(self, app: Flask) -> None:
5254
assert '<rss version="2.0">' in data
5355

5456

55-
class TestMastodonSearchRoute(TestTwitterRoutes):
57+
@patch('twootfeed.mastodon.routes.mastodon_api', MastodonApi([]))
58+
class TestMastodonSearchRoute:
5659
endpoint = '/toots/search'
5760

61+
def test_it_returns_401_when_token_is_missing(
62+
self, app_missing_token: Flask
63+
) -> None:
64+
client = app_missing_token.test_client()
65+
66+
response = client.get(self.endpoint)
67+
68+
assert response.status_code == 401
69+
data = response.data.decode()
70+
assert data == 'missing token'
71+
72+
def test_it_returns_403_when_token_is_invalid(
73+
self, app_invalid_token: Flask
74+
) -> None:
75+
client = app_invalid_token.test_client()
76+
77+
response = client.get(f'{self.endpoint}?token=invalid')
78+
79+
assert response.status_code == 403
80+
data = response.data.decode()
81+
assert data == 'invalid token'
82+
83+
def test_it_returns_400_when_query_is_missing(self, app: Flask) -> None:
84+
client = app.test_client()
85+
86+
response = client.get(f'{self.endpoint}?token={TEST_TOKEN}')
87+
88+
assert response.status_code == 400
89+
data = response.data.decode()
90+
assert data == 'missing query'
91+
92+
def test_it_returns_200_when_query_is_provided(self, app: Flask) -> None:
93+
client = app.test_client()
94+
95+
response = client.get(
96+
f'{self.endpoint}?q={uuid4().hex}&token={TEST_TOKEN}'
97+
)
98+
99+
assert response.status_code == 200
100+
data = response.data.decode()
101+
assert '<rss version="2.0">' in data
102+
58103

104+
@patch('twootfeed.mastodon.routes.mastodon_api', MastodonApi([]))
59105
class TestMastodonRoutes:
60106
@pytest.mark.parametrize('input_endpoint', MASTODON_ENDPOINTS)
61107
def test_it_returns_401_when_token_is_missing(

twootfeed/tests/test_twitter_routes.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1+
from unittest.mock import patch
12
from uuid import uuid4
23

34
from flask import Flask
45

56
from .data import TEST_TOKEN
7+
from .utils import Tweepy, TwitterApi
68

79

10+
@patch('twootfeed.twitter.generate_tweets_feed.tweepy', Tweepy([]))
11+
@patch('twootfeed.twitter.routes.twitter_api', TwitterApi())
812
class TestTwitterRoutes:
913
endpoint = '/tweets'
1014

@@ -39,7 +43,7 @@ def test_it_returns_400_when_query_is_missing(self, app: Flask) -> None:
3943
data = response.data.decode()
4044
assert data == 'missing query'
4145

42-
def test_it_returns_200_when_query_valid(self, app: Flask) -> None:
46+
def test_it_returns_200_when_query_is_provided(self, app: Flask) -> None:
4347
client = app.test_client()
4448

4549
response = client.get(

twootfeed/tests/utils.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ def __init__(self, tweets: List):
5050
self.tweet_pages = self.items_in_pages(tweets)
5151
self.tweets = [ToDotNotationTweepy(tweet) for tweet in tweets]
5252

53+
def Cursor(self, *args: Any, **kwargs: Any) -> 'Tweepy':
54+
return self
55+
5356
def pages(self) -> List[List[ToDotNotationTweepy]]:
5457
return self.tweet_pages
5558

twootfeed/utils/decorator.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from functools import wraps
22
from typing import Any, Callable, Tuple, Union
33

4-
from flask import request
5-
from twootfeed import param
4+
from flask import current_app, request
65

76

87
def require_token(f: Callable) -> Callable:
@@ -13,7 +12,7 @@ def decorated_function(
1312
token = request.args.get('token')
1413
if not token:
1514
return 'missing token', 401
16-
if token != param['feed']['token']:
15+
if token != current_app.config['FEED_CONFIG']['token']:
1716
return 'invalid token', 403
1817

1918
return f(*args, **kwargs)

0 commit comments

Comments
 (0)