| 
									
										
										
										
											2025-04-03 10:39:47 +05:30
										 |  |  | #  Copyright 2025 Collate | 
					
						
							|  |  |  | #  Licensed under the Collate Community License, Version 1.0 (the "License"); | 
					
						
							| 
									
										
										
										
											2021-12-01 12:46:28 +05:30
										 |  |  | #  you may not use this file except in compliance with the License. | 
					
						
							|  |  |  | #  You may obtain a copy of the License at | 
					
						
							| 
									
										
										
										
											2025-04-03 10:39:47 +05:30
										 |  |  | #  https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE | 
					
						
							| 
									
										
										
										
											2021-12-01 12:46:28 +05:30
										 |  |  | #  Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  | #  distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  | #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  | #  See the License for the specific language governing permissions and | 
					
						
							|  |  |  | #  limitations under the License. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | """
 | 
					
						
							| 
									
										
										
										
											2021-10-28 20:31:38 +02:00
										 |  |  | OpenMetadata high-level API Dashboard test | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | """
 | 
					
						
							|  |  |  | import uuid | 
					
						
							|  |  |  | from unittest import TestCase | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  | from metadata.generated.schema.api.data.createDashboard import CreateDashboardRequest | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | from metadata.generated.schema.api.services.createDashboardService import ( | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  |     CreateDashboardServiceRequest, | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  | from metadata.generated.schema.api.teams.createUser import CreateUserRequest | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | from metadata.generated.schema.entity.data.dashboard import Dashboard | 
					
						
							| 
									
										
										
										
											2022-04-05 21:20:39 +02:00
										 |  |  | from metadata.generated.schema.entity.services.connections.dashboard.lookerConnection import ( | 
					
						
							|  |  |  |     LookerConnection, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-04-12 23:40:21 -07:00
										 |  |  | from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import ( | 
					
						
							|  |  |  |     OpenMetadataConnection, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | from metadata.generated.schema.entity.services.dashboardService import ( | 
					
						
							| 
									
										
										
										
											2022-04-05 21:20:39 +02:00
										 |  |  |     DashboardConnection, | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |     DashboardService, | 
					
						
							|  |  |  |     DashboardServiceType, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-09-26 16:19:47 +05:30
										 |  |  | from metadata.generated.schema.security.client.openMetadataJWTClientConfig import ( | 
					
						
							|  |  |  |     OpenMetadataJWTClientConfig, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | from metadata.generated.schema.type.entityReference import EntityReference | 
					
						
							| 
									
										
										
										
											2024-07-29 23:06:39 -07:00
										 |  |  | from metadata.generated.schema.type.entityReferenceList import EntityReferenceList | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | from metadata.ingestion.ometa.ometa_api import OpenMetadata | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class OMetaDashboardTest(TestCase): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Run this integration test with the local API available | 
					
						
							|  |  |  |     Install the ingestion package before running the tests | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     service_entity_id = None | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-26 16:19:47 +05:30
										 |  |  |     server_config = OpenMetadataConnection( | 
					
						
							|  |  |  |         hostPort="http://localhost:8585/api", | 
					
						
							|  |  |  |         authProvider="openmetadata", | 
					
						
							|  |  |  |         securityConfig=OpenMetadataJWTClientConfig( | 
					
						
							|  |  |  |             jwtToken="eyJraWQiOiJHYjM4OWEtOWY3Ni1nZGpzLWE5MmotMDI0MmJrOTQzNTYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImlzQm90IjpmYWxzZSwiaXNzIjoib3Blbi1tZXRhZGF0YS5vcmciLCJpYXQiOjE2NjM5Mzg0NjIsImVtYWlsIjoiYWRtaW5Ab3Blbm1ldGFkYXRhLm9yZyJ9.tS8um_5DKu7HgzGBzS1VTA5uUjKWOCU0B_j08WXBiEC0mr0zNREkqVfwFDD-d24HlNEbrqioLsBuFRiwIWKc1m_ZlVQbG7P36RUxhuv2vbSp80FKyNM-Tj93FDzq91jsyNmsQhyNv_fNr3TXfzzSPjHt8Go0FMMP66weoKMgW2PbXlhVKwEuXUHyakLLzewm9UMeQaEiRzhiTMU3UkLXcKbYEJJvfNFcLwSl9W8JCO_l0Yj3ud-qt_nQYEZwqW6u5nfdQllN133iikV4fM5QZsMCnm8Rq1mvLR0y9bmJiD7fwM1tmJ791TUWqmKaTnP49U493VanKpUAfzIiOiIbhg" | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |     metadata = OpenMetadata(server_config) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-31 16:23:01 +01:00
										 |  |  |     assert metadata.health_check() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |     user = metadata.create_or_update( | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  |         data=CreateUserRequest(name="random-user", email="random@user.com"), | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |     ) | 
					
						
							| 
									
										
										
										
											2024-07-29 23:06:39 -07:00
										 |  |  |     owners = EntityReferenceList(root=[EntityReference(id=user.id, type="user")]) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  |     service = CreateDashboardServiceRequest( | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |         name="test-service-dashboard", | 
					
						
							| 
									
										
										
										
											2022-06-24 16:44:37 -07:00
										 |  |  |         serviceType=DashboardServiceType.Looker, | 
					
						
							| 
									
										
										
										
											2022-04-18 19:00:36 +02:00
										 |  |  |         connection=DashboardConnection( | 
					
						
							| 
									
										
										
										
											2022-07-24 16:02:26 +02:00
										 |  |  |             config=LookerConnection( | 
					
						
							|  |  |  |                 hostPort="http://hostPort", clientId="id", clientSecret="secret" | 
					
						
							|  |  |  |             ) | 
					
						
							| 
									
										
										
										
											2022-04-18 19:00:36 +02:00
										 |  |  |         ), | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |     ) | 
					
						
							|  |  |  |     service_type = "dashboardService" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def setUpClass(cls) -> None: | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         Prepare ingredients | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         cls.service_entity = cls.metadata.create_or_update(data=cls.service) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cls.entity = Dashboard( | 
					
						
							|  |  |  |             id=uuid.uuid4(), | 
					
						
							|  |  |  |             name="test", | 
					
						
							| 
									
										
										
										
											2023-02-13 00:08:55 -08:00
										 |  |  |             service=EntityReference(id=cls.service_entity.id, type="dashboardService"), | 
					
						
							| 
									
										
										
										
											2022-04-05 21:20:39 +02:00
										 |  |  |             fullyQualifiedName="test-service-dashboard.test", | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  |         cls.create = CreateDashboardRequest( | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |             name="test", | 
					
						
							| 
									
										
										
										
											2023-02-13 00:08:55 -08:00
										 |  |  |             service=cls.service_entity.fullyQualifiedName, | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def tearDownClass(cls) -> None: | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         Clean up | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         service_id = str( | 
					
						
							|  |  |  |             cls.metadata.get_by_name( | 
					
						
							| 
									
										
										
										
											2022-05-26 21:00:18 +02:00
										 |  |  |                 entity=DashboardService, fqn="test-service-dashboard" | 
					
						
							| 
									
										
										
										
											2024-06-05 21:18:37 +02:00
										 |  |  |             ).id.root | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-21 22:30:39 +05:30
										 |  |  |         cls.metadata.delete( | 
					
						
							| 
									
										
										
										
											2022-04-05 21:20:39 +02:00
										 |  |  |             entity=DashboardService, | 
					
						
							|  |  |  |             entity_id=service_id, | 
					
						
							|  |  |  |             recursive=True, | 
					
						
							|  |  |  |             hard_delete=True, | 
					
						
							| 
									
										
										
										
											2022-03-21 22:30:39 +05:30
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_create(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         We can create a Dashboard and we receive it back as Entity | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         res = self.metadata.create_or_update(data=self.create) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.assertEqual(res.name, self.entity.name) | 
					
						
							|  |  |  |         self.assertEqual(res.service.id, self.entity.service.id) | 
					
						
							| 
									
										
										
										
											2024-07-29 23:06:39 -07:00
										 |  |  |         self.assertIsNone(res.owners) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_update(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         Updating it properly changes its properties | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         res_create = self.metadata.create_or_update(data=self.create) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-04 14:54:41 +02:00
										 |  |  |         updated = self.create.model_dump(exclude_unset=True) | 
					
						
							| 
									
										
										
										
											2024-07-29 23:06:39 -07:00
										 |  |  |         updated["owners"] = self.owners | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  |         updated_entity = CreateDashboardRequest(**updated) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         res = self.metadata.create_or_update(data=updated_entity) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Same ID, updated algorithm | 
					
						
							| 
									
										
										
										
											2024-06-05 21:18:37 +02:00
										 |  |  |         self.assertEqual(res.service.fullyQualifiedName, updated_entity.service.root) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |         self.assertEqual(res_create.id, res.id) | 
					
						
							| 
									
										
										
										
											2024-07-29 23:06:39 -07:00
										 |  |  |         self.assertEqual(res.owners.root[0].id, self.user.id) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_get_name(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         We can fetch a Dashboard by name and get it back as Entity | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.metadata.create_or_update(data=self.create) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         res = self.metadata.get_by_name( | 
					
						
							| 
									
										
										
										
											2022-05-26 21:00:18 +02:00
										 |  |  |             entity=Dashboard, fqn=self.entity.fullyQualifiedName | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  |         self.assertEqual(res.name, self.entity.name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_get_id(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         We can fetch a Dashboard by ID and get it back as Entity | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.metadata.create_or_update(data=self.create) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # First pick up by name | 
					
						
							|  |  |  |         res_name = self.metadata.get_by_name( | 
					
						
							| 
									
										
										
										
											2022-05-26 21:00:18 +02:00
										 |  |  |             entity=Dashboard, fqn=self.entity.fullyQualifiedName | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  |         # Then fetch by ID | 
					
						
							| 
									
										
										
										
											2021-12-06 08:40:53 +01:00
										 |  |  |         res = self.metadata.get_by_id(entity=Dashboard, entity_id=res_name.id) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         self.assertEqual(res_name.id, res.id) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_list(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         We can list all our Dashboards | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.metadata.create_or_update(data=self.create) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         res = self.metadata.list_entities(entity=Dashboard, limit=100) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Fetch our test Database. We have already inserted it, so we should find it | 
					
						
							|  |  |  |         data = next( | 
					
						
							|  |  |  |             iter(ent for ent in res.entities if ent.name == self.entity.name), None | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         assert data | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_delete(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         We can delete a Dashboard by ID | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.metadata.create_or_update(data=self.create) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Find by name | 
					
						
							|  |  |  |         res_name = self.metadata.get_by_name( | 
					
						
							| 
									
										
										
										
											2022-05-26 21:00:18 +02:00
										 |  |  |             entity=Dashboard, fqn=self.entity.fullyQualifiedName | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  |         # Then fetch by ID | 
					
						
							|  |  |  |         res_id = self.metadata.get_by_id( | 
					
						
							| 
									
										
										
										
											2024-06-05 21:18:37 +02:00
										 |  |  |             entity=Dashboard, entity_id=str(res_name.id.root) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Delete | 
					
						
							| 
									
										
										
										
											2022-03-21 22:30:39 +05:30
										 |  |  |         self.metadata.delete( | 
					
						
							| 
									
										
										
										
											2024-06-05 21:18:37 +02:00
										 |  |  |             entity=Dashboard, entity_id=str(res_id.id.root), recursive=True | 
					
						
							| 
									
										
										
										
											2022-03-21 22:30:39 +05:30
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # Then we should not find it | 
					
						
							|  |  |  |         res = self.metadata.list_entities(entity=Dashboard) | 
					
						
							|  |  |  |         assert not next( | 
					
						
							| 
									
										
										
										
											2021-10-28 20:31:38 +02:00
										 |  |  |             iter( | 
					
						
							|  |  |  |                 ent | 
					
						
							|  |  |  |                 for ent in res.entities | 
					
						
							|  |  |  |                 if ent.fullyQualifiedName == self.entity.fullyQualifiedName | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             None, | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2022-01-07 10:37:56 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_list_versions(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         test list dashboard entity versions | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         self.metadata.create_or_update(data=self.create) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Find by name | 
					
						
							|  |  |  |         res_name = self.metadata.get_by_name( | 
					
						
							| 
									
										
										
										
											2022-05-26 21:00:18 +02:00
										 |  |  |             entity=Dashboard, fqn=self.entity.fullyQualifiedName | 
					
						
							| 
									
										
										
										
											2022-01-07 10:37:56 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-10 09:07:39 +01:00
										 |  |  |         res = self.metadata.get_list_entity_versions( | 
					
						
							| 
									
										
										
										
											2024-06-05 21:18:37 +02:00
										 |  |  |             entity=Dashboard, entity_id=res_name.id.root | 
					
						
							| 
									
										
										
										
											2022-01-10 09:07:39 +01:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2022-01-07 10:37:56 +01:00
										 |  |  |         assert res | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_get_entity_version(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         test get dashboard entity version | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         self.metadata.create_or_update(data=self.create) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Find by name | 
					
						
							|  |  |  |         res_name = self.metadata.get_by_name( | 
					
						
							| 
									
										
										
										
											2022-05-26 21:00:18 +02:00
										 |  |  |             entity=Dashboard, fqn=self.entity.fullyQualifiedName | 
					
						
							| 
									
										
										
										
											2022-01-07 10:37:56 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  |         res = self.metadata.get_entity_version( | 
					
						
							| 
									
										
										
										
											2024-06-05 21:18:37 +02:00
										 |  |  |             entity=Dashboard, entity_id=res_name.id.root, version=0.1 | 
					
						
							| 
									
										
										
										
											2022-01-07 10:37:56 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # check we get the correct version requested and the correct entity ID | 
					
						
							| 
									
										
										
										
											2024-06-05 21:18:37 +02:00
										 |  |  |         assert res.version.root == 0.1 | 
					
						
							| 
									
										
										
										
											2022-01-07 10:37:56 +01:00
										 |  |  |         assert res.id == res_name.id | 
					
						
							| 
									
										
										
										
											2022-01-10 09:07:39 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_get_entity_ref(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         test get EntityReference | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         res = self.metadata.create_or_update(data=self.create) | 
					
						
							|  |  |  |         entity_ref = self.metadata.get_entity_reference( | 
					
						
							| 
									
										
										
										
											2022-05-26 21:00:18 +02:00
										 |  |  |             entity=Dashboard, fqn=res.fullyQualifiedName | 
					
						
							| 
									
										
										
										
											2022-01-10 09:07:39 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         assert res.id == entity_ref.id |