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"}])
|