55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import boto3
 | |
| import pytest
 | |
| 
 | |
| from moto import mock_iot
 | |
| 
 | |
| 
 | |
| @mock_iot
 | |
| @pytest.mark.parametrize(
 | |
|     "query_string,results",
 | |
|     [
 | |
|         ["abc", {"abc", "abcefg", "uuuabc"}],
 | |
|         ["thingName:abc", {"abc"}],
 | |
|         ["thingName:ab*", {"abc", "abd", "abcefg"}],
 | |
|         ["thingName:ab?", {"abc", "abd"}],
 | |
|         ["*", {"abc", "abd", "bbe", "abcefg", "uuuabc", "bbefg"}],
 | |
|     ],
 | |
| )
 | |
| def test_search_things(query_string, results):
 | |
|     client = boto3.client("iot", region_name="ap-northeast-1")
 | |
| 
 | |
|     for name in ["abc", "abd", "bbe", "abcefg", "uuuabc", "bbefg"]:
 | |
|         client.create_thing(thingName=name)
 | |
| 
 | |
|     resp = client.search_index(queryString=query_string)
 | |
|     assert resp["thingGroups"] == []
 | |
|     assert len(resp["things"]) == len(results)
 | |
| 
 | |
|     thing_names = [t["thingName"] for t in resp["things"]]
 | |
|     assert set(thing_names) == results
 | |
| 
 | |
|     for thing in resp["things"]:
 | |
|         del thing["connectivity"]["timestamp"]
 | |
|         assert thing["connectivity"] == {"connected": True}
 | |
| 
 | |
| 
 | |
| @mock_iot
 | |
| @pytest.mark.parametrize(
 | |
|     "query_string,results",
 | |
|     [["attributes.attr0:abc", {"abc"}], ["attributes.attr1:abc", set()]],
 | |
| )
 | |
| def test_search_attribute_specific_value(query_string, results):
 | |
|     client = boto3.client("iot", region_name="ap-northeast-1")
 | |
| 
 | |
|     for idx, name in enumerate(["abc", "abd", "bbe", "abcefg", "uuuabc", "bbefg"]):
 | |
|         client.create_thing(
 | |
|             thingName=name, attributePayload={"attributes": {f"attr{idx}": name}}
 | |
|         )
 | |
| 
 | |
|     resp = client.search_index(queryString=query_string)
 | |
|     assert resp["thingGroups"] == []
 | |
|     assert len(resp["things"]) == len(results)
 | |
| 
 | |
|     thing_names = [t["thingName"] for t in resp["things"]]
 | |
|     assert set(thing_names) == results
 |