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)
Esempio n. 2
0
	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']
Esempio n. 3
0
    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])
Esempio n. 4
0
    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"])
Esempio n. 7
0
	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']
Esempio n. 8
0
    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)
Esempio n. 9
0
	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"]))
Esempio n. 10
0
    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"])
Esempio n. 16
0
    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"])
Esempio n. 17
0
    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"])
Esempio n. 19
0
	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"])
Esempio n. 20
0
	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"])
Esempio n. 24
0
    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"])
Esempio n. 25
0
    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"])
Esempio n. 26
0
    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"])
Esempio n. 27
0
    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"]))
Esempio n. 28
0
    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"])
Esempio n. 30
0
    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"]))