def test_update_invalid_deleted_parent(self): metadata_standard1 = ckanext_factories.MetadataStandard() metadata_standard2 = ckanext_factories.MetadataStandard() call_action('metadata_standard_delete', id=metadata_standard1['id']) result, obj = self.test_action( 'metadata_standard_update', should_error=True, id=metadata_standard2['id'], parent_standard_id=metadata_standard1['id']) assert_error(result, 'parent_standard_id', 'Not found: Metadata Standard')
def test_update_invalid_duplicate_name(self): metadata_standard1 = ckanext_factories.MetadataStandard() metadata_standard2 = ckanext_factories.MetadataStandard() input_dict = { 'id': metadata_standard1['id'], 'name': metadata_standard2['name'], } result, obj = self.test_action('metadata_standard_update', should_error=True, **input_dict) assert_error(result, 'name', 'Duplicate name: Metadata Standard')
def test_update_invalid_duplicate(self): metadata_standard1 = ckanext_factories.MetadataStandard() metadata_standard2 = ckanext_factories.MetadataStandard() input_dict = { 'id': metadata_standard1['id'], 'standard_name': metadata_standard2['standard_name'], 'standard_version': metadata_standard2['standard_version'], } result, obj = self.test_action('metadata_standard_update', should_error=True, **input_dict) assert_error(result, '__after', 'Unique constraint violation')
def test_update_valid_change_parent_1(self): metadata_standard1 = ckanext_factories.MetadataStandard() metadata_standard2 = ckanext_factories.MetadataStandard() input_dict = { 'id': metadata_standard1['id'], 'standard_name': metadata_standard1['standard_name'], 'standard_version': metadata_standard1['standard_version'], 'parent_standard_id': metadata_standard2['id'], 'metadata_template_json': '{}', } result, obj = self.test_action('metadata_standard_update', **input_dict) assert_object_matches_dict(obj, input_dict)
def test_update_invalid_circular_ref_1(self): metadata_standard1 = ckanext_factories.MetadataStandard() metadata_standard2 = ckanext_factories.MetadataStandard( parent_standard_id=metadata_standard1['id']) input_dict = { 'id': metadata_standard1['id'], 'parent_standard_id': metadata_standard2['id'], } result, obj = self.test_action('metadata_standard_update', should_error=True, **input_dict) assert_error(result, 'parent_standard_id', 'Loop in metadata standard hierarchy')
def test_delete_with_child_standards(self): metadata_standard1 = ckanext_factories.MetadataStandard() metadata_standard2 = ckanext_factories.MetadataStandard( parent_standard_id=metadata_standard1['id']) assert metadata_standard2['parent_standard_id'] == metadata_standard1[ 'id'] self.test_action('metadata_standard_delete', id=metadata_standard1['id']) metadata_standard2['parent_standard_id'] = None del metadata_standard2['revision_id'] del metadata_standard2['display_name'] assert_object_matches_dict(ckanext_model.MetadataStandard.get( metadata_standard2['id']), metadata_standard2, json_values=('metadata_template_json', ))
def test_update_invalid_missing_values(self): metadata_standard = ckanext_factories.MetadataStandard() result, obj = self.test_action('metadata_standard_update', should_error=True, id=metadata_standard['id'], standard_name='', metadata_template_json='') assert_error(result, 'standard_name', 'Missing value')
def test_update_invalid_bad_parent(self): metadata_standard = ckanext_factories.MetadataStandard() result, obj = self.test_action('metadata_standard_update', should_error=True, id=metadata_standard['id'], parent_standard_id='foo') assert_error(result, 'parent_standard_id', 'Not found: Metadata Standard')
def test_update_invalid_missing_params(self): metadata_standard = ckanext_factories.MetadataStandard() result, obj = self.test_action('metadata_standard_update', should_error=True, id=metadata_standard['id']) assert_error(result, 'standard_name', 'Missing parameter') assert_error(result, 'standard_version', 'Missing parameter') assert_error(result, 'parent_standard_id', 'Missing parameter') assert_error(result, 'metadata_template_json', 'Missing parameter')
def test_create_invalid_deleted_metadata_standard(self): metadata_standard = ckanext_factories.MetadataStandard() call_action('metadata_standard_delete', id=metadata_standard['id']) result, obj = self.test_action( 'metadata_json_attr_map_create', should_error=True, metadata_standard_id=metadata_standard['id']) assert_error(result, 'metadata_standard_id', 'Not found: Metadata Standard')
def test_create_valid_datacite(self): metadata_standard = ckanext_factories.MetadataStandard() input_dict = { 'metadata_standard_id': metadata_standard['id'], 'organization_id': '', 'infrastructure_id': '', 'schema_json': load_example('saeon_odp_4.2_schema.json'), } result, obj = self.test_action('metadata_schema_create', **input_dict) assert_object_matches_dict(obj, input_dict)
def test_create_valid_same_version_different_name(self): metadata_standard = ckanext_factories.MetadataStandard() input_dict = { 'standard_name': metadata_standard['standard_name'] + '_foo', 'standard_version': metadata_standard['standard_version'], 'parent_standard_id': '', 'metadata_template_json': '{}', } result, obj = self.test_action('metadata_standard_create', **input_dict) assert_object_matches_dict(obj, input_dict)
def test_update_invalid_self_parent(self): metadata_standard = ckanext_factories.MetadataStandard() input_dict = { 'id': metadata_standard['id'], 'parent_standard_id': metadata_standard['id'], } result, obj = self.test_action('metadata_standard_update', should_error=True, **input_dict) assert_error(result, 'parent_standard_id', 'Loop in metadata standard hierarchy')
def test_create_valid_with_parent(self): metadata_standard = ckanext_factories.MetadataStandard() input_dict = { 'standard_name': 'DataCite', 'standard_version': '1.0', 'parent_standard_id': metadata_standard['id'], 'metadata_template_json': '{}', } result, obj = self.test_action('metadata_standard_create', **input_dict) assert_object_matches_dict(obj, input_dict)
def test_create_valid_setname(self): metadata_standard = ckanext_factories.MetadataStandard() input_dict = { 'name': 'test-metadata-schema', 'metadata_standard_id': metadata_standard['id'], 'organization_id': '', 'infrastructure_id': '', 'schema_json': '{ "testkey": "testvalue" }', } result, obj = self.test_action('metadata_schema_create', **input_dict) assert_object_matches_dict(obj, input_dict)
def test_create_invalid_json_path(self): metadata_standard = ckanext_factories.MetadataStandard( metadata_template_json=load_example('saeon_odp_4.2_record.json')) result, obj = self.test_action( 'metadata_json_attr_map_create', should_error=True, metadata_standard_id=metadata_standard['id'], json_path='/identifier/foo') assert_error( result, '__after', 'The supplied JSON path is not valid for the metadata template of the supplied metadata standard' )
def test_create_valid(self): metadata_standard = ckanext_factories.MetadataStandard( metadata_template_json=load_example('saeon_odp_4.2_record.json')) input_dict = { 'json_path': '/identifier/identifier', 'record_attr': 'name', 'is_key': True, 'metadata_standard_id': metadata_standard['id'], } result, obj = self.test_action('metadata_json_attr_map_create', **input_dict) assert_object_matches_dict(obj, input_dict)
def test_create_valid(self): metadata_standard = ckanext_factories.MetadataStandard() input_dict = { 'description': 'This is a test metadata schema', 'metadata_standard_id': metadata_standard['id'], 'organization_id': '', 'infrastructure_id': '', 'schema_json': '{ "testkey": "testvalue" }', } result, obj = self.test_action('metadata_schema_create', **input_dict) assert_object_matches_dict(obj, input_dict) assert obj.name == generate_name(metadata_standard['name'], '', '')
def test_create_valid_same_infrastructure_different_standard(self): infrastructure = ckanext_factories.Infrastructure() metadata_schema = ckanext_factories.MetadataSchema( infrastructure_id=infrastructure['id']) metadata_standard = ckanext_factories.MetadataStandard() input_dict = { 'metadata_standard_id': metadata_standard['id'], 'organization_id': '', 'infrastructure_id': metadata_schema['infrastructure_id'], 'schema_json': '{}', } result, obj = self.test_action('metadata_schema_create', **input_dict) assert_object_matches_dict(obj, input_dict)
def test_create_no_invalidate_records_different_standard(self): """ Create a schema with a different standard to that of an existing validated metadata record. This should not invalidate the record. """ metadata_record, _, _ = self._generate_and_validate_metadata_record() call_action( 'metadata_schema_create', metadata_standard_id=ckanext_factories.MetadataStandard()['id'], organization_id='', infrastructure_id='', schema_json='{}') assert_package_has_extra(metadata_record['id'], 'validated', True)
def test_update_valid_partial(self): metadata_standard = ckanext_factories.MetadataStandard() input_dict = { 'id': metadata_standard['id'], 'name': 'updated-test-metadata-standard', 'standard_name': metadata_standard['standard_name'], 'standard_version': metadata_standard['standard_name'], 'parent_standard_id': '', 'metadata_template_json': '{}', } result, obj = self.test_action('metadata_standard_update', **input_dict) assert_object_matches_dict(obj, input_dict) assert obj.description == metadata_standard['description']
def test_create_valid_with_infrastructure_byname(self): metadata_standard = ckanext_factories.MetadataStandard() infrastructure = ckanext_factories.Infrastructure() input_dict = { 'metadata_standard_id': metadata_standard['name'], 'organization_id': '', 'infrastructure_id': infrastructure['name'], 'schema_json': '{}', } result, obj = self.test_action('metadata_schema_create', **input_dict) assert obj.metadata_standard_id == metadata_standard['id'] assert obj.organization_id is None assert obj.infrastructure_id == infrastructure['id'] assert obj.name == generate_name(metadata_standard['name'], '', infrastructure['name'])
def test_update_valid(self): metadata_standard = ckanext_factories.MetadataStandard() input_dict = { 'id': metadata_standard['id'], 'description': 'Updated test metadata standard description', 'standard_name': 'Updated Standard Name', 'standard_version': 'v99', 'parent_standard_id': '', 'metadata_template_json': '{ "newtestkey": "newtestvalue" }', } result, obj = self.test_action('metadata_standard_update', **input_dict) assert_object_matches_dict(obj, input_dict) assert obj.name == generate_name(input_dict['standard_name'], input_dict['standard_version'])
def test_create_invalid_deleted_references(self): metadata_standard = ckanext_factories.MetadataStandard() organization = ckan_factories.Organization() infrastructure = ckanext_factories.Infrastructure() call_action('metadata_standard_delete', id=metadata_standard['id']) call_action('organization_delete', id=organization['id']) call_action('infrastructure_delete', id=infrastructure['id']) result, obj = self.test_action( 'metadata_schema_create', should_error=True, metadata_standard_id=metadata_standard['id'], organization_id=organization['id'], infrastructure_id=infrastructure['id']) assert_error(result, 'metadata_standard_id', 'Not found: Metadata Standard') assert_error(result, 'organization_id', 'Not found: Organization') assert_error(result, 'infrastructure_id', 'Not found: Infrastructure')
def test_delete_with_dependencies(self): metadata_standard = ckanext_factories.MetadataStandard() metadata_schema = ckanext_factories.MetadataSchema( metadata_standard_id=metadata_standard['id']) metadata_record = ckanext_factories.MetadataRecord( metadata_standard_id=metadata_standard['id']) result, obj = self.test_action('metadata_standard_delete', should_error=True, id=metadata_standard['id']) assert_error(result, 'message', 'Metadata standard has dependent metadata records') assert ckanext_model.MetadataSchema.get( metadata_schema['id']).state == 'active' call_action('metadata_record_delete', id=metadata_record['id']) self.test_action('metadata_standard_delete', id=metadata_standard['id']) assert ckanext_model.MetadataSchema.get( metadata_schema['id']).state == 'deleted'
def test_create_invalid_duplicate_name(self): metadata_standard = ckanext_factories.MetadataStandard() result, obj = self.test_action('metadata_standard_create', should_error=True, name=metadata_standard['name']) assert_error(result, 'name', 'Duplicate name: Metadata Standard')
def test_delete_valid(self): metadata_standard = ckanext_factories.MetadataStandard() self.test_action('metadata_standard_delete', id=metadata_standard['id'])