import py import os, md5, sha from filesdb import FilesDB udir = py.path.local.make_numbered_dir(prefix='usession-', keep=3) class TestFilesDB: COUNT = 0 def setup_method(self, meth): self.dbpath = str(udir.ensure('db%d' % TestFilesDB.COUNT, dir=1)) TestFilesDB.COUNT += 1 self.fdb = FilesDB(self.dbpath) def test_simple(self): p = udir.join('simple_random') data = os.urandom(999) p.write(data) self.fdb.add_link(str(p)) res = self.fdb.find_md5(md5.new(data).digest()) assert res.getfilename() == str(p) assert res.start == 0 assert res.length == len(data) assert not res.is_imported() res1 = self.fdb.find_sha(sha.new(data).digest()) assert res1 == res assert res1.getfilename() == str(p) assert res1.start == 0 assert res1.length == len(data) assert not res1.is_imported() f = res.open() data1 = f.read() assert data1 == data res = self.fdb.import_data(data) assert res.is_imported() assert res.getfilename().startswith(str(self.dbpath)) f = res.open() data1 = f.read() assert data1 == data res1 = self.fdb.find_sha(sha.new(data).digest()) assert res1 == res assert res1.length == len(data) assert res1.is_imported() res1 = self.fdb.import_data(data) assert res1 == res res1 = self.fdb.import_file(str(p)) assert res1 == res p2 = udir.join('simple_random_2') data2 = os.urandom(512) p2.write(data2) res2 = self.fdb.import_file(str(p2)) assert res2.is_imported() assert res2.getfilename().startswith(str(self.dbpath)) f = res.open() data1 = f.read() assert data1 == data f = res2.open() data1 = f.read() assert data1 == data2 res1 = self.fdb.import_data(data2) assert res1 == res2 res1 = self.fdb.import_file(str(p2)) assert res1 == res2 p2.remove() f = res2.open() data1 = f.read() assert data1 == data2