def test_remove_all(self): self.client.delete.return_value = mock_api_response('/api/v2/users/-/subscriptions', NO_CONTENT, None) self.subscription.remove_all_subscriptions('-') self.client.delete.assert_called_with(self.client.delete.return_value.url, headers=self.DEFAULT_HEADERS)
def test_get_boundaries(self): self.client.get.return_value = mock_api_response( '/api/v2/users/-/data/boundaries', OK, None, 'data', 'boundaries', 'GET_response.json') boundaries = self.data.get_boundaries( '-', search=BoundariesSearchOption.BOTH) self.client.get.assert_called_with(self.client.get.return_value.url, params=dict(search='both'), headers=self.DEFAULT_HEADERS) self.assertIsNotNone(boundaries) self.assertIsInstance(boundaries, list) self.assertEqual(2, len(boundaries)) boundary1 = boundaries[0] self.assertEqual("OnDemand:model-test-data-boundaries@sensor", boundary1["source"]) self.assertEqual(2, len(boundary1["streams"])) self.assertEqual("/indoor/air/temperature", boundary1["streams"][0]["path"]) self.assertEqual("/indoor/air/humidity", boundary1["streams"][1]["path"]) boundary2 = boundaries[1] self.assertEqual("OnDemand:model-test-data-boundaries@thermostat", boundary2["source"]) self.assertEqual(2, len(boundary2["streams"])) self.assertEqual("/indoor/air/temperature", boundary2["streams"][0]["path"]) self.assertEqual("/indoor/thermostat/mode", boundary2["streams"][1]["path"])
def test_delete(self): self.client.delete.return_value = mock_api_response( '/api/v2/users/-/connections/connection-id', NO_CONTENT, None) self.connections.delete_connection('-', 'connection-id') self.client.delete.assert_called_with( self.client.delete.return_value.url, headers=self.DEFAULT_HEADERS)
def _test_light_state(self, color, expected_file): self.client.put.return_value = mock_api_response( '/api/v2/users/-/commands/light/state', ACCEPTED, None, 'light', 'state', 'PUT_response.json') expected_request = json.loads( load_resource_file('light', 'state', expected_file)) self.command.set_light_state('-', ['light-udi'], True, color) self.client.put.assert_called_with(self.client.put.return_value.url, data=None, json=expected_request, headers=self.DEFAULT_HEADERS)
def test_plug_state(self): self.client.put.return_value = mock_api_response( '/api/v2/users/-/commands/plug/state', ACCEPTED, None, 'plug', 'state', 'PUT_response.json') expected_request = json.loads( load_resource_file('plug', 'state', 'PUT_request.json')) self.command.set_plug_state('-', ['plug-udi'], True) self.client.put.assert_called_with(self.client.put.return_value.url, data=None, json=expected_request, headers=self.DEFAULT_HEADERS)
def test_get_succeed(self): self.client.get.return_value = mock_api_response('/api/v2/users/-/subscriptions/subscription-key', OK, None, 'subscriptions', 'GET_{id}_response.json') subscription = self.subscription.get_subscription('-', 'subscription-key') self.client.get.assert_called_with(self.client.get.return_value.url, params=None, headers=self.DEFAULT_HEADERS) self.assertIsNotNone(subscription) self.assertIsInstance(subscription, dict) self.assertEqual("sub_for_user_12345_to_temperatures", subscription["key"])
def test_list_streams(self): self.client.get.return_value = mock_api_response( '/api/v2/users/-/data', OK, None, 'data', 'GET_response.json') streams = self.data.list_streams('-') self.client.get.assert_called_with(self.client.get.return_value.url, params=None, headers=self.DEFAULT_HEADERS) self.assertIsNotNone(streams) self.assertIsInstance(streams, list) self.assertEqual(2, len(streams))
def test_list_subscriptions(self): self.client.get.return_value = mock_api_response('/api/v2/users/-/subscriptions', OK, None, 'subscriptions', 'GET_response.json') subscriptions = self.subscription.list_subscriptions('-') self.client.get.assert_called_with(self.client.get.return_value.url, params={}, headers=self.DEFAULT_HEADERS) self.assertIsNotNone(subscriptions) self.assertIsInstance(subscriptions, list) self.assertEqual(1, len(subscriptions)) self.assertEqual("sub_for_user_12345_to_temperatures", subscriptions[0]["key"])
def test_get_succeed(self): self.client.get.return_value = mock_api_response( '/api/v2/users/-/connections/connection-id', OK, None, 'connections', 'GET_{id}_response.json') connection = self.connections.get_connection('-', 'connection-id') self.client.get.assert_called_with(self.client.get.return_value.url, params=None, headers=self.DEFAULT_HEADERS) self.assertIsNotNone(connection) self.assertIsInstance(connection, dict) self.assertEqual("carpetcorp", connection["connectorName"]) self.assertEqual("NONE", connection["error"])
def test_post_succeed(self): self.client.post.return_value = mock_api_response( '/api/v2/users/-/data/timeseries/indoor/air/temperature', ACCEPTED, None, 'data', 'timeseries', 'indoor', 'air', 'temperature', 'GET_response.json') request = json.loads( load_resource_file('data', 'indoor', 'air', 'temperature', 'POST_request.json')) self.data.write_data('-', '/indoor/air/temperature', request) self.client.post.assert_called_with(self.client.post.return_value.url, data=None, json=request, headers=self.DEFAULT_HEADERS)
def _test_thermostat_mode(self, mode, temperature, end_date, expected_file): self.client.put.return_value = mock_api_response( '/api/v2/users/-/commands/thermostat/mode', ACCEPTED, None, 'thermostat', 'mode', 'PUT_response.json') expected_request = json.loads( load_resource_file('thermostat', 'mode', expected_file)) self.command.set_thermostat_mode('-', ['thermostat-udi'], mode, temperature, end_date) self.client.put.assert_called_with(self.client.put.return_value.url, data=None, json=expected_request, headers=self.DEFAULT_HEADERS)
def _test_update(self, status_returned): self.client.put.return_value = mock_api_response('/api/v2/users/-/subscriptions/subscription-key', status_returned, None, 'subscriptions', 'PUT_{key}_response.json') request = json.loads(load_resource_file('subscriptions', 'PUT_{key}_request.json')) self.subscription.set_subscription('-', 'subscription-key', '/indoor/air/temperature', url='https://myhost/notification/callback?from=liveobjects', origin=Origin.ANY, filter=dict(metadata=dict(device='carpetcorp:icarpet3@02:00:00:12:e8:d2') ) ) self.client.put.assert_called_with(self.client.put.return_value.url, data=None, json=request, headers=self.DEFAULT_HEADERS)
def test_get_succeed(self): self.client.get.return_value = mock_api_response( '/api/v2/users/-/connections/connection-id/devices/device-id', OK, None, 'devices', 'GET_{id}_response.json') device = self.devices.get_device('-', 'connection-id', 'device-id') self.client.get.assert_called_with(self.client.get.return_value.url, params=None, headers=self.DEFAULT_HEADERS) self.assertIsNotNone(device) self.assertIsInstance(device, dict) self.assertEqual("carpetcorp:icarpet3@02:00:00:12:e8:d2", device["udi"]) self.assertEqual("NONE", device["error"])
def test_list(self): self.client.get.return_value = mock_api_response( '/api/v2/users/-/connections', OK, None, 'connections', 'GET_response.json') connections = self.connections.list_connections('-') self.client.get.assert_called_with(self.client.get.return_value.url, params={}, headers=self.DEFAULT_HEADERS) self.assertIsNotNone(connections) self.assertIsInstance(connections, list) self.assertEqual(1, len(connections)) self.assertIsInstance(connections[0], dict) self.assertEqual("carpetcorp", connections[0]["connectorName"]) self.assertEqual("NONE", connections[0]["error"])
def test_update(self): self.client.put.return_value = mock_api_response( '/api/v2/users/-/connections/connection-id', OK, None, 'connections', 'PUT_{id}_response.json') connection = self.connections.update_connection_status( '-', 'connection-id', 'WORKING', 'NONE') self.assertIsNotNone(connection) self.assertIsInstance(connection, dict) self.assertEqual("carpetcorp", connection["connectorName"]) self.assertEqual("NONE", connection["error"]) self.client.put.assert_called_with(self.client.put.return_value.url, data=None, json=dict(status='WORKING', reason='NONE'), headers=self.DEFAULT_HEADERS)
def test_create(self): self.client.post.return_value = mock_api_response( '/api/v2/users/-/connections', OK, None, 'connections', 'POST_response.json') connection = self.connections.create_connection( '-', 'test-connector', 'test-key') self.client.post.assert_called_with(self.client.post.return_value.url, data=None, json=dict( connectorName='test-connector', key='test-key'), headers=self.DEFAULT_HEADERS) self.assertIsNotNone(connection) self.assertIsInstance(connection, dict) self.assertEqual("test-connector", connection["connectorName"]) self.assertEqual("test-key", connection["key"])
def test_list(self): self.client.get.return_value = mock_api_response( '/api/v2/users/-/connections/connection-id/devices', OK, None, 'devices', 'GET_response.json') devices = self.devices.list_devices('-', 'connection-id') self.client.get.assert_called_with(self.client.get.return_value.url, params={}, headers=self.DEFAULT_HEADERS) self.assertIsNotNone(devices) self.assertIsInstance(devices, list) self.assertEqual(1, len(devices)) self.assertIsInstance(devices[0], dict) self.assertEqual("carpetcorp:icarpet3@02:00:00:12:e8:d2", devices[0]["udi"]) self.assertEqual("NONE", devices[0]["error"])
def test_set_connection_devices(self): self.client.put.return_value = mock_api_response( '/api/v2/users/-/connections/connection-id/devices', OK, None, 'devices', 'PUT_response.json') request = json.loads(load_resource_file('devices', 'PUT_request.json')) devices = self.devices.set_connection_devices('-', 'connection-id', devices=request) self.client.put.assert_called_with(self.client.put.return_value.url, data=None, json=request, headers=self.DEFAULT_HEADERS) self.assertIsNotNone(devices) self.assertIsInstance(devices, list) self.assertEqual(1, len(devices)) self.assertIsInstance(devices[0], dict) self.assertEqual("connection:model:instance", devices[0]["udi"]) self.assertEqual("NONE", devices[0]["error"]) self.assertIsNone(devices[0]["parentId"])
def test_get_all_stats(self): self.client.get.return_value = mock_api_response( '/api/v2/users/-/data/stats/indoor/air/temperature', OK, None, 'data', 'stats', 'indoor', 'air', 'temperature', 'GET_response.json') stats = self.data.get_stats('-', '/indoor/air/temperature', fields=[StatsField.AVG, StatsField.MIN]) self.client.get.assert_called_with(self.client.get.return_value.url, params=dict(fields='avg,min'), headers=self.DEFAULT_HEADERS) self.assertIsNotNone(stats) self.assertIsInstance(stats, list) self.assertEqual("2015-01-02T08:00:00Z", stats[0]["date"]) self.assertEqual(2, stats[0]["count"]) self.assertEqual(0, stats[0]["min"]) self.assertEqual(20, stats[0]["max"]) self.assertEqual(10, stats[0]["avg"]) self.assertEqual(30, stats[0]["sum"])
def test_get_succeed(self): self.client.get.return_value = mock_api_response( '/api/v2/users/-/data/timeseries/indoor/air/temperature', OK, None, 'data', 'timeseries', 'indoor', 'air', 'temperature', 'GET_response.json') data = self.data.get_data('-', '/indoor/air/temperature', pageSize=1, pageNumber=0, search='metadata.device=udi') self.client.get.assert_called_with(self.client.get.return_value.url, params=dict( pageNumber=0, pageSize=1, search='metadata.device=udi'), headers=self.DEFAULT_HEADERS) self.assertIsNotNone(data) self.assertIsInstance(data, list) self.assertEqual("2015-01-02T08:00:00Z", data[0]["at"]) self.assertEqual(1.0, data[0]["value"])
def test_get_summaries(self): self.client.get.return_value = mock_api_response( '/api/v2/users/-/data/summaries/me/sleep', OK, None, 'data', 'summaries', 'me', 'sleep', 'GET_response.json') summaries = self.data.get_summaries('-', '/me/sleep') self.client.get.assert_called_with(self.client.get.return_value.url, params=dict(), headers=self.DEFAULT_HEADERS) self.assertIsNotNone(summaries) self.assertIsInstance(summaries, list) summary = summaries[0] self.assertEqual("2017-01-01T22:30:00Z", summary["startDate"]) self.assertEqual(28800, summary["totalDuration"]) self.assertEqual(1800, summary["awakeDuration"]) self.assertEqual(9000, summary["lightDuration"]) self.assertEqual(18000, summary["deepDuration"]) self.assertEqual( "/users/me/data/timeseries/me/sleep?filter={\"value\":{\"start\":\"2017-01-01T22:30:00Z\"}}", summary["links"]["timeseries"])
def test_get_not_found(self): self.client.get.return_value = mock_api_response('/api/v2/users/-/data/subscriptions/subscription-key', NOT_FOUND, None) with self.assertRaises(InvalidStatusCode): self.subscription.get_subscription('-', 'subscription-key')
def test_get_not_found(self): self.client.get.return_value = mock_api_response( '/api/v2/users/-/connections/connection-id/devices/device-id', NOT_FOUND, None) with self.assertRaises(InvalidStatusCode): self.devices.get_device('-', 'connection-id', 'device-id')