def test6_list_non_existing_device(self): req = GET(config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0x4471959aad24618f/controls") req.authorize(self.session) response, content = req() self.assertEqual(404, response.status)
def currentDeviceValue(self, gwId, deviceId, moduleId): req = GET("localhost", globalConfig.uiPort, "/gateways/" + str(gwId) + "/devices/" + str(deviceId) + "/sensors/"+str(moduleId)+"/current") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) return json.loads(content)['data']
def test9_check_bitmap_with_group(self): req = GET(config.ui_host, config.ui_port, "/types/bitmap/MOD_CURRENT_BOILER_OT_OEM_FAULTS") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) bitmap = result["data"] self.assertEqual("OT OEM Faults", bitmap["name"]) self.assertTrue("groups" in bitmap) self.assertEqual(1, len(bitmap["groups"])) self.assertEqual("OEM specific", bitmap["groups"][0]["name"]) self.assertEqual(8, len(bitmap["groups"][0]["mapping"])) self.assertEqual(0, bitmap["groups"][0]["mapping"][0]) self.assertEqual(1, bitmap["groups"][0]["mapping"][1]) self.assertEqual(2, bitmap["groups"][0]["mapping"][2]) self.assertEqual(3, bitmap["groups"][0]["mapping"][3]) self.assertEqual(4, bitmap["groups"][0]["mapping"][4]) self.assertEqual(5, bitmap["groups"][0]["mapping"][5]) self.assertEqual(6, bitmap["groups"][0]["mapping"][6]) self.assertEqual(7, bitmap["groups"][0]["mapping"][7])
def assure_range(self, id, name, min, max, step): req = GET(config.ui_host, config.ui_port, "/types/" + id) req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) type = result["data"] self.assertEqual(name, type["name"]) self.assertTrue("range" in type) if min is not None: self.assertTrue("min" in type["range"]) self.assertEqual(min, type["range"]["min"]) else: self.assertFalse("min" in type["range"]) if max is not None: self.assertTrue("max" in type["range"]) self.assertEqual(max, type["range"]["max"]) else: self.assertFalse("max" in type["range"]) if step is not None: self.assertTrue("step" in type["range"]) self.assertEqual(step, type["range"]["step"]) else: self.assertFalse("step" in type["range"])
def test4_current_non_existing_sensor(self): req = GET(config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0xa371959aad24618e/controls/1000/current") req.authorize(self.session) response, content = req() self.assertEqual(404, response.status)
def test1_keys(self): req = GET(config.ui_host, config.ui_port, "/gateways/devices/properties/keys") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(5, len(result["data"])) self.assertEqual("ip-address", result["data"][0]["key"]) self.assertEqual("IP address", result["data"][0]["display_name"]) self.assertNotIn("read-only", result["data"][0]) self.assertNotIn("write-only", result["data"][0]) self.assertEqual("password", result["data"][1]["key"]) self.assertEqual("Password", result["data"][1]["display_name"]) self.assertTrue(result["data"][1]["write-only"]) self.assertEqual("firmware", result["data"][2]["key"]) self.assertEqual("Firmware", result["data"][2]["display_name"]) self.assertTrue(result["data"][2]["read-only"]) self.assertEqual("mac-address", result["data"][3]["key"]) self.assertEqual("MAC address", result["data"][3]["display_name"]) self.assertTrue(result["data"][3]["read-only"]) self.assertEqual("serial", result["data"][4]["key"]) self.assertEqual("Serial number", result["data"][4]["display_name"]) self.assertTrue(result["data"][4]["read-only"])
def getDevices(self, gwId): req = GET("localhost", globalConfig.uiPort, "/gateways/" + str(gwId) + "/devices") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) return json.loads(content)['data']
def test4_list_sensors_of_device_unknown(self): req = GET( config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0xa371959aad24618e/sensors") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(9, len(result["data"])) self.assert_find_sensor(result["data"], "0", "temperature", "temperature", "0", False) self.assert_find_sensor(result["data"], "1", "humidity", "humidity", "1", True) self.assert_find_sensor(result["data"], "2", "noise", "noise", "2", False) self.assert_find_sensor(result["data"], "3", "temperature", "temperature", "3", False) self.assert_find_sensor(result["data"], "4", "humidity", "humidity", "4", False) self.assert_find_sensor(result["data"], "5", "noise", "noise", "5", False) self.assert_find_sensor(result["data"], "6", "temperature", "temperature", "6", False) self.assert_find_sensor(result["data"], "7", "humidity", "humidity", "7", False) self.assert_find_sensor(result["data"], "8", "noise", "noise", "8", False)
def test2_exploit_get_uri(self): req = GET(config.ui_host, config.ui_port, "/gateways/%c0%ae%c0%ae") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(200, result["code"]) self.assertEqual(0, len(result["data"]))
def test1_list_all(self): req = GET(config.ui_host, config.ui_port, "/types") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(30, len(result["data"]))
def test5_get_nonexisting_key(self): req = GET( config.ui_host, config.ui_port, "/gateways/" + config.gateway_id + "/devices/0xa335d00019f5234e/properties/sssss") req.authorize(self.session) response, content = req() self.assertEqual(400, response.status) result = json.loads(content) self.assertEqual("error", result["status"])
def test2_inaccessible(self): req = GET(config.ui_host, config.ui_port, "/profiles/ab9996fa-5252-4df5-a3f6-1d7efde7a021") req.authorize(self.session) response, content = req() self.assertEqual(403, response.status) result = json.loads(content) self.assertEqual("error", result["status"]) self.assertEqual("not enough permission to access the resource", result["message"])
def test7_detail_big_euid(self): req = GET( config.ui_host, config.ui_port, "/gateways/" + config.gateway_id + "/devices/" + "1208925819614629174706175") req.authorize(self.session) response, content = req() self.assertEqual(400, response.status) result = json.loads(content) self.assertEqual("error", result["status"]) self.assertEqual("could not process input data", result["message"])
def test4_list_active(self): req = GET(config.ui_host, config.ui_port, "/gateways/" + config.gateway_id + "/devices?filter=active") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(3, len(result["data"]))
def test6_detail_invalid_euid(self): req = GET( config.ui_host, config.ui_port, "/gateways/" + config.gateway_id + "/devices/" + "a1231r30430") req.authorize(self.session) response, content = req() self.assertEqual(400, response.status) result = json.loads(content) self.assertEqual("error", result["status"]) self.assertEqual("could not process input data", result["message"])
def test2_detail_of_non_existing(self): req = GET(config.ui_host, config.ui_port, "/types/12904232") req.authorize(self.session) response, content = req() self.assertEqual(404, response.status) result = json.loads(content) self.assertEqual("error", result["status"]) self.assertEqual("requested resource does not exist", result["message"])
def test3_detail_of_battery(self): req = GET(config.ui_host, config.ui_port, "/types/battery") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual("battery", result["data"]["name"]) self.assertEqual("%", result["data"]["unit"])
def test1_list_services(self): req = GET(config.ui_host, config.ui_port, "/notifications") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(1, len(result["data"])) self.assertEqual("fcm", result["data"][0]["name"]) self.assertEqual(os.environ["FCM_SENDER_ID"], result["data"][0]["id"])
def test2_detail(self): req = GET(config.ui_host, config.ui_port, "/gateways/" + config.gateway_id) req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(config.gateway_id, result["data"]["id"]) self.assertEqual("Testing Gateway", result["data"]["name"]) self.assertIn("last_activity", result["data"])
def test1_list(self): req = GET(config.ui_host, config.ui_port, "/gateways") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(1, len(result["data"])) self.assertEqual(config.gateway_id, result["data"][0]["id"]) self.assertEqual("Testing Gateway", result["data"][0]["name"])
def test2_detail(self): req = GET( config.ui_host, config.ui_port, "/gateways/" + config.gateway_id + "/devices/" + "0xa335d00019f5234e") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertKnownDevice(result["data"])
def test2_detail_unknown_brightness(self): req = GET(config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0xa371959aad24618e/controls/9") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assert_control(result["data"], "9", "brightness", "brightness", "9", False)
def test8_unsupported_device(self): req = GET( config.ui_host, config.ui_port, "/gateways/" + config.gateway_id + "/devices/0xa3779fbec542e18b") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual("0xa3779fbec542e18b", result["data"]["id"]) self.assertIn("type", result["data"]) self.assertNotIn("name", result["data"]["type"])
def test6_current_unknown_temperature(self): req = GET( config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0xa371959aad24618e/sensors/0/current" ) req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertTrue("data" in result) self.assertIsNone(result["data"])
def test2_notice_with_custom_key(self): id = str(uuid.uuid4()) req = GET(config.ui_host, config.ui_port, "/gateways/" + config.gateway_id + "/messages") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) messages_count = len(json.loads(content)["data"]) msg = json.dumps({ "id": id, "message_type": "notice_request", "at": 1546363722909123, "severity": "info", "key": "some_message", "context": { "reason": "unknown", "attempt": 1, "valid": True } }) self.ws.send(msg) response = json.loads(self.ws.recv()) self.assertEqual("generic_response", response["message_type"]) self.assertEqual(id, response["id"]) assureNotClosed(self, self.ws) req = GET(config.ui_host, config.ui_port, "/gateways/" + config.gateway_id + "/messages") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) messages = json.loads(content)["data"] self.assertEqual(messages_count + 1, len(messages)) message = None for m in messages: if m["at"] == 1546363722909: message = m self.assertIsNotNone(message) self.assertEqual("info", message["severity"]) self.assertEqual("gateway.some_message", message["key"]) self.assertEqual("unknown", message["context"]["reason"]) self.assertEqual(1, message["context"]["attempt"]) self.assertEqual(True, message["context"]["valid"])
def test3_current_room_temperature(self): req = GET( config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0xa335d00019f5234e/sensors/0/current" ) req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual("19.500000", result["data"]["value"])
def testb_history_room_temperature_1hour(self): req = GET( config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0xa335d00019f5234e/sensors/0/history" + "?range=hour") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(14, len(result["data"])) # again, but ask for min and max req = GET( config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0xa335d00019f5234e/sensors/0/history" + "?range=hour&aggregation=min,max") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(14, len(result["data"])) self.assertEqual(2, len(result["data"][0]["values"])) # again, but ask for min, max and avg req = GET( config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0xa335d00019f5234e/sensors/0/history" + "?range=hour&aggregation=min,max,avg") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(14, len(result["data"])) self.assertEqual(3, len(result["data"][0]["values"])) # the same request with explicit timestamps start = datetime.now() - timedelta(0, 60 * 60) end = datetime.now() req = GET( config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0xa335d00019f5234e/sensors/0/history" + "?range=%s,%s" % (start.strftime("%s"), end.strftime("%s"))) req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(14, len(result["data"]))
def test5_detail_unknown_temperature(self): req = GET( config.ui_host, config.ui_port, "/gateways/1284174504043136/devices/0xa371959aad24618e/sensors/0") req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assert_sensor(result["data"], "0", "temperature", "temperature", "0", False) self.assertEqual("zone 1", result["data"]["group"])
def test2_current_locale_is_en(self): req = GET(config.ui_host, config.ui_port, "/profiles/current") req.authorize(self.session) response, _ = req() self.assertEqual(303, response.status) req = GET(config.ui_host, config.ui_port, response.headers["Location"]) req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual("en", result["data"]["locale"])
def testd_availability_1week(self): end = datetime(2018, 4, 10, 9) start = end - timedelta(7) req = GET( config.ui_host, config.ui_port, "/gateways/1334886476281298/devices/0xa3545123f4c823e5/sensors/0/history" + "?range=%s,%s&aggregation=freq&interval=3600" % (start.strftime("%s"), end.strftime("%s"))) req.authorize(self.session) response, content = req() self.assertEqual(200, response.status) result = json.loads(content) self.assertEqual("success", result["status"]) self.assertEqual(336, len(result["data"]))