Exemple #1
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']
Exemple #2
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)
	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)
Exemple #4
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])
Exemple #5
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)
Exemple #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']
    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"])
Exemple #9
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 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 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"])
Exemple #13
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"])
    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"])
Exemple #15
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 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"]))
Exemple #18
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"])
    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_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)
Exemple #21
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"])
Exemple #23
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"])
Exemple #24
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"])
    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"])
Exemple #26
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"])
Exemple #27
0
    def test1_assign_unassign(self):
        # assign a prepared gateway
        req = POST(config.ui_host, config.ui_port, "/gateways")
        req.authorize(self.session)
        req.body(
            json.dumps({
                "id": config.gateway_id,
                "name": "My Home",
                "timezone_id": "Europe/Prague"
            }))

        response, content = req()
        self.assertEqual(201, response.status)
        self.assertEqual("/gateways/" + config.gateway_id,
                         response.getheader("Location"))

        # check the gateway's contents
        resultLink = response.getheader("Location")
        req = GET(config.ui_host, config.ui_port, resultLink)
        req.authorize(self.session)

        response, content = req()
        self.assertEqual(200, response.status)

        result = json.loads(content)
        self.assertEqual("success", result["status"])
        self.assertEqual("My Home", result["data"]["name"])
        self.assertEqual(config.gateway_id, result["data"]["id"])
        self.assertEqual("Europe/Prague", result["data"]["timezone"]["id"])

        # unassign the gateway
        req = DELETE(config.ui_host, config.ui_port,
                     "/gateways/" + config.gateway_id)
        req.authorize(self.session)
        response, content = req()

        self.assertEqual(204, response.status)

        # test the gateway is inaccessible
        req = GET(config.ui_host, config.ui_port, resultLink)
        req.authorize(self.session)

        response, content = req()
        self.assertEqual(403, response.status)
        result = json.loads(content)
        self.assertEqual(403, result["code"])
        self.assertEqual("not enough permission to access the resource",
                         result["message"])
Exemple #28
0
	def assignGateway(self, gwId, name):
		req = POST("localhost", globalConfig.uiPort, "/gateways")
		req.authorize(self.session)
		req.body(json.dumps({
			"id": gwId,
			"name": name,
			"timezone_id": "Europe/Prague"
		}))

		response, content = req()
		self.assertEqual(201, response.status)
		self.assertEqual("/gateways/" + gwId,
				response.getheader("Location"))

		# check the gateway's contents
		resultLink = response.getheader("Location")
		req = GET("localhost", globalConfig.uiPort, resultLink)
		req.authorize(self.session)

		response, content = req()
		self.assertEqual(200, response.status)

		result = json.loads(content)
		self.assertEqual("success", result["status"])
		self.assertEqual("My Home", result["data"]["name"])
		self.assertEqual(gwId, result["data"]["id"])
		self.assertEqual("Europe/Prague", result["data"]["timezone"]["id"])
		return resultLink
    def test3_discover(self):
        req = POST(config.ui_host, config.ui_port,
                   "/gateways/" + config.gateway_id + "/discovery")
        req.authorize(self.session)
        req.body(json.dumps({"time_limit": 1}))
        response, content = req()

        self.assertEqual(202, response.status)

        data = json.loads(content)
        self.assertEqual("success", data["status"])

        scan_uri = response.getheader("Location")
        self.assertEqual("/gateways/" + config.gateway_id + "/discovery",
                         scan_uri)

        for i in range(10):
            req = GET(config.ui_host, config.ui_port, scan_uri)
            req.authorize(self.session)
            response, content = req()

            self.assertEqual(200, response.status)

            result = json.loads(content)
            self.assertTrue("success", result["status"])

            if result["data"]["state"]["name"] == "finished":
                break

            self.assertTrue("started" in result["data"])
            self.assertTrue("duration" in result["data"])
            self.assertEqual(1, result["data"]["duration"])

            time.sleep(1)
Exemple #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"]))