def test_read_returns_hash(self): persistent = MemoryStorage() persistent.write(2, b'abcd') md5_hash = hashlib.md5(b'abcd').hexdigest() temp = MemoryStorage() storage = LongMessageStorage(persistent, temp) handler = LongMessageHandler(storage) ble = LongMessageProtocol(handler) ble.handle_write(0, [2]) # select long message 2 (persistent) result = ble.handle_read() # reading a valid message returns its status, md5 hash and length self.assertEqual("03" + md5_hash + "00000004", bytes2hexdigest(result))
def test_stored_data_integrity_is_checked_on_read(self): storage = MemoryStorage() storage.write('foo', b'data', md5='foobar') self.assertRaises(IntegrityError, lambda: storage.read('foo'))
def test_stored_data_can_be_read(self): storage = MemoryStorage() storage.write('foo', b'data') self.assertEqual(b'data', storage.read('foo'))
def test_md5_is_calculated_if_not_provided(self): storage = MemoryStorage() storage.write('foo', b'data', md5='some_md5') self.assertEqual('some_md5', storage.read_metadata('foo')['md5'])
def test_md5_is_stored_if_provided(self): storage = MemoryStorage() storage.write('foo', b'data') self.assertNotEqual('', storage.read_metadata('foo')['md5']) self.assertNotEqual(None, storage.read_metadata('foo')['md5'])