| 
									
										
										
										
											2022-10-07 14:41:10 +00:00
										 |  |  | import copy | 
					
						
							|  |  |  | from datetime import datetime | 
					
						
							| 
									
										
										
										
											2023-08-15 05:58:55 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | import boto3 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-07 14:41:10 +00:00
										 |  |  | from moto import mock_meteringmarketplace | 
					
						
							|  |  |  | 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_meteringmarketplace() | 
					
						
							|  |  |  | def test_batch_meter_usage(): | 
					
						
							|  |  |  |     client = boto3.client("meteringmarketplace", region_name="us-east-1") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     res = client.batch_meter_usage( | 
					
						
							|  |  |  |         UsageRecords=USAGE_RECORDS, ProductCode="PUFXZLyUElvQvrsG" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 07:45:57 +00:00
										 |  |  |     assert len(res["Results"]) == 10 | 
					
						
							| 
									
										
										
										
											2022-10-07 14:41:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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, | 
					
						
							|  |  |  |         ] |