Skip to content

Commit 1debecb

Browse files
committed
Ensure the given backend is a database backend
1 parent 610e994 commit 1debecb

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

django_tasks/backends/database/management/commands/db_worker.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from django.db import transaction
1111

1212
from django_tasks import DEFAULT_TASK_BACKEND_ALIAS, tasks
13+
from django_tasks.backends.database.backend import DatabaseBackend
1314
from django_tasks.backends.database.models import DBTaskResult
1415
from django_tasks.exceptions import InvalidTaskBackendError
1516
from django_tasks.task import DEFAULT_QUEUE_NAME, ResultStatus
@@ -129,9 +130,11 @@ def run_task(self, db_task_result: DBTaskResult) -> None:
129130

130131
def valid_backend_name(val: str) -> str:
131132
try:
132-
tasks[val]
133+
backend = tasks[val]
133134
except InvalidTaskBackendError as e:
134135
raise ArgumentTypeError(e.args[0]) from e
136+
if not isinstance(backend, DatabaseBackend):
137+
raise ArgumentTypeError(f"Backend '{val}' is not a database backend")
135138
return val
136139

137140

tests/tests/test_database_backend.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,15 @@ def test_unknown_backend(self) -> None:
311311
)
312312
self.assertIn("The connection 'unknown' doesn't exist.", output.getvalue())
313313

314+
def test_incorrect_backend(self) -> None:
315+
output = StringIO()
316+
with redirect_stderr(output):
317+
with self.assertRaises(SystemExit):
318+
execute_from_command_line(
319+
["django-admin", "db_worker", "--backend", "dummy"]
320+
)
321+
self.assertIn("Backend 'dummy' is not a database backend", output.getvalue())
322+
314323
def test_negative_interval(self) -> None:
315324
output = StringIO()
316325
with redirect_stderr(output):

0 commit comments

Comments
 (0)