new_contents: # Copyright 2020 ScyllaDB
  #
  # This file is part of Scylla.
  #
  # Scylla is free software: you can redistribute it and/or modify
  # it under the terms of the GNU Affero General Public License as published by
  # the Free Software Foundation, either version 3 of the License, or
  # (at your option) any later version.
  #
  # Scylla is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
  #
  # You should have received a copy of the GNU Affero General Public License
  # along with Scylla.  If not, see <http://www.gnu.org/licenses/>.
  
  # Tests for accessing alternator-only system tables (from Scylla).
  
  import pytest
  from botocore.exceptions import ClientError
  from boto3.dynamodb.conditions import Key
  
  internal_prefix = '.scylla.alternator.'
  
  # Test that fetching key columns from system tables works
  def test_fetch_from_system_tables(scylla_only, dynamodb):
      client = dynamodb.meta.client
      tables_response = client.scan(TableName=internal_prefix+'system_schema.tables',
              AttributesToGet=['keyspace_name','table_name'])
  
      for item in tables_response['Items']:
          ks_name = item['keyspace_name']
          table_name = item['table_name']
  
          if not 'system' in ks_name:
              continue
  
          col_response = client.query(TableName=internal_prefix+'system_schema.columns',
                  KeyConditionExpression=Key('keyspace_name').eq(ks_name) & Key('table_name').eq(table_name))
  
          key_columns = [item['column_name'] for item in col_response['Items'] if item['kind'] == 'clustering' or item['kind'] == 'partition_key']
          qualified_name = "{}{}.{}".format(internal_prefix, ks_name, table_name)
          response = client.scan(TableName=qualified_name, AttributesToGet=key_columns)
          print(ks_name, table_name, response)
  
  def test_block_access_to_non_system_tables_with_virtual_interface(scylla_only, test_table_s, dynamodb):
      client = dynamodb.meta.client
      with pytest.raises(ClientError, match='ResourceNotFoundException.*{}'.format(internal_prefix)):
          tables_response = client.scan(TableName="{}alternator_{}.{}".format(internal_prefix, test_table_s.name, test_table_s.name))
  
  def test_block_creating_tables_with_reserved_prefix(scylla_only, dynamodb):
      client = dynamodb.meta.client
      for wrong_name_postfix in ['', 'a', 'xxx', 'system_auth.roles', 'table_name']:
          with pytest.raises(ClientError, match=internal_prefix):
              dynamodb.create_table(TableName=internal_prefix+wrong_name_postfix,
                      BillingMode='PAY_PER_REQUEST',
                      KeySchema=[{'AttributeName':'p', 'KeyType':'HASH'}],
                      AttributeDefinitions=[{'AttributeName':'p', 'AttributeType': 'S'}]
              )
  
  
subject: add scylla-only test for querying system tables