fix(downloads): a suspended user's queued jobs wait, and a clip too big for the space left says so
A suspension now blocks the user's downloads as quota.resolve already advised: the worker leaves their queued jobs unclaimed until it is lifted (the confirm says so). A cut clip larger than the remaining storage is refused with its own message (not "storage is full"), and a clip's quota refusal reads as a clip's in both languages. The cancel poll compares to JobStatus.RUNNING.
This commit is contained in:
@@ -155,6 +155,25 @@ def test_unlimited_user_is_never_excluded(db):
|
||||
assert _claim_job() == q.id
|
||||
|
||||
|
||||
def test_a_suspended_users_queued_jobs_wait(db):
|
||||
# Suspending a user blocks their downloads (quota.resolve's advice): a job they queued before
|
||||
# stays queued, unclaimed, and runs once the suspension is lifted.
|
||||
s = User(email="suspended@example.com", is_suspended=True)
|
||||
o = User(email="other@example.com")
|
||||
db.add_all([s, o])
|
||||
db.flush()
|
||||
waits = _job(db, s.id, queue_pos=1)
|
||||
served = _job(db, o.id, queue_pos=2)
|
||||
db.commit()
|
||||
assert _claim_job() == served.id
|
||||
assert _claim_job() is None
|
||||
db.expire_all()
|
||||
assert db.get(DownloadJob, waits.id).status == "queued"
|
||||
db.get(User, s.id).is_suspended = False
|
||||
db.commit()
|
||||
assert _claim_job() == waits.id
|
||||
|
||||
|
||||
# --- #3 · list cap --------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user