def test_enc_dec(self): obj_store = SeafObjStoreFactory().get_obj_store('commits') self.assertIsNotNone(obj_store.crypto) crypto = obj_store.crypto obj_store.crypto = None # read original data dec_data = obj_store.read_obj(TEST_REPO_ID, 1, TEST_HEAD_COMMIT) # encrypt original data enc_data = crypto.enc_data(dec_data) obj_path = os.path.join(obj_store.obj_dir, TEST_REPO_ID, \ TEST_HEAD_COMMIT[0:2], TEST_HEAD_COMMIT[2:]) with open(obj_path, 'w') as fd: fd.truncate(0) # write encrypted data to file fd.write(enc_data) obj_store.crypto = crypto # get decrypted data dec_data = obj_store.read_obj(TEST_REPO_ID, 1, TEST_HEAD_COMMIT) cobj = json.loads(dec_data) self.assertEqual(TEST_HEAD_COMMIT, cobj['commit_id']) with open(obj_path, 'w') as fd: fd.truncate(0) fd.write(dec_data)
def main(): try: orig_obj_factory = SeafObjStoreFactory() os.environ['SEAFILE_CENTRAL_CONF_DIR'] = os.environ['DEST_SEAFILE_CENTRAL_CONF_DIR'] except KeyError: logging.warning('DEST_SEAFILE_CENTRAL_CONF_DIR environment variable is not set.\n') sys.exit() dest_obj_factory = SeafObjStoreFactory() dtypes = ['commits', 'fs', 'blocks'] for dtype in dtypes: ObjMigrateWorker(orig_obj_factory, dest_obj_factory, dtype).start()
def test_enc_dec(self): obj_store = SeafObjStoreFactory().get_obj_store('commits') self.assertIsNotNone(obj_store.crypto) crypto = obj_store.crypto obj_store.crypto = None # read original data dec_data = obj_store.read_obj(TEST_REPO_ID, 1, TEST_HEAD_COMMIT) # encrypt original data enc_data = crypto.enc_data(dec_data) obj_path = os.path.join(obj_store.obj_dir, TEST_REPO_ID, \ TEST_HEAD_COMMIT[0:2], TEST_HEAD_COMMIT[2:]) with open(obj_path, 'wb') as fd: fd.truncate(0) # write encrypted data to file fd.write(enc_data) obj_store.crypto = crypto # get decrypted data dec_data = obj_store.read_obj(TEST_REPO_ID, 1, TEST_HEAD_COMMIT) cobj = json.loads(dec_data) self.assertEqual(TEST_HEAD_COMMIT, cobj['commit_id']) with open(obj_path, 'wb') as fd: fd.truncate(0) fd.write(dec_data)
def create_factory_with_conf(self, content): return SeafObjStoreFactory(FakeSeafileConfig(content))
def test_invalid_data(self): obj_store = SeafObjStoreFactory().get_obj_store('commits') self.assertIsNotNone(obj_store.crypto) self.assertRaises(Exception, obj_store.crypto.enc_data, None) self.assertRaises(Exception, obj_store.crypto.dec_data, 'abc')