class TestCaseFiwareSubscriptions(TestCase): url = "http://127.0.0.1:1026" def setUp(self): self.fiware_manager = OrionConnector(self.url) def tearDown(self): self._clear_subscriptions() def _clear_subscriptions(self): response = self.fiware_manager._request( method='get', url=self.url + "/v2/subscriptions", headers={'Accept': 'application/json'}) if response.status // 200 != 1: raise Exception(response.data) for entity in json.loads(response.data.decode('utf-8')): response = self.fiware_manager._request( method='delete', url=self.url + "/v2/subscriptions/" + entity["id"], headers={'Accept': 'application/json'}) if response.status // 200 != 1: raise Exception(response.data) def _get_subscription(self, url): response = self.fiware_manager._request( method='get', url=self.url + url, headers={'Accept': 'application/json'}) if response.status // 200 != 1: raise Exception(response.data) return json.loads(response.data.decode('utf-8')) def _delete_subscription(self, url): response = self.fiware_manager._request( method='delete', url=self.url + "/" + url, headers={'Accept': 'application/json'}) if response.status // 200 != 1: raise Exception(response.data) def _create_subscription(self, data): response = self.fiware_manager._request(method='post', url=self.url + "/v2/subscriptions", body=data, headers={ 'Accept': 'application/json', "Content-Type": "application/json" }) if response.status // 200 != 1: raise Exception(response.data) return response.headers["location"].split( '/')[-1], response.headers["location"]
def create_entity(oc: pyfiware.OrionConnector, entity_id: str, element_type: str, data: Dict): try: print("Deleting entity with id: {}".format(entity_id)) oc.delete(entity_id=entity_id) except pyfiware.FiException as err: print("Entity with id {} does not exist.".format(entity_id)) print(err.message) print("Creating entity with id: {}".format(entity_id)) oc.create(element_id=entity_id, element_type=element_type, attributes=data)
class TestFiwareManagerDeletions(TestCase): url = "http://127.0.0.1:1026" def setUp(self): self.fiware_manager = OrionConnector(self.url) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=404, data=''))) def test_delete_fails(self): with self.assertRaises(FiException): self.fiware_manager.delete(entity_id="1") @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=404, data=''))) def test_delete_fails_silent(self): self.fiware_manager.delete(entity_id="1", silent=True) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=500, data=''))) def test_delete_fails_no_silent(self): with self.assertRaises(FiException): self.fiware_manager.delete(entity_id="1", silent=True) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=200, data=''))) def test_delete_success(self): self.fiware_manager.delete(entity_id="1") self.fiware_manager._request.assert_called_with( method='DELETE', url=self.url + '/v2/entities/' + "1", headers={'Accept': 'application/json'}, )
def post_entity_context_update(oc: pyfiware.OrionConnector, entity_id: str, element_type: str, data: Dict): device = oc.get(entity_id=entity_id) if device: oc.patch(element_id=entity_id, element_type=element_type, attributes={ 'type': 'StructuredValue', 'value': data, "metadata": {} }) device = oc.get(entity_id=entity_id) print(device)
def setUp(self): self.fiware_manager = OrionConnector(self.url)
class TestFiwareManagerPatch(TestCase): url = "http://127.0.0.1:1026" def setUp(self): self.fiware_manager = OrionConnector(self.url) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=204, data=''))) def test_patch_success(self): attributes = { "temperature": { "value": 26.5, "type": "Float" }, "pressure": { "value": 763, "type": "Float" } } self.fiware_manager.patch(element_id="1", element_type="FAKE", **attributes) self.fiware_manager._request.assert_called_with( method='PATCH', url=self.url + '/v2/entities/' + "1" + "/attrs" + "?type=" + "FAKE", body={ "pressure": { "value": 763, "type": "Float" }, "temperature": { "value": 26.5, "type": "Float" } }, headers={ 'Content-Type': 'application/json', 'Accept': 'application/json' }, ) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=404, data=''))) def test_patch_fails(self): attributes = { "temperature": { "value": 26.5, "type": "Float" }, "pressure": { "value": 763, "type": "Float" } } with self.assertRaises(FiException): self.fiware_manager.patch(element_id="1", element_type="FAKE", **attributes)
class TestFiwareManagerQueries(TestCase): url = "http://127.0.0.1:1026" def setUp(self): self.fiware_manager = OrionConnector(self.url) @patch.object( OrionConnector, "_request", Mock(return_value=DummyResponse( status=404, data= '{"error":"NotFound","description":"The requested entity has not been found. Check type and id"}' ))) def test_get_by_id_empty(self): response = self.fiware_manager.get("wrongID") self.assertIsNone(response, "Not empty response") @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=200, data='{"id":"CorrectID","type":"fake"}'))) def test_get_by_id_found(self): correct_id = "CorrectID" response = self.fiware_manager.get(correct_id) self.assertEqual(response["id"], correct_id, "Not correct element") @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=200, data='{"id":"CorrectID","type":"fake"}'))) def test_get_by_id_request(self): correct_id = "CorrectID" self.fiware_manager.get(correct_id) self.fiware_manager._request.assert_called_with( method='GET', url=self.url + '/v2/entities/' + correct_id, headers={'Accept': 'application/json'}, fields={}) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=500, data='{"error":"Everything Blew up"}'))) def test_get_by_id_error(self): with self.assertRaises(FiException): self.fiware_manager.get("NOSENSE") @patch.object( OrionConnector, "_request", Mock(return_value=DummyResponse( status=404, data= '{"error":"NotFound","description":"The requested entity has not been found. Check type and id"}' ))) def test_get_no_result(self): # No Results response = self.fiware_manager.search(entity_type="WrongType") self.assertEqual(response, [], "Not empty response") @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=200, data='[{"id":"CorrectID","type":"fake"}]', headers={"fiware-total-count": 1}))) def test_get_single_result(self): response = self.fiware_manager.search(entity_type="fake") self.assertEqual(type(response), list, "Not a list") self.assertEqual(len(response), 1, "Not unique") @patch.object( OrionConnector, "_request", Mock(return_value=DummyResponse(status=200, data='[{"id":"1","type":"fake"},' + '{"id":"2","type":"fake"}]', headers={"fiware-total-count": 2}))) def test_get_multiple_result(self): response = self.fiware_manager.search() self.assertEqual(type(response), list, "Not a list") self.assertGreater(len(response), 1, "Unique results") @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=500, data='{"error":"Everything Blew up"}'))) def test_get_exception(self): # Raise exceptions with self.assertRaises(FiException): self.fiware_manager.search() @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=200, data='[{"id":"CorrectID","type":"fake"}]', headers={"fiware-total-count": 1}))) def test_get_queries_id_pattern(self): self.fiware_manager.search(id_pattern="id*/") self.fiware_manager._request.assert_called_with( method='GET', url=self.url + '/v2/entities', headers={'Accept': 'application/json'}, fields={ 'options': 'count', 'limit': 1000, 'idPattern': 'id*/' }) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=200, data='[{"id":"CorrectID","type":"fake"}]', headers={"fiware-total-count": 1}))) def test_get_queries_type(self): self.fiware_manager.search(query="something > 500") self.fiware_manager._request.assert_called_with( method='GET', url=self.url + '/v2/entities', headers={'Accept': 'application/json'}, fields={ 'options': 'count', 'limit': 1000, 'q': 'something > 500' })
class TestFiwareManagerCreations(TestCase): url = "http://127.0.0.1:1026" def setUp(self): self.fiware_manager = OrionConnector(self.url) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=201, data=''))) def test_create_blank(self): self.fiware_manager.create(element_id="1", element_type="fake") self.fiware_manager._request.assert_called_with(method='POST', url=self.url + '/v2/entities', headers={ 'Accept': 'application/json', "Content-Type": "application/json" }, body={ 'id': '1', 'type': 'fake' }) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=201, data=''))) def test_create_parameters(self): self.fiware_manager.create(element_id="1", element_type="fake", weight=300, size="100l") self.fiware_manager._request.assert_called_with( method='POST', url=self.url + '/v2/entities', headers={ 'Accept': 'application/json', "Content-Type": "application/json" }, body={ 'id': '1', 'type': 'fake', 'weight': { 'value': 300, 'type': 'Integer' }, 'size': { 'value': "100l", 'type': "String" } }) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=201, data=''))) def test_create_dict(self): self.fiware_manager.create(element_id="1", element_type="fake", **{ 'weight': 300, 'size': "100l" }) self.fiware_manager._request.assert_called_with( method='POST', url=self.url + '/v2/entities', headers={ 'Accept': 'application/json', 'Content-Type': 'application/json', }, body={ 'id': '1', 'type': 'fake', 'weight': { 'value': 300, 'type': 'Integer' }, 'size': { 'value': "100l", 'type': "String" } }) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=403, data=''))) def test_create_raises(self): with self.assertRaises(FiException): self.fiware_manager.create(element_id="1", element_type="fake", **{ 'weight': 300, 'size': "100l" }) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=201, data=''))) def test_create_no_id(self): with self.assertRaises(TypeError): self.fiware_manager.create(entity_type="fake") # pylint: disable=no-value-for-parameter @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=201, data=''))) def test_create_no_type(self): with self.assertRaises(TypeError): self.fiware_manager.create(element_id="1") # pylint: disable=no-value-for-parameter
class TestFiwareManagerSubscriptions(TestCase): url = "http://127.0.0.1:1026" def setUp(self): self.fiware_manager = OrionConnector(self.url) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=201, data='', headers={'location': 'URL'}))) def test_subscribe(self): self.fiware_manager.subscribe( description="One subscription to rule them all", entities=[{ "idPattern": ".*", "type": "Room" }], condition_expression={"q": "temperature>40"}, condition_attributes=["temperature"], http="http://*****:*****@patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=403, data='Something goes wrong', ))) def test_subscribe_fail(self): with self.assertRaises(FiException): self.fiware_manager.subscribe( description="One subscription to rule them all", entities=[{ "idPattern": ".*", "type": "Room" }], condition_expression={"q": "temperature>40"}, condition_attributes=["temperature"], http="http://*****:*****@patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=201, data='', headers={'location': 'URL'}))) def test_unsubscribe_url(self): self.fiware_manager.unsubscribe(url="v2/subscriptions/fakeURL") self.fiware_manager._request.assert_called_with( method='DELETE', url=self.url + '/v2/subscriptions/' + "fakeURL", ) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=201, data='', headers={'location': 'URL'}))) def test_unsubscribe_id(self): self.fiware_manager.unsubscribe(subscription_id="fakeID") self.fiware_manager._request.assert_called_with( method='DELETE', url=self.url + '/v2/subscriptions/' + "fakeID", ) @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=401, data='Something goes wrong', ))) def test_unsubscribe_fails(self): with self.assertRaises(FiException): self.fiware_manager.unsubscribe(url="v2/subscriptions/fakeURL") @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=201, data="""{ "description": "One subscription to rule them all", "subject": { "entities": [ { "idPattern": ".*", "type": "Room" } ], "condition": { "attrs": [ "temperature" ], "expression": { "q": "temperature>40" } } }, "notification": { "http": { "url": "http://*****:*****@patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse( status=403, data='Something goes wrong', ))) def test_subscription_fails(self): with self.assertRaises(FiException): self.fiware_manager.subscription(subscription_id="fakeURL") @patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=201, data=''))) def test_subscription_update(self): ID = "FAKE" self.fiware_manager.subscription_update(subscription_id=ID, status="active", http="http://*****:*****@patch.object(OrionConnector, "_request", Mock(return_value=DummyResponse(status=401, data=''))) def test_subscription_update_fail(self): ID = "WRONG" with self.assertRaises(FiException): self.fiware_manager.subscription_update( subscription_id=ID, status="active", http="http://localhost:1234")
def setUp(self): self.fiware_manager = OrionConnector(self.url) self._clear_entities()