kopia lustrzana https://github.com/OpenDroneMap/WebODM
Added task action tests
rodzic
145103ce03
commit
a91e2bd108
|
@ -50,8 +50,8 @@ class TaskViewSet(viewsets.ViewSet):
|
|||
raise exceptions.NotFound()
|
||||
return project
|
||||
|
||||
def set_pending_action(self, pending_action, request, pk=None, project_pk=None):
|
||||
self.get_and_check_project(request, project_pk, ('change_project',))
|
||||
def set_pending_action(self, pending_action, request, pk=None, project_pk=None, perms=('change_project', )):
|
||||
self.get_and_check_project(request, project_pk, perms)
|
||||
try:
|
||||
task = self.queryset.get(pk=pk, project=project_pk)
|
||||
except ObjectDoesNotExist:
|
||||
|
@ -76,8 +76,7 @@ class TaskViewSet(viewsets.ViewSet):
|
|||
|
||||
@detail_route(methods=['post'])
|
||||
def remove(self, *args, **kwargs):
|
||||
# TODO: this should check for delete_project perms
|
||||
return self.set_pending_action(models.Task.PendingActions.REMOVE, *args, **kwargs)
|
||||
return self.set_pending_action(models.Task.PendingActions.REMOVE, *args, perms=('delete_project', ), **kwargs)
|
||||
|
||||
@detail_route(methods=['get'])
|
||||
def output(self, request, pk=None, project_pk=None):
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
ul#side-menu.nav{
|
||||
a{
|
||||
color: #111;
|
||||
word-break: break-all;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from .classes import BootTestCase
|
||||
from rest_framework.test import APIClient
|
||||
from rest_framework import status
|
||||
import datetime
|
||||
|
||||
from app.models import Project, Task
|
||||
from nodeodm.models import ProcessingNode
|
||||
|
@ -73,7 +74,7 @@ class TestApi(BootTestCase):
|
|||
|
||||
# Create some tasks
|
||||
task = Task.objects.create(project=project)
|
||||
task2 = Task.objects.create(project=project)
|
||||
task2 = Task.objects.create(project=project, created_at=task.created_at + datetime.timedelta(0, 1))
|
||||
other_task = Task.objects.create(project=other_project)
|
||||
|
||||
# Can list project tasks to a project we have access to
|
||||
|
@ -160,12 +161,23 @@ class TestApi(BootTestCase):
|
|||
self.assertTrue(task.last_error is None)
|
||||
self.assertTrue(task.pending_action == task.PendingActions.CANCEL)
|
||||
|
||||
# Cannot cancel a task for which we don't have permission
|
||||
res = client.post('/api/projects/{}/tasks/{}/cancel/'.format(other_project.id, other_task.id))
|
||||
self.assertEqual(res.status_code, status.HTTP_404_NOT_FOUND)
|
||||
res = client.post('/api/projects/{}/tasks/{}/restart/'.format(project.id, task.id))
|
||||
self.assertTrue(res.data["success"])
|
||||
task.refresh_from_db()
|
||||
self.assertTrue(task.last_error is None)
|
||||
self.assertTrue(task.pending_action == task.PendingActions.RESTART)
|
||||
|
||||
# TODO: test restart and delete operations
|
||||
# Cannot cancel, restart or delete a task for which we don't have permission
|
||||
for action in ['cancel', 'remove', 'restart']:
|
||||
res = client.post('/api/projects/{}/tasks/{}/{}/'.format(other_project.id, other_task.id, action))
|
||||
self.assertEqual(res.status_code, status.HTTP_404_NOT_FOUND)
|
||||
|
||||
# Can delete
|
||||
res = client.post('/api/projects/{}/tasks/{}/remove/'.format(project.id, task.id))
|
||||
self.assertTrue(res.data["success"])
|
||||
task.refresh_from_db()
|
||||
self.assertTrue(task.last_error is None)
|
||||
self.assertTrue(task.pending_action == task.PendingActions.REMOVE)
|
||||
|
||||
def test_processingnodes(self):
|
||||
client = APIClient()
|
||||
|
|
Ładowanie…
Reference in New Issue