def test_meta(testfile, cache, transfer): size = os.path.getsize(testfile) named_object = StorageObject('fus-roh', 'bar') transfer.delete(named_object) # XXX tests should clean up storage_object = named_object._replace(local_file=testfile) assert transfer.meta(named_object) is None uploaded, _ = transfer.store(storage_object) meta = transfer.meta(named_object) assert meta.size == size assert meta.size == uploaded.size assert meta.etag == uploaded.etag
def get_storage(self, storage_object: StorageObject) -> StorageObject: """ Gets the etag and size of a StorageObject according to the cache Raises a KeyError if the etag is not known """ key = self._storage_key(storage_object) etag, size = self._get(key, 'etag', 'size') if etag is None or size is None: raise KeyError("Element not found") etag = etag.decode('UTF-8') size = int(size) return storage_object._replace(etag=etag, size=size)
def get_storage(self, storage_object: StorageObject) -> StorageObject: """ Gets the etag and size of a StorageObject according to the cache Raises a KeyError if the etag is not known """ key = self._storage_key(storage_object) etag, size = self._get(key, 'etag', 'size') if etag is None or size is None: raise KeyError("Element not found") etag = etag.decode('UTF-8') size = int(size) return storage_object._replace(etag=etag, size=size)
def test_meta(testfile, cache, transfer): size = os.path.getsize(testfile) named_object = StorageObject('fus-roh', 'bar') transfer.delete(named_object) # XXX tests should clean up storage_object = named_object._replace(local_file=testfile) assert transfer.meta(named_object) is None uploaded, _ = transfer.store(storage_object) meta = transfer.meta(named_object) assert meta.size == size assert meta.size == uploaded.size assert meta.etag == uploaded.etag
import pytest from blockserver.backend.transfer import StorageObject from blockserver.backend.auth import User with_etag = StorageObject('foo', 'bar', 'etag', size=10) without_etag = with_etag._replace(etag=None, size=None) # type: StorageObject def test_storage_cache_basics(cache): with pytest.raises(KeyError): cache.get_storage(without_etag) with pytest.raises(ValueError): cache.set_storage(without_etag) cache.set_storage(with_etag) assert cache.get_storage(without_etag) == with_etag AUTH_TOKEN = 'MAGICFAIRYTALE' def test_auth_cache_basics(cache): with pytest.raises(KeyError): cache.get_auth(AUTH_TOKEN) with pytest.raises(ValueError): cache.set_auth(AUTH_TOKEN, None) user = User(0, True, 123, 456) cache.set_auth(AUTH_TOKEN, user) assert cache.get_auth(AUTH_TOKEN) == user user_2 = User(2, False, 456, 123789) cache.set_auth(AUTH_TOKEN, user_2)
def test_cache_is_filled(testfile, cache, transfer): storage_object = StorageObject('foo', 'bar', local_file=testfile) transfer.delete(storage_object) uploaded, size_diff = transfer.store(storage_object) assert cache.get_storage(storage_object) == storage_object._replace( etag=uploaded.etag, size=uploaded.size)
def test_cache_is_filled(testfile, cache, transfer): storage_object = StorageObject('foo', 'bar', local_file=testfile) transfer.delete(storage_object) uploaded, size_diff = transfer.store(storage_object) assert cache.get_storage(storage_object) == storage_object._replace( etag=uploaded.etag, size=uploaded.size)