69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import boto3
							 | 
						||
| 
								 | 
							
								import pytest
							 | 
						||
| 
								 | 
							
								import sure  # noqa # pylint: disable=unused-import
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from botocore.exceptions import ClientError
							 | 
						||
| 
								 | 
							
								from moto import mock_sdb
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_sdb
							 | 
						||
| 
								 | 
							
								@pytest.mark.parametrize("name", ["", "a", "a#", "aaa#", "as@asdff", "asf'qwer"])
							 | 
						||
| 
								 | 
							
								def test_create_domain_invalid(name):
							 | 
						||
| 
								 | 
							
								    # Error handling is always the same
							 | 
						||
| 
								 | 
							
								    sdb = boto3.client("sdb", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    with pytest.raises(ClientError) as exc:
							 | 
						||
| 
								 | 
							
								        sdb.create_domain(DomainName=name)
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("InvalidParameterValue")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal(f"Value ({name}) for parameter DomainName is invalid. ")
							 | 
						||
| 
								 | 
							
								    err.should.have.key("BoxUsage")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_sdb
							 | 
						||
| 
								 | 
							
								@pytest.mark.parametrize(
							 | 
						||
| 
								 | 
							
								    "name", ["abc", "ABc", "a00", "as-df", "jk_kl", "qw.rt", "asfljaejadslfsl"]
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								def test_create_domain_valid(name):
							 | 
						||
| 
								 | 
							
								    # a-z, A-Z, 0-9, '_', '-', and '.'
							 | 
						||
| 
								 | 
							
								    sdb = boto3.client("sdb", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    sdb.create_domain(DomainName=name)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_sdb
							 | 
						||
| 
								 | 
							
								def test_create_domain_and_list():
							 | 
						||
| 
								 | 
							
								    sdb = boto3.client("sdb", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    sdb.create_domain(DomainName="mydomain")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    all_domains = sdb.list_domains()["DomainNames"]
							 | 
						||
| 
								 | 
							
								    all_domains.should.equal(["mydomain"])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_sdb
							 | 
						||
| 
								 | 
							
								def test_delete_domain():
							 | 
						||
| 
								 | 
							
								    sdb = boto3.client("sdb", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    sdb.create_domain(DomainName="mydomain")
							 | 
						||
| 
								 | 
							
								    sdb.delete_domain(DomainName="mydomain")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    all_domains = sdb.list_domains()
							 | 
						||
| 
								 | 
							
								    all_domains.shouldnt.have.key("DomainNames")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_sdb
							 | 
						||
| 
								 | 
							
								def test_delete_domain_unknown():
							 | 
						||
| 
								 | 
							
								    sdb = boto3.client("sdb", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    sdb.delete_domain(DomainName="unknown")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    all_domains = sdb.list_domains()
							 | 
						||
| 
								 | 
							
								    all_domains.shouldnt.have.key("DomainNames")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_sdb
							 | 
						||
| 
								 | 
							
								def test_delete_domain_invalid():
							 | 
						||
| 
								 | 
							
								    sdb = boto3.client("sdb", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    with pytest.raises(ClientError) as exc:
							 | 
						||
| 
								 | 
							
								        sdb.delete_domain(DomainName="a")
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("InvalidParameterValue")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal(f"Value (a) for parameter DomainName is invalid. ")
							 | 
						||
| 
								 | 
							
								    err.should.have.key("BoxUsage")
							 |