def test_update_bag_remote(self): logger.info(self.getTestHeader('update bag add remote file manifest')) try: bag = bdb.make_bag(self.test_bag_dir, update=True, remote_file_manifest=ospj( self.test_config_dir, 'test-fetch-manifest.json')) output = self.stream.getvalue() self.assertIsInstance(bag, bagit.Bag) self.assertExpectedMessages([ 'Generating remote file references from', 'test-fetch-manifest.json' ], output) fetch_file = ospj(self.test_bag_dir, 'fetch.txt') self.assertTrue(ospif(fetch_file)) with open(fetch_file) as ff: fetch_txt = ff.read() self.assertIn( 'https://raw.githubusercontent.com/ini-bdds/bdbag/master/profiles/bdbag-profile.json' '\t723\tdata/bdbag-profile.json', fetch_txt) self.assertIn( 'ark:/88120/r8059v\t632860\tdata/minid_v0.1_Nov_2015.pdf', fetch_txt) except Exception as e: self.fail(bdbag.get_named_exception(e))
def test_archive_bag_tar(self): logger.info(self.getTestHeader('archive bag tar format')) try: archive_file = bdb.archive_bag(self.test_bag_dir, 'tar') self.assertTrue(ospif(archive_file)) except Exception as e: self.fail(bdbag.get_named_exception(e))
def test_archive_bag_tgz(self): logger.info(self.getTestHeader('archive bag tgz format')) try: archive_file = bdb.archive_bag(self.test_bag_dir, 'tgz') self.assertTrue(ospif(archive_file)) except Exception as e: self.fail(get_typed_exception(e))
def _test_bag_with_remote_file_manifest(self, update=False): try: bag_dir = self.test_data_dir if not update else self.test_bag_dir bag = bdb.make_bag(bag_dir, algs=["md5", "sha1", "sha256", "sha512"], update=update, remote_file_manifest=ospj( self.test_config_dir, 'test-fetch-manifest.json')) output = self.stream.getvalue() self.assertIsInstance(bag, bdbagit.BDBag) self.assertExpectedMessages([ 'Generating remote file references from', 'test-fetch-manifest.json' ], output) fetch_file = ospj(bag_dir, 'fetch.txt') self.assertTrue(ospif(fetch_file)) with open(fetch_file) as ff: fetch_txt = ff.read() self.assertIn( 'https://raw.githubusercontent.com/fair-research/bdbag/master/test/test-data/test-http/' 'test-fetch-http.txt\t201\tdata/test-fetch-http.txt', fetch_txt) self.assertIn( 'ark:/57799/b9dd5t\t223\tdata/test-fetch-identifier.txt', fetch_txt) bdb.validate_bag_structure(bag_dir, True) except Exception as e: self.fail(bdbag.get_typed_exception(e))
def test_archive_bag_tar_with_trailing_slash(self): logger.info(self.getTestHeader('archive bag tar format')) try: archive_file = bdb.archive_bag(self.test_bag_dir + os.sep, 'tar') self.assertTrue(ospif(archive_file)) except Exception as e: self.fail(get_typed_exception(e))
def test_create_bag_with_config(self): logger.info(self.getTestHeader('create bag with config')) try: bag = bdb.make_bag(self.test_data_dir, config_file=(ospj(self.test_config_dir, 'test-config.json'))) self.assertIsInstance(bag, bagit.Bag) self.assertFalse( ospif(ospj(self.test_data_dir, 'manifest-sha1.txt'))) self.assertFalse( ospif(ospj(self.test_data_dir, 'manifest-sha256.txt'))) self.assertFalse( ospif(ospj(self.test_data_dir, 'manifest-sha512.txt'))) self.assertFalse( ospif(ospj(self.test_data_dir, 'tagmanifest-sha1.txt'))) self.assertFalse( ospif(ospj(self.test_data_dir, 'tagmanifest-sha256.txt'))) self.assertFalse( ospif(ospj(self.test_data_dir, 'tagmanifest-sha512.txt'))) baginfo = ospj(self.test_data_dir, 'bag-info.txt') with open(baginfo) as bi: baginfo_txt = bi.read() self.assertIn('Contact-Name: bdbag test', baginfo_txt) except Exception as e: self.fail(bdbag.get_named_exception(e))
def _test_resolve_fetch_http_with_filter(self, expr, files=list(frozenset())): logger.info( self.getTestHeader( 'test resolve fetch http with filter expression "%s"' % expr)) try: bdb.resolve_fetch(self.test_bag_fetch_http_dir, filter_expr=expr) for test_file in files: self.assertTrue( ospif(ospj(self.test_bag_fetch_http_dir, test_file))) except Exception as e: self.fail(bdbag.get_typed_exception(e))
def test_update_bag_prune(self): logger.info(self.getTestHeader('update bag prune manifests')) try: bag = bdb.make_bag(self.test_bag_dir, algs=['md5'], update=True, prune_manifests=True) self.assertIsInstance(bag, bdbagit.BDBag) self.assertFalse(ospif(ospj(self.test_bag_dir, 'manifest-sha1.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'manifest-sha256.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'manifest-sha512.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'tagmanifest-sha1.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'tagmanifest-sha256.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'tagmanifest-sha512.txt'))) except Exception as e: self.fail(get_typed_exception(e))
def test_update_bag_prune(self): logger.info(self.getTestHeader('update bag prune manifests')) try: bag = bdb.make_bag(self.test_bag_dir, algs=['md5'], update=True, prune_manifests=True) self.assertIsInstance(bag, bagit.Bag) self.assertFalse(ospif(ospj(self.test_bag_dir, 'manifest-sha1.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'manifest-sha256.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'manifest-sha512.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'tagmanifest-sha1.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'tagmanifest-sha256.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'tagmanifest-sha512.txt'))) except Exception as e: self.fail(bdbag.get_named_exception(e))
def test_update_bag_remote(self): logger.info(self.getTestHeader('update bag add remote file manifest')) try: bag = bdb.make_bag(self.test_bag_dir, update=True, remote_file_manifest=ospj(self.test_config_dir, 'test-fetch-manifest.json')) output = self.stream.getvalue() self.assertIsInstance(bag, bagit.Bag) self.assertExpectedMessages(['Generating remote file references from', 'test-fetch-manifest.json'], output) fetch_file = ospj(self.test_bag_dir, 'fetch.txt') self.assertTrue(ospif(fetch_file)) with open(fetch_file) as ff: fetch_txt = ff.read() self.assertIn( 'https://raw.githubusercontent.com/ini-bdds/bdbag/master/profiles/bdbag-profile.json' '\t723\tdata/bdbag-profile.json', fetch_txt) self.assertIn( 'ark:/88120/r8059v\t632860\tdata/minid_v0.1_Nov_2015.pdf', fetch_txt) except Exception as e: self.fail(bdbag.get_named_exception(e))
def test_create_bag_with_config(self): logger.info(self.getTestHeader('create bag with config')) try: bag = bdb.make_bag(self.test_data_dir, config_file=(ospj(self.test_config_dir, 'test-config.json'))) self.assertIsInstance(bag, bagit.Bag) self.assertFalse(ospif(ospj(self.test_data_dir, 'manifest-sha1.txt'))) self.assertFalse(ospif(ospj(self.test_data_dir, 'manifest-sha256.txt'))) self.assertFalse(ospif(ospj(self.test_data_dir, 'manifest-sha512.txt'))) self.assertFalse(ospif(ospj(self.test_data_dir, 'tagmanifest-sha1.txt'))) self.assertFalse(ospif(ospj(self.test_data_dir, 'tagmanifest-sha256.txt'))) self.assertFalse(ospif(ospj(self.test_data_dir, 'tagmanifest-sha512.txt'))) baginfo = ospj(self.test_data_dir, 'bag-info.txt') with open(baginfo) as bi: baginfo_txt = bi.read() self.assertIn('Contact-Name: bdbag test', baginfo_txt) except Exception as e: self.fail(bdbag.get_named_exception(e))
def test_revert_bag(self): logger.info(self.getTestHeader('revert bag')) try: bdb.revert_bag(self.test_bag_dir) self.assertFalse(ospif(ospj(self.test_bag_dir, 'bag-info.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'bagit.txt'))) self.assertFalse( ospif(ospj(self.test_bag_dir, 'manifest-sha1.txt'))) self.assertFalse(ospif(ospj(self.test_bag_dir, 'manifest-md5.txt'))) self.assertFalse( ospif(ospj(self.test_bag_dir, 'manifest-sha1.txt'))) self.assertFalse( ospif(ospj(self.test_bag_dir, 'manifest-sha256.txt'))) self.assertFalse( ospif(ospj(self.test_bag_dir, 'manifest-sha512.txt'))) self.assertFalse( ospif(ospj(self.test_bag_dir, 'tagmanifest-md5.txt'))) self.assertFalse( ospif(ospj(self.test_bag_dir, 'tagmanifest-sha1.txt'))) self.assertFalse( ospif(ospj(self.test_bag_dir, 'tagmanifest-sha256.txt'))) self.assertFalse( ospif(ospj(self.test_bag_dir, 'tagmanifest-sha512.txt'))) self.assertTrue(ospif(ospj(self.test_bag_dir, 'README.txt'))) self.assertTrue( ospif(ospj(self.test_bag_dir, ospj('test1', 'test1.txt')))) self.assertTrue( ospif(ospj(self.test_bag_dir, ospj('test2', 'test2.txt')))) self.assertFalse(ospe(ospj(self.test_bag_dir, 'data'))) except Exception as e: self.fail(bdbag.get_named_exception(e))