1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
import boto3
import pytest
from botocore.exceptions import ClientError
from moto import mock_aws
@mock_aws
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"]
assert err["Code"] == "NoSuchDomain"
assert err["Message"] == "The specified domain does not exist."
assert "BoxUsage" in err
@mock_aws
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"]
assert err["Code"] == "InvalidParameterValue"
assert err["Message"] == "Value (a) for parameter DomainName is invalid. "
assert "BoxUsage" in err
@mock_aws
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"]
assert err["Code"] == "NoSuchDomain"
assert err["Message"] == "The specified domain does not exist."
assert "BoxUsage" in err
@mock_aws
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"]
assert err["Code"] == "InvalidParameterValue"
assert err["Message"] == "Value (a) for parameter DomainName is invalid. "
assert "BoxUsage" in err
@mock_aws
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"]
assert attrs == [{"Name": "a", "Value": "b"}]
@mock_aws
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"]
assert attrs == [
{"Name": "a", "Value": "b"},
{"Name": "a", "Value": "c"},
{"Name": "d", "Value": "e"},
]
attrs = sdb.get_attributes(DomainName=name, ItemName="jklp")["Attributes"]
assert attrs == [{"Name": "a", "Value": "val"}]
@mock_aws
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"]
assert len(attrs) == 3
assert {"Name": "a", "Value": "f"} in attrs
assert {"Name": "d", "Value": "e"} in attrs
assert {"Name": "d", "Value": "g"} in attrs
@mock_aws
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"]
assert attrs == [{"Name": "a", "Value": "b"}, {"Name": "attr2", "Value": "myvalue"}]
@mock_aws
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"]
assert attrs == [{"Name": "attr2", "Value": "myvalue"}]
|