def testPersistence(self): temp_dir = getTempDirectory() directory = join(temp_dir, 'read_write') db_file = join(directory, 'db') mkdir(directory) try: db = MasterDB(db_file) self.assertTrue(exists(db_file), db_file) address = ('example.com', 1024) db.addremove(None, address) address2 = ('example.org', 1024) db.addremove(None, address2) # Values are visible to a new db instance db2 = MasterDB(db_file) self.assertIn(address, db2) self.assertIn(address2, db2) db.addremove(address, None) # Create yet another instance (file is not supposed to be shared) db2 = MasterDB(db_file) self.assertNotIn(address, db2) self.assertIn(address2, db2) db.remove(address2) # and again, to test remove() self.assertNotIn(address2, MasterDB(db_file)) finally: shutil.rmtree(directory)
def testLaterAccessRights(self): """ Verify MasterDB does not raise when modifying database. """ temp_dir = getTempDirectory() directory = join(temp_dir, 'read_write') db_file = join(directory, 'db') mkdir(directory) try: db = MasterDB(db_file) self.assertTrue(exists(db_file), db_file) chmod(directory, 0500) address = ('example.com', 1024) # Must not raise db.addremove(None, address) # Value is stored self.assertIn(address, db) # But not visible to a new db instance (write access restored so # it can be created) chmod(directory, 0700) db2 = MasterDB(db_file) self.assertNotIn(address, db2) finally: shutil.rmtree(directory)