|
1 |
| -from typing import Iterable |
| 1 | +from typing import Callable, Iterable |
2 | 2 |
|
3 | 3 | import boto3
|
4 | 4 | import pytest
|
5 | 5 | from botocore.exceptions import ClientError
|
6 | 6 |
|
7 |
| -from moto import mock_aws |
| 7 | +from moto import mock_aws, settings |
8 | 8 | from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
|
9 | 9 | from moto.moto_api._internal import mock_random
|
10 | 10 | from moto.moto_server.threaded_moto_server import ThreadedMotoServer
|
|
14 | 14 |
|
15 | 15 |
|
16 | 16 | @pytest.fixture
|
17 |
| -def moto_server() -> Iterable[str]: |
| 17 | +def moto_server() -> Iterable[Callable[[], str]]: |
| 18 | + servers = [] |
18 | 19 | """Fixture to run a mocked AWS server for testing."""
|
| 20 | + |
19 | 21 | # Note: pass `port=0` to get a random free port.
|
20 |
| - server = ThreadedMotoServer(port=0) |
21 |
| - server.start() |
22 |
| - host, port = server.get_host_and_port() |
23 |
| - yield f"http://{host}:{port}" |
24 |
| - server.stop() |
| 22 | + def _start_server() -> str: |
| 23 | + threaded_server = ThreadedMotoServer(port=0) |
| 24 | + threaded_server.start() |
| 25 | + host, port = threaded_server.get_host_and_port() |
| 26 | + servers.append(threaded_server) |
| 27 | + return f"http://{host}:{port}" |
| 28 | + |
| 29 | + yield _start_server |
| 30 | + |
| 31 | + for server in servers: |
| 32 | + server.stop() |
25 | 33 |
|
26 | 34 |
|
27 | 35 | def create_hosted_zone_id(route53_client, hosted_zone_test_name):
|
@@ -121,10 +129,16 @@ def test_create_query_logging_config_bad_args():
|
121 | 129 | @pytest.mark.parametrize("route53_region", ["us-west-1", TEST_REGION])
|
122 | 130 | def test_create_query_logging_config_good_args(moto_server, route53_region): # pylint: disable=redefined-outer-name
|
123 | 131 | """Test a valid create_logging_config() request."""
|
| 132 | + endpoint_url = None |
| 133 | + if route53_region != TEST_REGION: |
| 134 | + if settings.TEST_SERVER_MODE: |
| 135 | + pytest.skip("Can't start a new server in server mode") |
| 136 | + endpoint_url = moto_server() |
| 137 | + |
124 | 138 | client = boto3.client(
|
125 | 139 | "route53",
|
126 | 140 | region_name=route53_region,
|
127 |
| - endpoint_url=moto_server if route53_region != TEST_REGION else None, |
| 141 | + endpoint_url=endpoint_url, |
128 | 142 | )
|
129 | 143 | logs_client = boto3.client("logs", region_name=TEST_REGION)
|
130 | 144 |
|
|
0 commit comments