tahoe-lafs/src/allmydata/test/test_testing.py

77 lines
1.7 KiB
Python
Raw Normal View History

2020-06-13 04:04:03 +00:00
# -*- coding: utf-8 -*-
# Tahoe-LAFS -- secure, distributed storage grid
#
# Copyright © 2020 The Tahoe-LAFS Software Foundation
#
# This file is part of Tahoe-LAFS.
#
# See the docs/about.rst file for licensing information.
"""
Tests for the allmydata.testing helpers
"""
2020-06-11 20:14:42 +00:00
from twisted.internet.defer import (
inlineCallbacks,
)
from allmydata.testing.web import (
create_tahoe_treq_client,
)
from hypothesis import (
given,
)
from hypothesis.strategies import (
binary,
)
from testtools import (
TestCase,
)
from testtools.matchers import (
Always,
)
from testtools.twistedsupport import (
succeeded,
)
2020-06-11 20:14:42 +00:00
class FakeWebTest(TestCase):
"""
Test the WebUI verified-fakes infrastucture
"""
def setUp(self):
super(FakeWebTest, self).setUp()
self.http_client = create_tahoe_treq_client()
@given(
content=binary(),
)
def test_create_and_download(self, content):
2020-06-11 20:14:42 +00:00
"""
Upload some content (via 'PUT /uri') and then download it (via
'GET /uri?uri=...')
2020-06-11 20:14:42 +00:00
"""
@inlineCallbacks
def do_test():
resp = yield self.http_client.put("http://example.com/uri", content)
2020-06-13 04:08:36 +00:00
self.assertEqual(resp.code, 201)
2020-06-11 20:14:42 +00:00
cap = yield resp.content()
self.assertTrue(cap.startswith("URI:CHK:"))
2020-06-11 20:14:42 +00:00
resp = yield self.http_client.get(
"http://example.com/uri?uri={}".format(cap)
)
self.assertEqual(resp.code, 200)
round_trip_content = yield resp.content()
self.assertEqual(content, round_trip_content)
self.assertThat(
do_test(),
succeeded(Always()),
)