2017-08-24 06:24:47 +00:00
|
|
|
"""Common test utility code.
|
|
|
|
"""
|
2017-10-20 14:13:04 +00:00
|
|
|
import copy
|
2022-11-24 16:20:04 +00:00
|
|
|
import datetime
|
2017-08-24 06:24:47 +00:00
|
|
|
import unittest
|
2019-12-26 06:20:57 +00:00
|
|
|
from unittest.mock import ANY, call
|
2017-08-24 06:24:47 +00:00
|
|
|
|
2021-08-18 14:59:52 +00:00
|
|
|
from app import app, cache
|
2017-10-20 14:13:04 +00:00
|
|
|
from oauth_dropins.webutil import testutil, util
|
2019-12-26 06:20:57 +00:00
|
|
|
from oauth_dropins.webutil.appengine_config import ndb_client
|
|
|
|
import requests
|
2017-08-24 06:24:47 +00:00
|
|
|
|
2017-10-20 14:13:04 +00:00
|
|
|
import common
|
2017-08-24 06:24:47 +00:00
|
|
|
|
2022-11-24 16:20:04 +00:00
|
|
|
NOW = datetime.datetime(2022, 11, 23, 22, 29, 19)
|
|
|
|
|
2017-10-10 14:42:10 +00:00
|
|
|
|
|
|
|
class TestCase(unittest.TestCase, testutil.Asserts):
|
2017-08-24 06:24:47 +00:00
|
|
|
maxDiff = None
|
|
|
|
|
|
|
|
def setUp(self):
|
2021-07-11 23:30:14 +00:00
|
|
|
super().setUp()
|
2021-08-18 14:59:52 +00:00
|
|
|
app.testing = True
|
|
|
|
cache.clear()
|
|
|
|
self.client = app.test_client()
|
2022-11-24 16:20:04 +00:00
|
|
|
common.utcnow = lambda: NOW
|
2019-12-26 06:20:57 +00:00
|
|
|
|
|
|
|
# clear datastore
|
|
|
|
requests.post('http://%s/reset' % ndb_client.host)
|
|
|
|
self.ndb_context = ndb_client.context()
|
|
|
|
self.ndb_context.__enter__()
|
2017-08-24 06:24:47 +00:00
|
|
|
|
|
|
|
def tearDown(self):
|
2019-12-26 06:20:57 +00:00
|
|
|
self.ndb_context.__exit__(None, None, None)
|
2021-07-11 23:30:14 +00:00
|
|
|
super().tearDown()
|
2017-10-20 14:13:04 +00:00
|
|
|
|
|
|
|
def req(self, url, **kwargs):
|
|
|
|
"""Returns a mock requests call."""
|
2022-11-24 16:20:04 +00:00
|
|
|
kwargs.setdefault('headers', {}).update({
|
|
|
|
'User-Agent': util.user_agent,
|
|
|
|
})
|
2017-10-20 14:13:04 +00:00
|
|
|
kwargs.setdefault('timeout', util.HTTP_TIMEOUT)
|
2019-10-04 04:08:26 +00:00
|
|
|
kwargs.setdefault('stream', True)
|
2017-10-20 14:13:04 +00:00
|
|
|
return call(url, **kwargs)
|
2022-03-17 04:11:09 +00:00
|
|
|
|
2022-11-24 16:20:04 +00:00
|
|
|
def as2_req(self, url, **kwargs):
|
2022-11-24 17:39:01 +00:00
|
|
|
# TODO: these aren't currently getting checked?!
|
2022-11-24 16:20:04 +00:00
|
|
|
headers = {
|
|
|
|
'Date': 'Wed, 23 Nov 2022 22:29:19 GMT',
|
|
|
|
'Host': util.domain_from_link(url, minimize=False),
|
2022-11-24 17:39:01 +00:00
|
|
|
'Content-Type': 'application/activity+json',
|
|
|
|
'Digest': ANY,
|
2022-11-24 16:20:04 +00:00
|
|
|
**common.CONNEG_HEADERS_AS2_HTML,
|
|
|
|
**kwargs.pop('headers', {}),
|
|
|
|
}
|
|
|
|
return self.req(url, auth=ANY, headers=headers, **kwargs)
|
|
|
|
|
2022-03-17 04:11:09 +00:00
|
|
|
def assert_req(self, mock, url, **kwargs):
|
|
|
|
"""Checks a mock requests call."""
|
2022-11-24 17:39:01 +00:00
|
|
|
kwargs.setdefault('headers', {}).setdefault(
|
|
|
|
'User-Agent', 'Bridgy Fed (https://fed.brid.gy/)')
|
2022-03-17 04:11:09 +00:00
|
|
|
kwargs.setdefault('stream', True)
|
|
|
|
kwargs.setdefault('timeout', util.HTTP_TIMEOUT)
|
|
|
|
mock.assert_any_call(url, **kwargs)
|