Esempio n. 1
0
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
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
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
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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)