Skip to content
Snippets Groups Projects
Commit 55f8492a authored by Erwan Rouchet's avatar Erwan Rouchet Committed by Bastien Abadie
Browse files

Fix handling of unknown user IDs and user emails in UserArgument

parent f12736fa
No related branches found
No related tags found
1 merge request!1921Fix handling of unknown user IDs and user emails in UserArgument
......@@ -6,6 +6,7 @@ from django.core.management.base import CommandError
from arkindex.process.models import Process, ProcessMode, WorkerVersion
from arkindex.project.tests import FixtureTestCase
from arkindex.users.models import User
class TestFakeWorkerRun(FixtureTestCase):
......@@ -83,3 +84,31 @@ class TestFakeWorkerRun(FixtureTestCase):
self.fake_worker_run(['--user', str(self.user.id), '--worker-version', str(worker_version_id)])
self.assertEqual(str(ctx.exception), 'WorkerVersion "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" does not exist')
def test_unknown_user(self):
user_id = 12345
self.assertFalse(User.objects.filter(id=user_id).exists())
with self.assertRaises(CommandError) as ctx:
self.fake_worker_run(['--user', str(user_id), '--worker-version', str(self.worker_version.id)])
self.assertEqual(str(ctx.exception), 'User "12345" does not exist')
def test_email(self):
self.assertFalse(Process.objects.filter(mode=ProcessMode.Local, creator=self.user).exists())
output = self.fake_worker_run(['--user', str(self.user.email), '--worker-version', str(self.worker_version.id)])
process = Process.objects.get(mode=ProcessMode.Local, creator=self.user)
worker_run = process.worker_runs.get()
self.assertEqual(worker_run.version, self.worker_version)
self.assertIsNone(worker_run.configuration_id)
self.assertIsNone(worker_run.model_version_id)
self.assertListEqual(worker_run.parents, [])
self.assertEqual(output, dedent(
f"""
Created local process {process.id}
Created WorkerRun {worker_run.id} (Worker Recognizer @ 6bdc26)
"""
).strip())
......@@ -10,6 +10,7 @@ from arkindex.users.models import User
class ModelArgument(object):
model = None
text_search_field = 'name'
text_search_lookup = 'icontains'
def __init__(self, many=False, **filters):
assert issubclass(self.model, Model)
......@@ -33,7 +34,7 @@ class ModelArgument(object):
def text_search(self, qs, arg):
if not self.text_search_field:
raise self.model.DoesNotExist
text_filter = {'{}__icontains'.format(self.text_search_field): arg}
text_filter = {f'{self.text_search_field}__{self.text_search_lookup}': arg}
if self.many:
return qs.filter(**text_filter)
else:
......@@ -61,6 +62,7 @@ class RepositoryArgument(ModelArgument):
class UserArgument(ModelArgument):
model = User
text_search_field = 'email'
text_search_lookup = 'exact'
class WorkerVersionArgument(ModelArgument):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment