64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
"""
|
|
Ensure that the responses module plays nice with our mocks
|
|
"""
|
|
|
|
import boto3
|
|
import requests
|
|
import responses
|
|
from moto import mock_s3, settings
|
|
from unittest import SkipTest, TestCase
|
|
|
|
|
|
class TestResponsesModule(TestCase):
|
|
def setUp(self):
|
|
if settings.TEST_SERVER_MODE:
|
|
raise SkipTest("No point in testing responses-decorator in ServerMode")
|
|
|
|
@mock_s3
|
|
@responses.activate
|
|
def test_moto_first(self):
|
|
|
|
"""
|
|
Verify we can activate a user-defined `responses` on top of our Moto mocks
|
|
"""
|
|
self.moto_responses_compatibility()
|
|
|
|
@responses.activate
|
|
@mock_s3
|
|
def test_moto_second(self):
|
|
"""
|
|
Verify we can load Moto after activating a `responses`-mock
|
|
"""
|
|
self.moto_responses_compatibility()
|
|
|
|
def moto_responses_compatibility(self):
|
|
responses.add(
|
|
responses.GET, url="http://127.0.0.1/lkdsfjlkdsa", json={"a": "4"},
|
|
)
|
|
s3 = boto3.client("s3")
|
|
s3.create_bucket(Bucket="mybucket")
|
|
s3.put_object(Bucket="mybucket", Key="name", Body="value")
|
|
s3.get_object(Bucket="mybucket", Key="name")["Body"].read()
|
|
with requests.get("http://127.0.0.1/lkdsfjlkdsa",) as r:
|
|
assert r.json() == {"a": "4"}
|
|
|
|
@responses.activate
|
|
def test_moto_as_late_as_possible(self):
|
|
"""
|
|
Verify we can load moto after registering a response
|
|
"""
|
|
responses.add(
|
|
responses.GET, url="http://127.0.0.1/lkdsfjlkdsa", json={"a": "4"},
|
|
)
|
|
with mock_s3():
|
|
s3 = boto3.client("s3")
|
|
s3.create_bucket(Bucket="mybucket")
|
|
s3.put_object(Bucket="mybucket", Key="name", Body="value")
|
|
# This mock exists within Moto
|
|
with requests.get("http://127.0.0.1/lkdsfjlkdsa",) as r:
|
|
assert r.json() == {"a": "4"}
|
|
|
|
# And outside of Moto
|
|
with requests.get("http://127.0.0.1/lkdsfjlkdsa",) as r:
|
|
assert r.json() == {"a": "4"}
|