from __future__ import unicode_literals import datetime from botocore.exceptions import ClientError import boto3 import sure # noqa from moto import mock_athena @mock_athena def test_create_work_group(): client = boto3.client('athena', region_name='us-east-1') response = client.create_work_group( Name='athena_workgroup', Description='Test work group', Configuration={ 'ResultConfiguration': { 'OutputLocation': 's3://bucket-name/prefix/', 'EncryptionConfiguration': { 'EncryptionOption': 'SSE_KMS', 'KmsKey': 'aws:arn:kms:1233456789:us-east-1:key/number-1', }, }, }, Tags=[], ) try: # The second time should throw an error response = client.create_work_group( Name='athena_workgroup', Description='duplicate', Configuration={ 'ResultConfiguration': { 'OutputLocation': 's3://bucket-name/prefix/', 'EncryptionConfiguration': { 'EncryptionOption': 'SSE_KMS', 'KmsKey': 'aws:arn:kms:1233456789:us-east-1:key/number-1', }, }, }, ) except ClientError as err: err.response['Error']['Code'].should.equal('InvalidRequestException') err.response['Error']['Message'].should.equal('WorkGroup already exists') else: raise RuntimeError('Should have raised ResourceNotFoundException') # Then test the work group appears in the work group list response = client.list_work_groups() response['WorkGroups'].should.have.length_of(1) work_group = response['WorkGroups'][0] work_group['Name'].should.equal('athena_workgroup') work_group['Description'].should.equal('Test work group') work_group['State'].should.equal('ENABLED')