kopia lustrzana https://github.com/snarfed/bridgy-fed
minor noop test refactoring
rodzic
cf12817212
commit
f4aefff6f4
|
@ -0,0 +1,2 @@
|
|||
# configure logging
|
||||
import oauth_dropins.webutil.tests
|
|
@ -12,7 +12,6 @@ from oauth_dropins.webutil.util import json_dumps, json_loads
|
|||
import requests
|
||||
|
||||
import activitypub
|
||||
from app import app, cache
|
||||
import common
|
||||
from models import Follower, MagicKey, Response
|
||||
from . import testutil
|
||||
|
@ -137,19 +136,12 @@ DELETE = {
|
|||
'object': 'https://mastodon.social/users/swentel',
|
||||
}
|
||||
|
||||
client = app.test_client()
|
||||
|
||||
|
||||
@patch('requests.post')
|
||||
@patch('requests.get')
|
||||
@patch('requests.head')
|
||||
class ActivityPubTest(testutil.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(ActivityPubTest, self).setUp()
|
||||
app.testing = True
|
||||
cache.clear()
|
||||
|
||||
def test_actor(self, _, mock_get, __):
|
||||
mock_get.return_value = requests_response("""
|
||||
<body>
|
||||
|
@ -157,7 +149,7 @@ class ActivityPubTest(testutil.TestCase):
|
|||
</body>
|
||||
""", url='https://foo.com/', content_type=common.CONTENT_TYPE_HTML)
|
||||
|
||||
got = client.get('/foo.com')
|
||||
got = self.client.get('/foo.com')
|
||||
mock_get.assert_called_once_with('http://foo.com/', headers=common.HEADERS,
|
||||
stream=True, timeout=util.HTTP_TIMEOUT)
|
||||
self.assertEqual(200, got.status_code)
|
||||
|
@ -193,14 +185,14 @@ class ActivityPubTest(testutil.TestCase):
|
|||
</body>
|
||||
""")
|
||||
|
||||
got = client.get('/foo.com')
|
||||
got = self.client.get('/foo.com')
|
||||
mock_get.assert_called_once_with('http://foo.com/', headers=common.HEADERS,
|
||||
stream=True, timeout=util.HTTP_TIMEOUT)
|
||||
self.assertEqual(400, got.status_code)
|
||||
self.assertIn('representative h-card', got.get_data(as_text=True))
|
||||
|
||||
def test_actor_blocked_tld(self, _, __, ___):
|
||||
got = client.get('/foo.json')
|
||||
got = self.client.get('/foo.json')
|
||||
self.assertEqual(404, got.status_code)
|
||||
|
||||
def test_inbox_reply_object(self, *mocks):
|
||||
|
@ -218,7 +210,7 @@ class ActivityPubTest(testutil.TestCase):
|
|||
'<html><head><link rel="webmention" href="/webmention"></html>')
|
||||
mock_post.return_value = requests_response()
|
||||
|
||||
got = client.post('/foo.com/inbox', json=as2)
|
||||
got = self.client.post('/foo.com/inbox', json=as2)
|
||||
self.assertEqual(200, got.status_code, got.get_data(as_text=True))
|
||||
mock_get.assert_called_once_with(
|
||||
'http://orig/post', headers=common.HEADERS, timeout=15, stream=True)
|
||||
|
@ -247,7 +239,7 @@ class ActivityPubTest(testutil.TestCase):
|
|||
|
||||
mock_head.return_value = requests_response(url='http://this/')
|
||||
|
||||
got = client.post('/foo.com/inbox', json=reply)
|
||||
got = self.client.post('/foo.com/inbox', json=reply)
|
||||
self.assertEqual(200, got.status_code, got.get_data(as_text=True))
|
||||
|
||||
mock_head.assert_called_once_with(
|
||||
|
@ -268,8 +260,8 @@ class ActivityPubTest(testutil.TestCase):
|
|||
'<html><head><link rel="webmention" href="/webmention"></html>')
|
||||
mock_post.return_value = requests_response()
|
||||
|
||||
with app.test_client() as test_client:
|
||||
got = test_client.post('/foo.com/inbox', json=as2)
|
||||
with self.client:
|
||||
got = self.client.post('/foo.com/inbox', json=as2)
|
||||
self.assertEqual(200, got.status_code, got.get_data(as_text=True))
|
||||
mock_get.assert_called_once_with(
|
||||
'http://target/', headers=common.HEADERS, timeout=15, stream=True)
|
||||
|
@ -302,7 +294,7 @@ class ActivityPubTest(testutil.TestCase):
|
|||
]
|
||||
mock_post.return_value = requests_response()
|
||||
|
||||
got = client.post('/foo.com/inbox', json=LIKE)
|
||||
got = self.client.post('/foo.com/inbox', json=LIKE)
|
||||
self.assertEqual(200, got.status_code)
|
||||
|
||||
as2_headers = copy.deepcopy(common.HEADERS)
|
||||
|
@ -338,7 +330,7 @@ class ActivityPubTest(testutil.TestCase):
|
|||
]
|
||||
mock_post.return_value = requests_response()
|
||||
|
||||
got = client.post('/foo.com/inbox', json=FOLLOW_WRAPPED)
|
||||
got = self.client.post('/foo.com/inbox', json=FOLLOW_WRAPPED)
|
||||
self.assertEqual(200, got.status_code)
|
||||
|
||||
as2_headers = copy.deepcopy(common.HEADERS)
|
||||
|
@ -377,7 +369,7 @@ class ActivityPubTest(testutil.TestCase):
|
|||
|
||||
Follower(id=Follower._id('realize.be', FOLLOW['actor'])).put()
|
||||
|
||||
got = client.post('/foo.com/inbox', json=UNDO_FOLLOW_WRAPPED)
|
||||
got = self.client.post('/foo.com/inbox', json=UNDO_FOLLOW_WRAPPED)
|
||||
self.assertEqual(200, got.status_code)
|
||||
|
||||
follower = Follower.get_by_id('realize.be %s' % FOLLOW['actor'])
|
||||
|
@ -386,7 +378,7 @@ class ActivityPubTest(testutil.TestCase):
|
|||
def test_inbox_undo_follow_doesnt_exist(self, mock_head, mock_get, mock_post):
|
||||
mock_head.return_value = requests_response(url='https://realize.be/')
|
||||
|
||||
got = client.post('/foo.com/inbox', json=UNDO_FOLLOW_WRAPPED)
|
||||
got = self.client.post('/foo.com/inbox', json=UNDO_FOLLOW_WRAPPED)
|
||||
self.assertEqual(200, got.status_code)
|
||||
|
||||
def test_inbox_undo_follow_inactive(self, mock_head, mock_get, mock_post):
|
||||
|
@ -394,11 +386,11 @@ class ActivityPubTest(testutil.TestCase):
|
|||
Follower(id=Follower._id('realize.be', 'https://mastodon.social/users/swentel'),
|
||||
status='inactive').put()
|
||||
|
||||
got = client.post('/foo.com/inbox', json=UNDO_FOLLOW_WRAPPED)
|
||||
got = self.client.post('/foo.com/inbox', json=UNDO_FOLLOW_WRAPPED)
|
||||
self.assertEqual(200, got.status_code)
|
||||
|
||||
def test_inbox_unsupported_type(self, *_):
|
||||
got = client.post('/foo.com/inbox', json={
|
||||
got = self.client.post('/foo.com/inbox', json={
|
||||
'@context': ['https://www.w3.org/ns/activitystreams'],
|
||||
'id': 'https://xoxo.zone/users/aaronpk#follows/40',
|
||||
'type': 'Block',
|
||||
|
@ -414,7 +406,7 @@ class ActivityPubTest(testutil.TestCase):
|
|||
other = Follower.get_or_create('realize.be', 'https://mas.to/users/other')
|
||||
self.assertEqual(3, Follower.query().count())
|
||||
|
||||
got = client.post('/realize.be/inbox', json=DELETE)
|
||||
got = self.client.post('/realize.be/inbox', json=DELETE)
|
||||
self.assertEqual(200, got.status_code)
|
||||
|
||||
# TODO: bring back
|
||||
|
|
|
@ -3,21 +3,16 @@
|
|||
"""
|
||||
from unittest import mock
|
||||
|
||||
from app import app, cache
|
||||
from oauth_dropins.webutil.testutil import requests_response
|
||||
import requests
|
||||
from . import testutil
|
||||
|
||||
client = app.test_client()
|
||||
|
||||
|
||||
@mock.patch('requests.get')
|
||||
class AddWebmentionTest(testutil.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(AddWebmentionTest, self).setUp()
|
||||
app.testing = True
|
||||
cache.clear()
|
||||
super().setUp()
|
||||
self.resp = requests_response('asdf ☕ qwert', headers={
|
||||
'Link': 'first',
|
||||
'Foo': 'bar',
|
||||
|
@ -27,7 +22,7 @@ class AddWebmentionTest(testutil.TestCase):
|
|||
self.resp.status_code = 202
|
||||
mock_get.return_value = self.resp
|
||||
|
||||
got = client.get('/wm/http://url')
|
||||
got = self.client.get('/wm/http://url')
|
||||
self.assertEqual(202, got.status_code)
|
||||
self.assertEqual(self.resp._content, got.data)
|
||||
self.assertEqual(['bar'], got.headers.getlist('Foo'))
|
||||
|
@ -37,7 +32,7 @@ class AddWebmentionTest(testutil.TestCase):
|
|||
def test_endpoint_param(self, mock_get):
|
||||
mock_get.return_value = self.resp
|
||||
|
||||
got = client.get('/wm/http://url?endpoint=https://end/point')
|
||||
got = self.client.get('/wm/http://url?endpoint=https://end/point')
|
||||
self.assertEqual(200, got.status_code)
|
||||
self.assertEqual(['first', '<https://end/point>; rel="webmention"'],
|
||||
got.headers.getlist('Link'))
|
||||
|
|
|
@ -5,42 +5,37 @@ from unittest.mock import patch
|
|||
|
||||
from oauth_dropins.webutil.testutil import requests_response
|
||||
|
||||
from app import app, cache
|
||||
import common
|
||||
from models import MagicKey
|
||||
from .test_webmention import REPOST_HTML, REPOST_AS2
|
||||
from . import testutil
|
||||
|
||||
client = app.test_client()
|
||||
|
||||
|
||||
class RedirectTest(testutil.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(RedirectTest, self).setUp()
|
||||
app.testing = True
|
||||
cache.clear()
|
||||
super().setUp()
|
||||
MagicKey.get_or_create('foo.com')
|
||||
|
||||
def test_redirect(self):
|
||||
got = client.get('/r/https://foo.com/bar?baz=baj&biff')
|
||||
got = self.client.get('/r/https://foo.com/bar?baz=baj&biff')
|
||||
self.assertEqual(301, got.status_code)
|
||||
self.assertEqual('https://foo.com/bar?baz=baj&biff=', got.headers['Location'])
|
||||
|
||||
def test_redirect_scheme_missing(self):
|
||||
got = client.get('/r/foo.com')
|
||||
got = self.client.get('/r/foo.com')
|
||||
self.assertEqual(400, got.status_code)
|
||||
|
||||
def test_redirect_url_missing(self):
|
||||
got = client.get('/r/')
|
||||
got = self.client.get('/r/')
|
||||
self.assertEqual(404, got.status_code)
|
||||
|
||||
def test_redirect_no_magic_key_for_domain(self):
|
||||
got = client.get('/r/http://bar.com/baz')
|
||||
got = self.client.get('/r/http://bar.com/baz')
|
||||
self.assertEqual(404, got.status_code)
|
||||
|
||||
def test_redirect_single_slash(self):
|
||||
got = client.get('/r/https:/foo.com/bar')
|
||||
got = self.client.get('/r/https:/foo.com/bar')
|
||||
self.assertEqual(301, got.status_code)
|
||||
self.assertEqual('https://foo.com/bar', got.headers['Location'])
|
||||
|
||||
|
@ -65,7 +60,7 @@ class RedirectTest(testutil.TestCase):
|
|||
mock_get.return_value = requests_response(
|
||||
REPOST_HTML, content_type=common.CONTENT_TYPE_HTML)
|
||||
|
||||
got = client.get('/r/https://foo.com/bar', headers={'Accept': accept})
|
||||
got = self.client.get('/r/https://foo.com/bar', headers={'Accept': accept})
|
||||
|
||||
args, kwargs = mock_get.call_args
|
||||
self.assertEqual(('https://foo.com/bar',), args)
|
||||
|
|
|
@ -2,20 +2,15 @@
|
|||
"""Unit tests for render.py."""
|
||||
from oauth_dropins.webutil.util import json_dumps
|
||||
|
||||
from app import app, cache
|
||||
from models import Response
|
||||
import render
|
||||
from . import testutil
|
||||
|
||||
client = app.test_client()
|
||||
|
||||
|
||||
class RenderTest(testutil.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(RenderTest, self).setUp()
|
||||
app.testing = True
|
||||
cache.clear()
|
||||
super().setUp()
|
||||
self.as2 = {
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
'type': 'Note',
|
||||
|
@ -63,35 +58,35 @@ class RenderTest(testutil.TestCase):
|
|||
|
||||
def test_render_errors(self):
|
||||
for source, target in ('', ''), ('abc', ''), ('', 'xyz'):
|
||||
resp = client.get(f'/render?source={source}&target={target}')
|
||||
resp = self.client.get(f'/render?source={source}&target={target}')
|
||||
self.assertEqual(400, resp.status_code, resp.get_data(as_text=True))
|
||||
|
||||
# no Response
|
||||
resp = client.get('/render?source=abc&target=xyz')
|
||||
resp = self.client.get('/render?source=abc&target=xyz')
|
||||
self.assertEqual(404, resp.status_code)
|
||||
|
||||
# no source data
|
||||
Response(id='abc xyz').put()
|
||||
resp = client.get('/render?source=abc&target=xyz')
|
||||
resp = self.client.get('/render?source=abc&target=xyz')
|
||||
self.assertEqual(404, resp.status_code)
|
||||
|
||||
def test_render_as2(self):
|
||||
Response(id='abc xyz', source_as2=json_dumps(self.as2)).put()
|
||||
resp = client.get('/render?source=abc&target=xyz')
|
||||
resp = self.client.get('/render?source=abc&target=xyz')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.assert_multiline_equals(self.html, resp.get_data(as_text=True),
|
||||
ignore_blanks=True)
|
||||
|
||||
def test_render_mf2(self):
|
||||
Response(id='abc xyz', source_mf2=json_dumps(self.mf2)).put()
|
||||
resp = client.get('/render?source=abc&target=xyz')
|
||||
resp = self.client.get('/render?source=abc&target=xyz')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.assert_multiline_equals(self.html, resp.get_data(as_text=True),
|
||||
ignore_blanks=True)
|
||||
|
||||
def test_render_atom(self):
|
||||
Response(id='abc xyz', source_atom=self.atom).put()
|
||||
resp = client.get('/render?source=abc&target=xyz')
|
||||
resp = self.client.get('/render?source=abc&target=xyz')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.assert_multiline_equals(self.html, resp.get_data(as_text=True),
|
||||
ignore_blanks=True)
|
||||
|
|
|
@ -11,13 +11,10 @@ from django_salmon import magicsigs
|
|||
from oauth_dropins.webutil.testutil import requests_response, UrlopenResult
|
||||
import requests
|
||||
|
||||
from app import app
|
||||
import common
|
||||
from models import MagicKey, Response
|
||||
from . import testutil
|
||||
|
||||
client = app.test_client()
|
||||
|
||||
|
||||
@mock.patch('requests.post')
|
||||
@mock.patch('requests.get')
|
||||
|
@ -26,8 +23,7 @@ client = app.test_client()
|
|||
class SalmonTest(testutil.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(SalmonTest, self).setUp()
|
||||
app.testing = True
|
||||
super().setUp()
|
||||
self.key = MagicKey.get_or_create('alice')
|
||||
|
||||
def send_slap(self, mock_urlopen, mock_head, mock_get, mock_post, atom_slap):
|
||||
|
@ -54,7 +50,7 @@ class SalmonTest(testutil.TestCase):
|
|||
mock_post.return_value = requests_response()
|
||||
|
||||
slap = magicsigs.magic_envelope(atom_slap, common.CONTENT_TYPE_ATOM, self.key)
|
||||
got = client.post('/foo.com@foo.com/salmon', data=slap)
|
||||
got = self.client.post('/foo.com@foo.com/salmon', data=slap)
|
||||
self.assertEqual(200, got.status_code)
|
||||
|
||||
# check salmon magic key discovery
|
||||
|
@ -136,12 +132,12 @@ class SalmonTest(testutil.TestCase):
|
|||
self.assertEqual(atom_like, resp.source_atom)
|
||||
|
||||
def test_bad_envelope(self, *mocks):
|
||||
got = client.post('/foo.com/salmon', data='not xml')
|
||||
got = self.client.post('/foo.com/salmon', data='not xml')
|
||||
self.assertEqual(400, got.status_code)
|
||||
|
||||
def test_bad_inner_xml(self, *mocks):
|
||||
slap = magicsigs.magic_envelope('not xml', common.CONTENT_TYPE_ATOM, self.key)
|
||||
got = client.post('/foo.com/salmon', data=slap)
|
||||
got = self.client.post('/foo.com/salmon', data=slap)
|
||||
self.assertEqual(400, got.status_code)
|
||||
|
||||
def test_rsvp_not_supported(self, *mocks):
|
||||
|
@ -153,5 +149,5 @@ class SalmonTest(testutil.TestCase):
|
|||
<activity:verb>http://activitystrea.ms/schema/1.0/rsvp</activity:verb>
|
||||
<activity:object>http://orig/event</activity:object>
|
||||
</entry>""", common.CONTENT_TYPE_ATOM, self.key)
|
||||
got = client.post('/foo.com/salmon', data=slap)
|
||||
got = self.client.post('/foo.com/salmon', data=slap)
|
||||
self.assertEqual(501, got.status_code)
|
||||
|
|
|
@ -14,20 +14,15 @@ from oauth_dropins.webutil.testutil import requests_response
|
|||
from oauth_dropins.webutil.util import json_loads
|
||||
import requests
|
||||
|
||||
from app import app, cache
|
||||
import common
|
||||
import models
|
||||
from . import testutil
|
||||
|
||||
client = app.test_client()
|
||||
|
||||
|
||||
class WebfingerTest(testutil.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(WebfingerTest, self).setUp()
|
||||
app.testing = True
|
||||
cache.clear()
|
||||
super().setUp()
|
||||
|
||||
self.html = """
|
||||
<body class="h-card">
|
||||
|
@ -85,7 +80,7 @@ class WebfingerTest(testutil.TestCase):
|
|||
}
|
||||
|
||||
def test_host_meta_handler_xrd(self):
|
||||
got = client.get('/.well-known/host-meta')
|
||||
got = self.client.get('/.well-known/host-meta')
|
||||
self.assertEqual(200, got.status_code)
|
||||
self.assertEqual('application/xrd+xml; charset=utf-8',
|
||||
got.headers['Content-Type'])
|
||||
|
@ -93,14 +88,14 @@ class WebfingerTest(testutil.TestCase):
|
|||
self.assertTrue(body.startswith('<?xml'), body)
|
||||
|
||||
def test_host_meta_handler_xrds(self):
|
||||
got = client.get('/.well-known/host-meta.xrds')
|
||||
got = self.client.get('/.well-known/host-meta.xrds')
|
||||
self.assertEqual(200, got.status_code)
|
||||
self.assertEqual('application/xrds+xml', got.headers['Content-Type'])
|
||||
body = got.get_data(as_text=True)
|
||||
self.assertTrue(body.startswith('<XRDS'), body)
|
||||
|
||||
def test_host_meta_handler_jrd(self):
|
||||
got = client.get('/.well-known/host-meta.json')
|
||||
got = self.client.get('/.well-known/host-meta.json')
|
||||
self.assertEqual(200, got.status_code)
|
||||
self.assertEqual('application/jrd+json', got.headers['Content-Type'])
|
||||
body = got.get_data(as_text=True)
|
||||
|
@ -110,7 +105,7 @@ class WebfingerTest(testutil.TestCase):
|
|||
def test_user_handler(self, mock_get):
|
||||
mock_get.return_value = requests_response(self.html, url='https://foo.com/')
|
||||
|
||||
got = client.get('/acct:foo.com', headers={'Accept': 'application/json'})
|
||||
got = self.client.get('/acct:foo.com', headers={'Accept': 'application/json'})
|
||||
self.assertEqual(200, got.status_code)
|
||||
self.assertEqual('application/jrd+json', got.headers['Content-Type'])
|
||||
mock_get.assert_called_once_with('http://foo.com/', headers=common.HEADERS,
|
||||
|
@ -119,7 +114,7 @@ class WebfingerTest(testutil.TestCase):
|
|||
self.assertEqual(self.expected_webfinger, got.json)
|
||||
|
||||
# check that magic key is persistent
|
||||
again = client.get('/acct:foo.com',
|
||||
again = self.client.get('/acct:foo.com',
|
||||
headers={'Accept': 'application/json'}).json
|
||||
self.assertEqual(self.key.href(), again['magic_keys'][0]['value'])
|
||||
|
||||
|
@ -138,7 +133,7 @@ class WebfingerTest(testutil.TestCase):
|
|||
""" + self.html
|
||||
mock_get.return_value = requests_response(html, url = 'https://foo.com/')
|
||||
|
||||
got = client.get('/acct:foo.com', headers={'Accept': 'application/json'})
|
||||
got = self.client.get('/acct:foo.com', headers={'Accept': 'application/json'})
|
||||
self.assertEqual(200, got.status_code)
|
||||
self.assertIn({
|
||||
'rel': 'http://schemas.google.com/g/2010#updates-from',
|
||||
|
@ -155,7 +150,7 @@ class WebfingerTest(testutil.TestCase):
|
|||
'<http://a.custom.hub/>; rel="hub"',
|
||||
})
|
||||
|
||||
got = client.get('/acct:foo.com', headers={'Accept': 'application/json'})
|
||||
got = self.client.get('/acct:foo.com', headers={'Accept': 'application/json'})
|
||||
self.assertEqual(200, got.status_code)
|
||||
self.assertIn({
|
||||
'rel': 'hub',
|
||||
|
@ -171,14 +166,14 @@ class WebfingerTest(testutil.TestCase):
|
|||
</div>
|
||||
</body>
|
||||
""")
|
||||
got = client.get('/acct:foo.com')
|
||||
got = self.client.get('/acct:foo.com')
|
||||
mock_get.assert_called_once_with('http://foo.com/', headers=common.HEADERS,
|
||||
stream=True, timeout=util.HTTP_TIMEOUT)
|
||||
self.assertEqual(400, got.status_code)
|
||||
self.assertIn('representative h-card', got.get_data(as_text=True))
|
||||
|
||||
def test_user_handler_bad_tld(self):
|
||||
got = client.get('/acct:foo.json')
|
||||
got = self.client.get('/acct:foo.json')
|
||||
self.assertEqual(404, got.status_code)
|
||||
self.assertIn("doesn't look like a domain",
|
||||
html.unescape(got.get_data(as_text=True)))
|
||||
|
@ -191,7 +186,7 @@ class WebfingerTest(testutil.TestCase):
|
|||
'foo.com', 'http://foo.com/', 'https://foo.com/'):
|
||||
url = '/.well-known/webfinger?%s' % urllib.parse.urlencode(
|
||||
{'resource': resource})
|
||||
got = client.get(url, headers={'Accept': 'application/json'})
|
||||
got = self.client.get(url, headers={'Accept': 'application/json'})
|
||||
self.assertEqual(200, got.status_code, got.get_data(as_text=True))
|
||||
self.assertEqual('application/jrd+json', got.headers['Content-Type'])
|
||||
self.assertEqual(self.expected_webfinger, got.json)
|
||||
|
@ -234,7 +229,7 @@ class WebfingerTest(testutil.TestCase):
|
|||
):
|
||||
url = '/.well-known/webfinger?%s' % urllib.parse.urlencode(
|
||||
{'resource': resource})
|
||||
got = client.get(url, headers={'Accept': 'application/json'})
|
||||
got = self.client.get(url, headers={'Accept': 'application/json'})
|
||||
self.assertEqual(200, got.status_code, got.get_data(as_text=True))
|
||||
self.assertEqual('application/jrd+json', got.headers['Content-Type'])
|
||||
self.assertEqual(self.expected_webfinger, got.json)
|
||||
|
|
|
@ -17,7 +17,6 @@ from oauth_dropins.webutil.util import json_dumps, json_loads
|
|||
import requests
|
||||
|
||||
import activitypub
|
||||
from app import app
|
||||
from common import (
|
||||
AS2_PUBLIC_AUDIENCE,
|
||||
CONNEG_HEADERS_AS2,
|
||||
|
@ -64,16 +63,13 @@ REPOST_AS2 = {
|
|||
},
|
||||
}
|
||||
|
||||
client = app.test_client()
|
||||
|
||||
|
||||
@mock.patch('requests.post')
|
||||
@mock.patch('requests.get')
|
||||
class WebmentionTest(testutil.TestCase):
|
||||
def setUp(self):
|
||||
super(WebmentionTest, self).setUp()
|
||||
super().setUp()
|
||||
self.key = MagicKey.get_or_create('a')
|
||||
app.testing = True
|
||||
|
||||
self.orig_html_as2 = requests_response("""\
|
||||
<html>
|
||||
|
@ -279,11 +275,11 @@ class WebmentionTest(testutil.TestCase):
|
|||
return env['data']
|
||||
|
||||
def test_bad_source_url(self, mock_get, mock_post):
|
||||
got = client.post('/webmention', data=b'')
|
||||
got = self.client.post('/webmention', data=b'')
|
||||
self.assertEqual(400, got.status_code)
|
||||
|
||||
mock_get.side_effect = ValueError('foo bar')
|
||||
got = client.post('/webmention', data={'source': 'bad'})
|
||||
got = self.client.post('/webmention', data={'source': 'bad'})
|
||||
self.assertEqual(400, got.status_code)
|
||||
self.assertEqual(0, Response.query().count())
|
||||
|
||||
|
@ -295,7 +291,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
</body>
|
||||
</html>""", content_type=CONTENT_TYPE_HTML)
|
||||
|
||||
got = client.post( '/webmention', data={
|
||||
got = self.client.post( '/webmention', data={
|
||||
'source': 'http://a/post',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -312,7 +308,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
</body>
|
||||
</html>""", content_type=CONTENT_TYPE_HTML)
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/post',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -327,7 +323,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
content_type=CONTENT_TYPE_HTML),
|
||||
ValueError('foo bar'))
|
||||
|
||||
got = client.post('/webmention', data={'source': 'http://a/post'})
|
||||
got = self.client.post('/webmention', data={'source': 'http://a/post'})
|
||||
self.assertEqual(400, got.status_code)
|
||||
self.assertEqual(0, Response.query().count())
|
||||
|
||||
|
@ -337,7 +333,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
content_type=CONTENT_TYPE_HTML),
|
||||
requests.Timeout('foo bar'))
|
||||
|
||||
got = client.post('/webmention', data={'source': 'http://a/post'})
|
||||
got = self.client.post('/webmention', data={'source': 'http://a/post'})
|
||||
self.assertEqual(502, got.status_code)
|
||||
|
||||
def test_target_fetch_has_no_content_type(self, mock_get, mock_post):
|
||||
|
@ -349,7 +345,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
# http://not/fediverse
|
||||
requests_response(self.reply_html, content_type='None'),
|
||||
)
|
||||
got = client.post('/webmention', data={'source': 'http://a/post'})
|
||||
got = self.client.post('/webmention', data={'source': 'http://a/post'})
|
||||
self.assertEqual(502, got.status_code)
|
||||
self.assertEqual(0, Response.query().count())
|
||||
|
||||
|
@ -358,7 +354,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
self.reply_html.replace('<a href="http://localhost/"></a>', ''),
|
||||
content_type=CONTENT_TYPE_HTML)
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/post',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -371,7 +367,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = self.activitypub_gets
|
||||
mock_post.return_value = requests_response('abc xyz', status=203)
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/reply',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -412,7 +408,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = self.activitypub_gets
|
||||
mock_post.return_value = requests_response('abc xyz')
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/reply',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -439,7 +435,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
self.actor]
|
||||
mock_post.return_value = requests_response('abc xyz', status=203)
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/reply',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -462,7 +458,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = self.activitypub_gets
|
||||
mock_post.return_value = requests_response('abc xyz')
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/reply',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -476,7 +472,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = [self.repost, self.orig_as2, self.actor]
|
||||
mock_post.return_value = requests_response('abc xyz')
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/repost',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -509,7 +505,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
self.orig_html_as2, self.orig_as2, self.actor]
|
||||
mock_post.return_value = requests_response('abc xyz')
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/reply',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -541,7 +537,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = [missing_url, self.orig_as2, self.actor]
|
||||
mock_post.return_value = requests_response('abc xyz', status=203)
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/repost',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -576,7 +572,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = [repost, author, self.orig_as2, self.actor]
|
||||
mock_post.return_value = requests_response('abc xyz', status=201)
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/repost',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -621,7 +617,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
'inbox': 'https://inbox',
|
||||
}}))
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://orig/post',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -657,7 +653,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
'orig', 'https://mastodon/aaa',
|
||||
last_follow=json_dumps({'actor': {'inbox': 'https://inbox'}}))
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://orig/post',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -675,7 +671,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = [self.follow, self.actor]
|
||||
mock_post.return_value = requests_response('abc xyz')
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/follow',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -707,7 +703,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_post.return_value = requests_response(
|
||||
'abc xyz', status=405, url='https://foo.com/inbox')
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/follow',
|
||||
'target': 'https://fed.brid.gy/',
|
||||
})
|
||||
|
@ -742,7 +738,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = [self.reply, self.not_fediverse,
|
||||
self.orig_html_atom, self.orig_atom]
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/reply',
|
||||
'target': 'http://orig/post',
|
||||
})
|
||||
|
@ -785,7 +781,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
def test_salmon_like(self, mock_get, mock_post):
|
||||
mock_get.side_effect = [self.like, self.orig_html_atom, self.orig_atom]
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/like',
|
||||
'target': 'http://orig/post',
|
||||
})
|
||||
|
@ -836,7 +832,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = [self.reply, self.not_fediverse,
|
||||
self.orig_html_atom, orig_atom, webfinger]
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/reply',
|
||||
'target': 'http://orig/post',
|
||||
})
|
||||
|
@ -854,7 +850,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
</html>""", 'http://orig/url')
|
||||
mock_get.side_effect = [self.reply, self.not_fediverse, orig_no_atom]
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/reply',
|
||||
'target': 'http://orig/post',
|
||||
})
|
||||
|
@ -877,7 +873,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = [self.reply, self.not_fediverse, orig_relative,
|
||||
self.orig_atom]
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/reply',
|
||||
'target': 'http://orig/post',
|
||||
})
|
||||
|
@ -898,7 +894,7 @@ class WebmentionTest(testutil.TestCase):
|
|||
mock_get.side_effect = [self.reply, self.not_fediverse, orig_base,
|
||||
self.orig_atom]
|
||||
|
||||
got = client.post('/webmention', data={
|
||||
got = self.client.post('/webmention', data={
|
||||
'source': 'http://a/reply',
|
||||
'target': 'http://orig/post',
|
||||
})
|
||||
|
|
|
@ -4,6 +4,7 @@ import copy
|
|||
import unittest
|
||||
from unittest.mock import ANY, call
|
||||
|
||||
from app import app, cache
|
||||
from oauth_dropins.webutil import testutil, util
|
||||
from oauth_dropins.webutil.appengine_config import ndb_client
|
||||
import requests
|
||||
|
@ -16,6 +17,9 @@ class TestCase(unittest.TestCase, testutil.Asserts):
|
|||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
app.testing = True
|
||||
cache.clear()
|
||||
self.client = app.test_client()
|
||||
|
||||
# clear datastore
|
||||
requests.post('http://%s/reset' % ndb_client.host)
|
||||
|
|
Ładowanie…
Reference in New Issue