Add a basic test for blob upload cleanup

This commit is contained in:
Joseph Schorr 2017-07-11 16:35:10 +03:00
parent b87415129f
commit b2053829f9

View file

@ -0,0 +1,36 @@
import pytest
from contextlib import contextmanager
from datetime import datetime, timedelta
from mock import patch, Mock
from test.fixtures import *
from data import model
from workers.blobuploadcleanupworker.blobuploadcleanupworker import (BlobUploadCleanupWorker,
DELETION_DATE_THRESHOLD)
def test_blobuploadcleanupworker(initialized_db):
# Create a blob upload older than the threshold.
blob_upload = model.blob.initiate_upload('devtable', 'simple', 'foobarbaz', 'local_us', {})
blob_upload.created = datetime.now() - (DELETION_DATE_THRESHOLD + timedelta(days=100))
blob_upload.save()
assert model.blob.get_stale_blob_upload(DELETION_DATE_THRESHOLD) is not None
# Note: We need to override UseThenDisconnect to ensure to remains connected to the test DB.
@contextmanager
def noop(_):
yield
storage_mock = Mock()
with patch('workers.blobuploadcleanupworker.blobuploadcleanupworker.UseThenDisconnect', noop):
with patch('workers.blobuploadcleanupworker.blobuploadcleanupworker.storage', storage_mock):
# Call cleanup and ensure it is canceled.
worker = BlobUploadCleanupWorker()
worker._cleanup_uploads()
storage_mock.cancel_chunked_upload.assert_called_once()
# Ensure the blob no longer exists.
with pytest.raises(model.InvalidBlobUpload):
model.blob.get_blob_upload('devtable', 'simple', blob_upload.uuid)