コード例 #1
0
    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))
コード例 #2
0
    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'))
コード例 #3
0
    def test_stored_data_can_be_read(self):
        storage = MemoryStorage()

        storage.write('foo', b'data')
        self.assertEqual(b'data', storage.read('foo'))
コード例 #4
0
    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'])
コード例 #5
0
    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'])