168 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			168 lines
		
	
	
		
			5.3 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 | ||
|  | def test_put_attributes_unknown_domain(): | ||
|  |     sdb = boto3.client("sdb", region_name="eu-west-1") | ||
|  |     with pytest.raises(ClientError) as exc: | ||
|  |         sdb.put_attributes( | ||
|  |             DomainName="aaaa", ItemName="asdf", Attributes=[{"Name": "a", "Value": "b"}] | ||
|  |         ) | ||
|  |     err = exc.value.response["Error"] | ||
|  |     err["Code"].should.equal("NoSuchDomain") | ||
|  |     err["Message"].should.equal("The specified domain does not exist.") | ||
|  |     err.should.have.key("BoxUsage") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_sdb | ||
|  | def test_put_attributes_invalid_domain(): | ||
|  |     sdb = boto3.client("sdb", region_name="eu-west-1") | ||
|  |     with pytest.raises(ClientError) as exc: | ||
|  |         sdb.put_attributes( | ||
|  |             DomainName="a", ItemName="asdf", Attributes=[{"Name": "a", "Value": "b"}] | ||
|  |         ) | ||
|  |     err = exc.value.response["Error"] | ||
|  |     err["Code"].should.equal("InvalidParameterValue") | ||
|  |     err["Message"].should.equal("Value (a) for parameter DomainName is invalid. ") | ||
|  |     err.should.have.key("BoxUsage") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_sdb | ||
|  | def test_get_attributes_unknown_domain(): | ||
|  |     sdb = boto3.client("sdb", region_name="eu-west-1") | ||
|  |     with pytest.raises(ClientError) as exc: | ||
|  |         sdb.get_attributes(DomainName="aaaa", ItemName="asdf") | ||
|  |     err = exc.value.response["Error"] | ||
|  |     err["Code"].should.equal("NoSuchDomain") | ||
|  |     err["Message"].should.equal("The specified domain does not exist.") | ||
|  |     err.should.have.key("BoxUsage") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_sdb | ||
|  | def test_get_attributes_invalid_domain(): | ||
|  |     sdb = boto3.client("sdb", region_name="eu-west-1") | ||
|  |     with pytest.raises(ClientError) as exc: | ||
|  |         sdb.get_attributes(DomainName="a", ItemName="asdf") | ||
|  |     err = exc.value.response["Error"] | ||
|  |     err["Code"].should.equal("InvalidParameterValue") | ||
|  |     err["Message"].should.equal("Value (a) for parameter DomainName is invalid. ") | ||
|  |     err.should.have.key("BoxUsage") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_sdb | ||
|  | def test_put_and_get_attributes(): | ||
|  |     name = "mydomain" | ||
|  |     sdb = boto3.client("sdb", region_name="eu-west-1") | ||
|  |     sdb.create_domain(DomainName=name) | ||
|  | 
 | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, ItemName="asdf", Attributes=[{"Name": "a", "Value": "b"}] | ||
|  |     ) | ||
|  | 
 | ||
|  |     attrs = sdb.get_attributes(DomainName=name, ItemName="asdf")["Attributes"] | ||
|  |     attrs.should.equal([{"Name": "a", "Value": "b"}]) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_sdb | ||
|  | def test_put_multiple_and_get_attributes(): | ||
|  |     name = "mydomain" | ||
|  |     sdb = boto3.client("sdb", region_name="eu-west-1") | ||
|  |     sdb.create_domain(DomainName=name) | ||
|  | 
 | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, ItemName="asdf", Attributes=[{"Name": "a", "Value": "b"}] | ||
|  |     ) | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, ItemName="jklp", Attributes=[{"Name": "a", "Value": "val"}] | ||
|  |     ) | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, ItemName="asdf", Attributes=[{"Name": "a", "Value": "c"}] | ||
|  |     ) | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, ItemName="asdf", Attributes=[{"Name": "d", "Value": "e"}] | ||
|  |     ) | ||
|  | 
 | ||
|  |     attrs = sdb.get_attributes(DomainName=name, ItemName="asdf")["Attributes"] | ||
|  |     attrs.should.equal( | ||
|  |         [ | ||
|  |             {"Name": "a", "Value": "b"}, | ||
|  |             {"Name": "a", "Value": "c"}, | ||
|  |             {"Name": "d", "Value": "e"}, | ||
|  |         ] | ||
|  |     ) | ||
|  | 
 | ||
|  |     attrs = sdb.get_attributes(DomainName=name, ItemName="jklp")["Attributes"] | ||
|  |     attrs.should.equal([{"Name": "a", "Value": "val"}]) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_sdb | ||
|  | def test_put_replace_and_get_attributes(): | ||
|  |     name = "mydomain" | ||
|  |     sdb = boto3.client("sdb", region_name="eu-west-1") | ||
|  |     sdb.create_domain(DomainName=name) | ||
|  | 
 | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, ItemName="asdf", Attributes=[{"Name": "a", "Value": "b"}] | ||
|  |     ) | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, ItemName="asdf", Attributes=[{"Name": "a", "Value": "c"}] | ||
|  |     ) | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, ItemName="asdf", Attributes=[{"Name": "d", "Value": "e"}] | ||
|  |     ) | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, | ||
|  |         ItemName="asdf", | ||
|  |         Attributes=[ | ||
|  |             {"Name": "a", "Value": "f", "Replace": True}, | ||
|  |             {"Name": "d", "Value": "g"}, | ||
|  |         ], | ||
|  |     ) | ||
|  | 
 | ||
|  |     attrs = sdb.get_attributes(DomainName=name, ItemName="asdf")["Attributes"] | ||
|  |     attrs.should.have.length_of(3) | ||
|  |     attrs.should.contain({"Name": "a", "Value": "f"}) | ||
|  |     attrs.should.contain({"Name": "d", "Value": "e"}) | ||
|  |     attrs.should.contain({"Name": "d", "Value": "g"}) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_sdb | ||
|  | def test_put_and_get_multiple_attributes(): | ||
|  |     name = "mydomain" | ||
|  |     sdb = boto3.client("sdb", region_name="eu-west-1") | ||
|  |     sdb.create_domain(DomainName=name) | ||
|  | 
 | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, | ||
|  |         ItemName="asdf", | ||
|  |         Attributes=[{"Name": "a", "Value": "b"}, {"Name": "attr2", "Value": "myvalue"}], | ||
|  |     ) | ||
|  | 
 | ||
|  |     attrs = sdb.get_attributes(DomainName=name, ItemName="asdf")["Attributes"] | ||
|  |     attrs.should.equal( | ||
|  |         [{"Name": "a", "Value": "b"}, {"Name": "attr2", "Value": "myvalue"}] | ||
|  |     ) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_sdb | ||
|  | def test_get_attributes_by_name(): | ||
|  |     name = "mydomain" | ||
|  |     sdb = boto3.client("sdb", region_name="eu-west-1") | ||
|  |     sdb.create_domain(DomainName=name) | ||
|  | 
 | ||
|  |     sdb.put_attributes( | ||
|  |         DomainName=name, | ||
|  |         ItemName="asdf", | ||
|  |         Attributes=[{"Name": "a", "Value": "b"}, {"Name": "attr2", "Value": "myvalue"}], | ||
|  |     ) | ||
|  | 
 | ||
|  |     attrs = sdb.get_attributes( | ||
|  |         DomainName=name, ItemName="asdf", AttributeNames=["attr2"] | ||
|  |     )["Attributes"] | ||
|  |     attrs.should.equal([{"Name": "attr2", "Value": "myvalue"}]) |