def test_update_metadata(self): args_in = [ 'update-metadata', self.repository_name, self.resource_name, '--description', 'Description of resource', '--author', 'fred', '--author-email', 'fred@here', '--version', '1.0', '--maintainer', 'Joe', '--maintainer-email', 'joe@here', ] ds_util.ds_util(args_in) updated = self.repository.get(self.resource_name) self.assertTrue(updated) self.assertEquals('Description of resource', updated.meta('description')) self.assertEquals('fred', updated.meta('author')) self.assertEquals('fred@here', updated.meta('author_email')) self.assertEquals('1.0', updated.meta('version')) self.assertEquals('Joe', updated.meta('maintainer')) self.assertEquals('joe@here', updated.meta('maintainer_email'))
def test_create_unpublished_resource_with_metadata(self): """ Simulate creating a Resource from the command-line, including all metadata options (same as `datastore-util create`), but with --no-publish. """ args_in = [ 'create', '--no-publish', '--description', 'Description of resource', '--author', 'fred', '--author-email', 'fred@here', '--version', '1.0', '--maintainer', 'Joe', '--maintainer-email', 'joe@here', 'bdkd-datastore-test', 'my_resource', self.filepath ] ds_util.ds_util(args_in) self._check_bucket_count('', 2) # Ensure metadata is stored added = self.repository.get('my_resource') self.assertTrue(added) self.assertEquals('Description of resource', added.meta('description')) self.assertEquals('fred', added.meta('author')) self.assertEquals('fred@here', added.meta('author_email')) self.assertEquals('1.0', added.meta('version')) self.assertEquals('Joe', added.meta('maintainer')) self.assertEquals('joe@here', added.meta('maintainer_email'))
def test_create_published_resource_with_complex_metadata(self): """ Supply metadata both via command line and via metadata file. """ args_in = [ 'create', '--description', 'Description of resource', '--version', '1.0', '--maintainer', 'Joe', '--maintainer-email', 'joe@here', '--metadata-file', self.metadatafile, 'bdkd-datastore-test', 'my_resource', self.filepath ] ds_util.ds_util(args_in) # Ensure mixing metadata args and file metadata works as expected added = self.repository.get('my_resource') self.assertTrue(added) self.assertEquals('Description of resource', added.meta('description')) self.assertEquals('Jane Researcher', added.meta('author')) self.assertEquals('*****@*****.**', added.meta('author_email')) self.assertEquals('1.0', added.meta('version')) self.assertEquals('Joe', added.meta('maintainer')) self.assertEquals('joe@here', added.meta('maintainer_email'))
def test_create_resource_with_no_files(self): """ Simulate creating a Resource from the command-line, with no files provided """ args_in = [ 'create', '--description', 'Description of resource', '--author', 'fred', '--author-email', 'fred@here', '--version', '1.0', '--maintainer', 'Joe', '--maintainer-email', 'joe@here', 'bdkd-datastore-test', 'my_resource', ] ds_util.ds_util(args_in) self._check_bucket_count('', 1) # Ensure no files stored added = self.repository.get('my_resource') self.assertTrue(added) self.assertEquals(added.files, [])
def test_create_resource(self): """ Simulate creating a Resource from the command-line, with only a basic set of options (same as `datastore-util create`) and no metadata. """ args_in = [ 'create', '--no-publish', 'bdkd-datastore-test', 'my_resource', self.filepath ] ds_util.ds_util(args_in) self._check_bucket_count('', 2)
def test_create_resource_without_metadata_fails(self): """ Supply some metadata but not all mandatory fields in published mode. """ args_in = [ 'create', '--description', 'Description of resource', '--version', '1.0', '--maintainer', 'Joe', '--maintainer-email', 'joe@here', 'bdkd-datastore-test', 'my_resource', self.filepath ] with self.assertRaises(ValueError): ds_util.ds_util(args_in)
def test_create_resource_with_metadata(self): """ Simulate creating a Resource from the command-line, including all metadata options (same as `datastore-util create`). """ args_in = [ 'create', '--description', 'Description of resource', '--author', 'fred', '--author-email', 'fred@here', '--version', '1.0', '--maintainer', 'Joe', '--maintainer-email', 'joe@here', 'bdkd-datastore-test', 'my_resource', self.filepath ] ds_util.ds_util(args_in) self._check_bucket_count('', 2)
def test_change_updated_metadata(self): # Set description to something args_in = [ 'update-metadata', self.repository_name, self.resource_name, '--description', 'Description of resource', ] ds_util.ds_util(args_in) updated = self.repository.get(self.resource_name) self.assertEquals('Description of resource', updated.meta('description')) # Then check that it is altered subsequently args_in = [ 'update-metadata', self.repository_name, self.resource_name, '--description', 'Altered description', ] ds_util.ds_util(args_in) updated = self.repository.get(self.resource_name) self.assertEquals('Altered description', updated.meta('description'))
def test_create_duplicate_resource(self): """ Adding a resource of the same name (duplicate) should fail with a ValueError, unless the user provides the '--force' flag. """ args_in = [ 'create', '--no-publish', 'bdkd-datastore-test', 'my_resource', self.filepath ] ds_util.ds_util(args_in) self._check_bucket_count('', 2) # Again: error (already exists) with self.assertRaises(ValueError): ds_util.ds_util(args_in) # Do it properly args_in.append('--force') try: ds_util.ds_util(args_in) except ValueError: self.fail("Flag '--force' should allow overwrite of resource.")