def create_dataset_structure(dbuuid, auth, aristotleurl, verbose): """ Returns the metadata schema for the given dbuuid """ datasetResponse = utils.request_get( auth=auth, payload={ 'type': 'aristotle_dse:distribution', 'dq': 'dataset__uuid:'+dbuuid }, url=aristotleurl) if datasetResponse.status_code != 200: raise ValueError('Invalid uuid.') dataset = {} for dist in datasetResponse.json()["results"]: dist_data = utils.request_get( auth=auth, uuid=dist['uuid'], url=aristotleurl ) dist_slots_name = '' for value in dist_data.json()['slots']: if value['name'] == 'distribution': dist_slots_name = value['value'] dataset[dist_slots_name] = {'uuid': dist['uuid'], 'tables': {}} for data_elements in dist_data.json()['fields']['data_elements']: logical_path = data_elements['logical_path'] dataset[dist_slots_name]['tables'][logical_path] = ( data_elements["data_element"] ) return dataset
def execute_saved_req_check(self, result_data): runner = CliRunner() aristotleurl = 'http://0.0.0.0:8080' result = runner.invoke(execute_saved_req, [ '--auth', self.auth, '--file', './tests/data_result.json', '--aristotleurl', aristotleurl ], '--verbose', False) datasetResponse = utils.request_get(auth=self.auth, payload={ 'type': 'aristotle_dse:distribution', 'dq': 'dataset__uuid:' + self.dataset_id }, url=aristotleurl) # Collect all data from server dataset = {} for dist in datasetResponse.json()["results"]: dist_data = utils.request_get(auth=self.auth, uuid=dist['uuid'], url=aristotleurl) dataset[dist['name']] = { 'slots': dist_data.json()['slots'], 'columns': {} } for data_elements in dist_data.json()['fields']['data_elements']: data_element_data = utils.request_get( auth=self.auth, uuid=data_elements["data_element"], url=aristotleurl) value_domain_data = utils.request_get( auth=self.auth, uuid=data_element_data.json()['fields']['valueDomain'], url=aristotleurl) dataset[dist['name']]['columns'][ data_element_data.json()['fields'] ['name']] = value_domain_data.json()['fields']['name'] # Match server data and json data for dist_json in result_data: distribution_name = dist_json['fields']['name'] self.assertTrue(distribution_name in dataset) for slot in dist_json['slots']: slot['value'] = str(slot['value']) self.assertEqual(dist_json['slots'], dataset[distribution_name]['slots']) for data_element_json in dist_json['fields']['data_elements']: data_element_name = data_element_json['data_element'][ 'fields']['name'] self.assertTrue( data_element_name in dataset[distribution_name]['columns']) self.assertEqual( data_element_json['data_element']['fields']['valueDomain'] ['fields']['name'], dataset[distribution_name]['columns'][data_element_name]) result = runner.invoke(execute_saved_req, [ '--auth', self.auth, '--file', './tests/data_result.json', '--aristotleurl', aristotleurl, '--dbuuid', self.dataset_id ], '--verbose', False)
def test_request_get_no_result_case(self): responses.add( responses.GET, 'http://127.0.0.1:8080/api/v3/metadata/123', json={'count': 0,'results':[]}, status=200 ) result = utils.request_get( "testAuth", payload={}, uuid = '123' ) self.assertEqual({'count': 0,'results':[]},result.json())
def test_request_get_result_case(self): responses.add( responses.GET, 'http://127.0.0.1:8080/api/v3/metadata/123', json={ 'count': 2, 'results':[{'uuid':'result1'},{'uuid':'result2'}] }, status=200) result = utils.request_get( "qweqw", payload={}, uuid = '123' ) self.assertEqual({ 'count': 2, 'results':[{'uuid':'result1'},{'uuid':'result2'}] },result.json())
def get_value_domain(value_domain_payload, auth, aristotleurl, verbose): """ Get value domain id. Either from existing or by creating new """ valueDomainResponse = utils.request_get( auth=auth, payload={ 'name__icontains': value_domain_payload['fields']['name'], 'type': 'aristotle_mdr:valuedomain' }, url=aristotleurl) if valueDomainResponse.json()['count'] > 0: value_domain_id = valueDomainResponse.json()['results'][0]['uuid'] else: value_domain_id = False if not value_domain_id: value_domain_id = utils.request_post( auth=auth, payload=value_domain_payload, url=aristotleurl, verbose=verbose ) return value_domain_id
def test_request_get_no_result_case(self): result = utils.request_get("testAuth", payload={}, uuid='', url='http://0.0.0.0:8080') self.assertEqual({'detail': 'Invalid token.'}, result.json())