Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added tests for new endpoints 2.0 files #2747

Closed
wants to merge 7 commits into from
54 changes: 48 additions & 6 deletions tests/functional/test_model_completeness.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,20 @@
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
# ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.
import json
import os
import pytest

from botocore.exceptions import DataNotFoundError
from botocore.loaders import Loader
from botocore.session import Session

LOADER = Loader()
AVAILABLE_SERVICES = LOADER.list_available_services(type_name='service-2')


def _paginators_and_waiters_test_cases():
for service_name in Session().get_available_services():
versions = Loader().list_api_versions(service_name, 'service-2')
for service_name in AVAILABLE_SERVICES:
versions = LOADER.list_api_versions(service_name, 'service-2')
if len(versions) > 1:
for type_name in ['paginators-1', 'waiters-2']:
yield service_name, type_name, versions[-2], versions[-1]
Expand All @@ -34,15 +38,53 @@ def test_paginators_and_waiters_are_not_lost_in_new_version(
):
# Make sure if a paginator and/or waiter exists in previous version,
# there will be a successor existing in latest version.
loader = Loader()
try:
loader.load_service_model(service_name, type_name, previous_version)
LOADER.load_service_model(service_name, type_name, previous_version)
except DataNotFoundError:
pass
else:
try:
loader.load_service_model(service_name, type_name, latest_version)
LOADER.load_service_model(service_name, type_name, latest_version)
except DataNotFoundError as e:
raise AssertionError(
f"{type_name} must exist for {service_name}: {e}"
)


def _endpoint_rule_set_cases():
for service_name in AVAILABLE_SERVICES:
versions = LOADER.list_api_versions(service_name, 'service-2')
for version in versions:
yield service_name, version


@pytest.mark.parametrize(
"service_name, version",
dlm6693 marked this conversation as resolved.
Show resolved Hide resolved
_endpoint_rule_set_cases(),
)
def test_all_endpoint_rule_sets_exist(service_name, version):
"""Tests the existence of endpoint-rule-set.json for each service
and verifies that content is present."""
type_name = 'endpoint-rule-set'
jonathan343 marked this conversation as resolved.
Show resolved Hide resolved
data = LOADER.load_service_model(service_name, type_name, version)
assert len(data['rules']) >= 1


test_data_dir = os.path.join(os.path.dirname(__file__), "endpoint-rules")
jonathan343 marked this conversation as resolved.
Show resolved Hide resolved


@pytest.mark.parametrize("service_name", AVAILABLE_SERVICES)
def test_all_endpoint_tests_exist(service_name):
"""Tests the existence of endpoint-tests.json for each service
and verifies that content is present."""
file_name = 'endpoint-tests.json'
endpoint_tests_file = os.path.join(test_data_dir, service_name, file_name)
with open(endpoint_tests_file) as f:
data = json.load(f)
assert len(data['testCases']) >= 1
jonathan343 marked this conversation as resolved.
Show resolved Hide resolved


def test_partitions_exists():
"""Tests the existence of partitions.json and verifies that content is present."""
data = LOADER.load_data('partitions')
assert len(data['partitions']) >= 4
dlm6693 marked this conversation as resolved.
Show resolved Hide resolved