|
| 1 | +from datetime import datetime |
| 2 | + |
| 3 | +from aws_lambda_powertools.utilities.data_classes.iot_registry_event import ( |
| 4 | + IoTCoreAddOrDeleteFromThingGroupEvent, |
| 5 | + IoTCoreAddOrRemoveFromThingGroupEvent, |
| 6 | + IoTCoreThingEvent, |
| 7 | + IoTCoreThingGroupEvent, |
| 8 | + IoTCoreThingTypeAssociationEvent, |
| 9 | + IoTCoreThingTypeEvent, |
| 10 | +) |
| 11 | +from tests.functional.utils import load_event |
| 12 | + |
| 13 | + |
| 14 | +def test_iotcore_thing_event(): |
| 15 | + raw_event = load_event("iotRegistryEventsThingEvent.json") |
| 16 | + parsed_event = IoTCoreThingEvent(raw_event) |
| 17 | + |
| 18 | + assert parsed_event.event_type == raw_event["eventType"] |
| 19 | + assert parsed_event.operation == raw_event["operation"] |
| 20 | + assert parsed_event.thing_id == raw_event["thingId"] |
| 21 | + assert parsed_event.account_id == raw_event["accountId"] |
| 22 | + assert parsed_event.thing_name == raw_event["thingName"] |
| 23 | + assert parsed_event.version_number == raw_event["versionNumber"] |
| 24 | + assert parsed_event.thing_type_name == raw_event.get("thingTypeName") |
| 25 | + assert parsed_event.attributes == raw_event["attributes"] |
| 26 | + assert parsed_event.event_id == raw_event["eventId"] |
| 27 | + |
| 28 | + # Validate timestamp conversion |
| 29 | + # Original field is int |
| 30 | + expected_timestamp = datetime.fromtimestamp( |
| 31 | + raw_event["timestamp"] / 1000 if raw_event["timestamp"] > 10**10 else raw_event["timestamp"], |
| 32 | + ) |
| 33 | + assert parsed_event.timestamp == expected_timestamp |
| 34 | + |
| 35 | + |
| 36 | +def test_iotcore_thing_type_event(): |
| 37 | + raw_event = load_event("iotRegistryEventsThingTypeEvent.json") |
| 38 | + parsed_event = IoTCoreThingTypeEvent(raw_event) |
| 39 | + |
| 40 | + assert parsed_event.event_type == raw_event["eventType"] |
| 41 | + assert parsed_event.operation == raw_event["operation"] |
| 42 | + assert parsed_event.event_id == raw_event["eventId"] |
| 43 | + assert parsed_event.account_id == raw_event["accountId"] |
| 44 | + assert parsed_event.thing_type_name == raw_event["thingTypeName"] |
| 45 | + assert parsed_event.is_deprecated == raw_event["isDeprecated"] |
| 46 | + assert parsed_event.deprecation_date == raw_event["deprecationDate"] |
| 47 | + assert parsed_event.searchable_attributes == raw_event["searchableAttributes"] |
| 48 | + assert parsed_event.propagating_attributes == raw_event["propagatingAttributes"] |
| 49 | + assert parsed_event.description == raw_event["description"] |
| 50 | + assert parsed_event.thing_type_id == raw_event["thingTypeId"] |
| 51 | + |
| 52 | + |
| 53 | +def test_iotcore_thing_type_association_event(): |
| 54 | + raw_event = load_event("iotRegistryEventsThingTypeAssociationEvent.json") |
| 55 | + parsed_event = IoTCoreThingTypeAssociationEvent(raw_event) |
| 56 | + |
| 57 | + assert parsed_event.event_type == raw_event["eventType"] |
| 58 | + assert parsed_event.operation == raw_event["operation"] |
| 59 | + assert parsed_event.event_id == raw_event["eventId"] |
| 60 | + assert parsed_event.thing_id == raw_event["thingId"] |
| 61 | + assert parsed_event.thing_type_name == raw_event["thingTypeName"] |
| 62 | + assert parsed_event.thing_name == raw_event["thingName"] |
| 63 | + |
| 64 | + |
| 65 | +def test_iotcore_thing_group_event(): |
| 66 | + raw_event = load_event("iotRegistryEventsThingGroupEvent.json") |
| 67 | + parsed_event = IoTCoreThingGroupEvent(raw_event) |
| 68 | + |
| 69 | + assert parsed_event.event_type == raw_event["eventType"] |
| 70 | + assert parsed_event.event_id == raw_event["eventId"] |
| 71 | + assert parsed_event.operation == raw_event["operation"] |
| 72 | + assert parsed_event.account_id == raw_event["accountId"] |
| 73 | + assert parsed_event.thing_group_name == raw_event["thingGroupName"] |
| 74 | + assert parsed_event.thing_group_id == raw_event["thingGroupId"] |
| 75 | + assert parsed_event.version_number == raw_event["versionNumber"] |
| 76 | + assert parsed_event.parent_group_name == raw_event["parentGroupName"] |
| 77 | + assert parsed_event.parent_group_id == raw_event["parentGroupId"] |
| 78 | + assert parsed_event.description == raw_event["description"] |
| 79 | + assert parsed_event.root_to_parent_thing_groups == raw_event["rootToParentThingGroups"] |
| 80 | + assert parsed_event.attributes == raw_event["attributes"] |
| 81 | + assert parsed_event.dynamic_group_mapping_id == raw_event["dynamicGroupMappingId"] |
| 82 | + |
| 83 | + |
| 84 | +def test_iotcore_add_or_remove_from_thing_group_event(): |
| 85 | + raw_event = load_event("iotRegistryEventsAddOrRemoveFromThingGroupEvent.json") |
| 86 | + parsed_event = IoTCoreAddOrRemoveFromThingGroupEvent(raw_event) |
| 87 | + |
| 88 | + assert parsed_event.event_type == raw_event["eventType"] |
| 89 | + assert parsed_event.operation == raw_event["operation"] |
| 90 | + assert parsed_event.account_id == raw_event["accountId"] |
| 91 | + assert parsed_event.event_id == raw_event["eventId"] |
| 92 | + assert parsed_event.group_id == raw_event["groupId"] |
| 93 | + assert parsed_event.group_arn == raw_event["groupArn"] |
| 94 | + assert parsed_event.thing_arn == raw_event["thingArn"] |
| 95 | + assert parsed_event.thing_id == raw_event["thingId"] |
| 96 | + assert parsed_event.membership_id == raw_event["membershipId"] |
| 97 | + |
| 98 | + |
| 99 | +def test_iotcore_add_or_delete_from_thing_group_event(): |
| 100 | + raw_event = load_event("iotRegistryEventsAddOrDeleteFromThingGroupEvent.json") |
| 101 | + parsed_event = IoTCoreAddOrDeleteFromThingGroupEvent(raw_event) |
| 102 | + |
| 103 | + assert parsed_event.event_type == raw_event["eventType"] |
| 104 | + assert parsed_event.event_id == raw_event["eventId"] |
| 105 | + assert parsed_event.account_id == raw_event["accountId"] |
| 106 | + assert parsed_event.thing_group_id == raw_event["thingGroupId"] |
| 107 | + assert parsed_event.thing_group_name == raw_event["thingGroupName"] |
| 108 | + assert parsed_event.child_group_id == raw_event["childGroupId"] |
| 109 | + assert parsed_event.child_group_name == raw_event["childGroupName"] |
| 110 | + assert parsed_event.operation == raw_event["operation"] |
| 111 | + |
| 112 | + expected_timestamp = datetime.fromtimestamp( |
| 113 | + raw_event["timestamp"] / 1000 if raw_event["timestamp"] > 10**10 else raw_event["timestamp"], |
| 114 | + ) |
| 115 | + assert parsed_event.timestamp == expected_timestamp |
0 commit comments