コード例 #1
0
    def test_update_metadata_records_private_cascade_2(self):
        """
        Test that the visibility of a metadata record is determined by that of its workflow state.
        """
        metadata_record = ckanext_factories.MetadataRecord()
        workflow_state = ckanext_factories.WorkflowState(
            metadata_records_private=True)
        call_action('metadata_record_workflow_state_override',
                    context={'user': self.normal_user['name']},
                    id=metadata_record['id'],
                    workflow_state_id=workflow_state['id'])
        assert_package_has_extra(metadata_record['id'], 'workflow_state_id',
                                 workflow_state['id'])
        assert_package_has_attribute(metadata_record['id'], 'private', True)

        input_dict = {
            'id': workflow_state['id'],
            'revert_state_id': '',
            'metadata_records_private': False,
            'workflow_rules_json': '{}',
        }
        result, obj = self.test_action('workflow_state_update', **input_dict)
        assert_object_matches_dict(obj, input_dict)
        assert_package_has_extra(metadata_record['id'], 'workflow_state_id',
                                 workflow_state['id'])
        assert_package_has_attribute(metadata_record['id'], 'private', False)
コード例 #2
0
 def test_create_valid_initial_transition(self):
     workflow_state = ckanext_factories.WorkflowState()
     input_dict = {
         'from_state_id': '',
         'to_state_id': workflow_state['id'],
     }
     result, obj = self.test_action('workflow_transition_create',
                                    **input_dict)
     assert_object_matches_dict(obj, input_dict)
コード例 #3
0
 def test_create_valid(self):
     input_dict = {
         'name':
         'test-workflow-annotation',
         'attributes':
         '{ "attr1": "string", "attr2": "number", "attr3": "boolean" }',
     }
     result, obj = self.test_action('workflow_annotation_create',
                                    **input_dict)
     assert_object_matches_dict(obj, input_dict)
コード例 #4
0
 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)
コード例 #5
0
 def test_create_valid_with_revert(self):
     workflow_state = ckanext_factories.WorkflowState()
     input_dict = {
         'name': 'test-workflow-state',
         'revert_state_id': workflow_state['id'],
         'metadata_records_private': False,
         'workflow_rules_json': '{ "testkey": "testvalue" }',
     }
     result, obj = self.test_action('workflow_state_create', **input_dict)
     assert_object_matches_dict(obj, input_dict)
コード例 #6
0
 def test_create_valid(self):
     input_dict = {
         'name': 'test-infrastructure',
         'title': 'Test Infrastructure',
         'description': 'This is a test infrastructure',
     }
     result, obj = self.test_action('infrastructure_create', **input_dict)
     assert obj.type == 'infrastructure'
     assert obj.is_organization == False
     assert_object_matches_dict(obj, input_dict)
コード例 #7
0
 def test_create_valid(self):
     input_dict = {
         'name': 'test-organization',
         'title': 'Test Organization',
         'description': 'This is a test organization',
     }
     result, obj = self.test_action('organization_create', **input_dict)
     assert obj.type == 'organization'
     assert obj.is_organization == True
     assert_object_matches_dict(obj, input_dict)
コード例 #8
0
 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)
コード例 #9
0
 def test_create_valid_setname(self):
     input_dict = {
         'name': 'test-metadata-standard',
         'standard_name': 'DataCite',
         'standard_version': '1.0',
         'parent_standard_id': '',
         'metadata_template_json': '{}',
     }
     result, obj = self.test_action('metadata_standard_create',
                                    **input_dict)
     assert_object_matches_dict(obj, input_dict)
コード例 #10
0
 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)
コード例 #11
0
 def test_create_valid(self):
     input_dict = {
         'name': 'test-workflow-state',
         'title': 'Test Workflow State',
         'description': 'This is a test workflow state',
         'revert_state_id': '',
         'metadata_records_private': True,
         'workflow_rules_json': '{ "testkey": "testvalue" }',
     }
     result, obj = self.test_action('workflow_state_create', **input_dict)
     assert_object_matches_dict(obj, input_dict)
コード例 #12
0
 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)
コード例 #13
0
 def test_update_valid(self):
     metadata_json_attr_map = ckanext_factories.MetadataJSONAttrMap()
     input_dict = {
         'id': metadata_json_attr_map['id'],
         'json_path': '/c/d',
         'record_attr': 'notes',
         'is_key': False,
     }
     result, obj = self.test_action('metadata_json_attr_map_update',
                                    **input_dict)
     assert_object_matches_dict(obj, input_dict)
コード例 #14
0
 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)
コード例 #15
0
 def test_update_valid(self):
     infrastructure = self._generate_infrastructure()
     input_dict = {
         'id': infrastructure['id'],
         'name': 'updated-test-infrastructure',
         'title': 'Updated Test Infrastructure',
         'description': 'Updated test infrastructure',
     }
     result, obj = self.test_action('infrastructure_update', **input_dict)
     assert obj.type == 'infrastructure'
     assert obj.is_organization == False
     assert_object_matches_dict(obj, input_dict)
コード例 #16
0
 def test_update_valid_change_revert_1(self):
     workflow_state1 = ckanext_factories.WorkflowState()
     workflow_state2 = ckanext_factories.WorkflowState()
     input_dict = {
         'id': workflow_state1['id'],
         'name': workflow_state1['name'],
         'revert_state_id': workflow_state2['id'],
         'metadata_records_private': True,
         'workflow_rules_json': '{}',
     }
     result, obj = self.test_action('workflow_state_update', **input_dict)
     assert_object_matches_dict(obj, input_dict)
コード例 #17
0
 def test_update_valid_partial(self):
     workflow_annotation = ckanext_factories.WorkflowAnnotation()
     input_dict = {
         'id':
         workflow_annotation['id'],
         'attributes':
         '{ "attr1": "string", "attr2": "number", "attr3": "boolean" }',
     }
     result, obj = self.test_action('workflow_annotation_update',
                                    **input_dict)
     assert_object_matches_dict(obj, input_dict)
     assert obj.name == workflow_annotation['name']
コード例 #18
0
 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'], '', '')
コード例 #19
0
 def test_update_valid_partial(self):
     metadata_schema = ckanext_factories.MetadataSchema()
     input_dict = {
         'id': metadata_schema['id'],
         'name': 'updated-test-metadata-schema',
         'metadata_standard_id': metadata_schema['metadata_standard_id'],
         'organization_id': '',
         'infrastructure_id': '',
         'schema_json': '{ "testkey": "newtestvalue" }',
     }
     result, obj = self.test_action('metadata_schema_update', **input_dict)
     assert_object_matches_dict(obj, input_dict)
     assert obj.description == metadata_schema['description']
コード例 #20
0
 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)
コード例 #21
0
 def test_create_valid(self):
     input_dict = {
         'description': 'This is a test metadata standard',
         'standard_name': 'DataCite',
         'standard_version': '1.0',
         'parent_standard_id': '',
         'metadata_template_json': '{ "testkey": "testvalue" }',
     }
     result, obj = self.test_action('metadata_standard_create',
                                    **input_dict)
     assert_object_matches_dict(obj, input_dict)
     assert obj.name == generate_name(input_dict['standard_name'],
                                      input_dict['standard_version'])
コード例 #22
0
 def test_update_valid(self):
     workflow_state = ckanext_factories.WorkflowState()
     input_dict = {
         'id': workflow_state['id'],
         'name': 'updated-test-workflow-state',
         'title': 'Updated Test Workflow State',
         'description': 'Updated test workflow state description',
         'revert_state_id': '',
         'metadata_records_private': False,
         'workflow_rules_json': '{ "testkey": "newtestvalue" }',
     }
     result, obj = self.test_action('workflow_state_update', **input_dict)
     assert_object_matches_dict(obj, input_dict)
コード例 #23
0
 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)
コード例 #24
0
 def test_create_valid_same_standard_different_organization(self):
     organization1 = ckan_factories.Organization()
     organization2 = ckan_factories.Organization()
     metadata_schema = ckanext_factories.MetadataSchema(
         organization_id=organization1['id'])
     input_dict = {
         'metadata_standard_id': metadata_schema['metadata_standard_id'],
         'organization_id': organization2['id'],
         'infrastructure_id': '',
         'schema_json': '{}',
     }
     result, obj = self.test_action('metadata_schema_create', **input_dict)
     assert_object_matches_dict(obj, input_dict)
コード例 #25
0
    def test_delete_with_revert_references(self):
        workflow_state1 = ckanext_factories.WorkflowState()
        workflow_state2 = ckanext_factories.WorkflowState(
            revert_state_id=workflow_state1['name'])
        assert workflow_state2['revert_state_id'] == workflow_state1['id']

        self.test_action('workflow_state_delete', id=workflow_state1['id'])
        workflow_state2['revert_state_id'] = None
        del workflow_state2['revision_id']
        del workflow_state2['display_name']
        assert_object_matches_dict(ckanext_model.WorkflowState.get(
            workflow_state2['id']),
                                   workflow_state2,
                                   json_values=('workflow_rules_json', ))
コード例 #26
0
 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']
コード例 #27
0
 def test_create_valid_byname(self):
     workflow_state1 = ckanext_factories.WorkflowState()
     workflow_state2 = ckanext_factories.WorkflowState()
     input_dict = {
         'from_state_id': workflow_state1['name'],
         'to_state_id': workflow_state2['name'],
     }
     result, obj = self.test_action('workflow_transition_create',
                                    **input_dict)
     input_dict = {
         'from_state_id': workflow_state1['id'],
         'to_state_id': workflow_state2['id'],
     }
     assert_object_matches_dict(obj, input_dict)
コード例 #28
0
    def test_update_valid(self):
        infrastructure1 = self._generate_infrastructure()
        infrastructure2 = self._generate_infrastructure()
        metadata_collection = ckanext_factories.MetadataCollection(
            infrastructures=[{
                'id': infrastructure1['id']
            }, {
                'id': infrastructure2['id']
            }])

        new_infrastructure = self._generate_infrastructure()
        input_dict = {
            'id':
            metadata_collection['id'],
            'name':
            'updated-test-metadata-collection',
            'title':
            'Updated Test Metadata Collection',
            'description':
            'Updated test metadata collection',
            'organization_id':
            metadata_collection['organization_id'],
            'doi_collection':
            'updated.test.doi',
            'infrastructures': [
                {
                    'id': infrastructure2['name']
                },
                {
                    'id': new_infrastructure['name']
                },
            ],
        }
        result, obj = self.test_action('metadata_collection_update',
                                       **input_dict)
        assert obj.type == 'metadata_collection'
        assert obj.is_organization == False
        del input_dict['organization_id']
        del input_dict['doi_collection']
        del input_dict['infrastructures']
        assert_object_matches_dict(obj, input_dict)
        assert_group_has_extra(obj.id, 'organization_id',
                               metadata_collection['organization_id'])
        assert_group_has_extra(obj.id, 'doi_collection', 'UPDATED.TEST.DOI')
        assert_group_has_member(infrastructure1['id'],
                                obj.id,
                                'group',
                                state='deleted')
        assert_group_has_member(infrastructure2['id'], obj.id, 'group')
        assert_group_has_member(new_infrastructure['id'], obj.id, 'group')
コード例 #29
0
 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'])
コード例 #30
0
    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', ))