96 lines
2.7 KiB
Python
96 lines
2.7 KiB
Python
import copy
|
|
from datetime import datetime
|
|
|
|
import boto3
|
|
|
|
from moto import mock_aws
|
|
from moto.meteringmarketplace.models import Result
|
|
|
|
USAGE_RECORDS = [
|
|
{
|
|
"Timestamp": datetime(2019, 8, 25, 21, 1, 38),
|
|
"CustomerIdentifier": "EqCDbVpkMBaQzPQv",
|
|
"Dimension": "HIDaByYzIxgGZqyz",
|
|
"Quantity": 6984,
|
|
},
|
|
{
|
|
"Timestamp": datetime(2019, 9, 7, 16, 4, 47),
|
|
"CustomerIdentifier": "ITrDnpWEiebXybRJ",
|
|
"Dimension": "BSWatHqyhbyTQHCS",
|
|
"Quantity": 6388,
|
|
},
|
|
{
|
|
"Timestamp": datetime(2019, 6, 15, 23, 17, 49),
|
|
"CustomerIdentifier": "YfzTVRheDsXEehgQ",
|
|
"Dimension": "FsVxwLkTAynaWwGT",
|
|
"Quantity": 3532,
|
|
},
|
|
{
|
|
"Timestamp": datetime(2019, 9, 10, 19, 56, 35),
|
|
"CustomerIdentifier": "kmgmFPcWhpDGSSDm",
|
|
"Dimension": "PBXGdBHQWVOwudRK",
|
|
"Quantity": 9897,
|
|
},
|
|
{
|
|
"Timestamp": datetime(2019, 1, 12, 1, 28, 36),
|
|
"CustomerIdentifier": "OyxECDjaaDVUeQIB",
|
|
"Dimension": "VzwLdmFjbTBBbHJg",
|
|
"Quantity": 5142,
|
|
},
|
|
{
|
|
"Timestamp": datetime(2019, 8, 5, 18, 27, 41),
|
|
"CustomerIdentifier": "PkeNkaJVfceGvYAX",
|
|
"Dimension": "mHTtIbsLAYrCVSNM",
|
|
"Quantity": 6503,
|
|
},
|
|
{
|
|
"Timestamp": datetime(2019, 7, 18, 3, 22, 18),
|
|
"CustomerIdentifier": "ARzQRYYuXGHCVDkW",
|
|
"Dimension": "RMjZbVpxehPTNtDL",
|
|
"Quantity": 5465,
|
|
},
|
|
{
|
|
"Timestamp": datetime(2019, 6, 24, 9, 19, 14),
|
|
"CustomerIdentifier": "kzlvIayJzpyfBPaH",
|
|
"Dimension": "MmsydkBEHERXDooi",
|
|
"Quantity": 6135,
|
|
},
|
|
{
|
|
"Timestamp": datetime(2019, 9, 28, 20, 29, 5),
|
|
"CustomerIdentifier": "nygdXONtkiqktTMn",
|
|
"Dimension": "GKbTFPMGRyZObEEz",
|
|
"Quantity": 3416,
|
|
},
|
|
{
|
|
"Timestamp": datetime(2019, 6, 17, 2, 5, 34),
|
|
"CustomerIdentifier": "JlIGIXHHPphnBhfV",
|
|
"Dimension": "dcBPhccyHYSdPUUO",
|
|
"Quantity": 2184,
|
|
},
|
|
]
|
|
|
|
|
|
@mock_aws()
|
|
def test_batch_meter_usage():
|
|
client = boto3.client("meteringmarketplace", region_name="us-east-1")
|
|
|
|
res = client.batch_meter_usage(
|
|
UsageRecords=USAGE_RECORDS, ProductCode="PUFXZLyUElvQvrsG"
|
|
)
|
|
|
|
assert len(res["Results"]) == 10
|
|
|
|
records_without_time = copy.copy(USAGE_RECORDS)
|
|
for r in records_without_time:
|
|
r.pop("Timestamp")
|
|
|
|
for record in res["Results"]:
|
|
record["UsageRecord"].pop("Timestamp")
|
|
assert record["UsageRecord"] in records_without_time
|
|
assert record["MeteringRecordId"]
|
|
assert record["Status"] in [
|
|
Result.DUPLICATE_RECORD,
|
|
Result.CUSTOMER_NOT_SUBSCRIBED,
|
|
Result.SUCCESS,
|
|
]
|