text: # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
  #
  # Licensed under the Apache License, Version 2.0 (the "License"). You
  # may not use this file except in compliance with the License. A copy of
  # the License is located at
  #
  # http://aws.amazon.com/apache2.0/
  #
  # or in the "license" file accompanying this file. This file is
  # 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.
  """Functional tests for ``dynamodb_encryption_sdk.material_providers.store.meta``."""
  import pytest
  
  from dynamodb_encryption_sdk.exceptions import NoKnownVersionError
  from dynamodb_encryption_sdk.material_providers.store.meta import MetaStore, MetaStoreAttributeNames
  from dynamodb_encryption_sdk.material_providers.wrapped import WrappedCryptographicMaterialsProvider
  
  from ...functional_test_utils import mock_metastore  # noqa=F401 pylint: disable=unused-import
  
  pytestmark = [pytest.mark.functional, pytest.mark.local]
  
  
  def test_create_table(mock_metastore):
      # type: (MetaStore) -> None
      assert mock_metastore._table.key_schema == [
          {"AttributeName": MetaStoreAttributeNames.PARTITION.value, "KeyType": "HASH"},
          {"AttributeName": MetaStoreAttributeNames.SORT.value, "KeyType": "RANGE"},
      ]
      assert mock_metastore._table.attribute_definitions == [
          {"AttributeName": MetaStoreAttributeNames.PARTITION.value, "AttributeType": "S"},
          {"AttributeName": MetaStoreAttributeNames.SORT.value, "AttributeType": "N"},
      ]
  
  
  def test_max_version_empty(mock_metastore):
      # type: (MetaStore) -> None
      with pytest.raises(NoKnownVersionError) as excinfo:
          mock_metastore.max_version("example_name")
  
      excinfo.match(r"No known version for name: ")
  
  
  def test_max_version_exists(mock_metastore):
      # type: (MetaStore) -> None
      mock_metastore.get_or_create_provider("example_name", 2)
      mock_metastore.get_or_create_provider("example_name", 5)
  
      test = mock_metastore.max_version("example_name")
  
      assert test == 5
  
  
  @pytest.mark.xfail(strict=True)
  def test_version_from_material_description():
      assert False
  
  
  def test_provider(mock_metastore):
      # type: (MetaStore) -> None
      test = mock_metastore.provider("example_name")
  
      assert isinstance(test, WrappedCryptographicMaterialsProvider)
  