Added task action tests

pull/43/head
Piero Toffanin 2016-11-05 12:44:47 -04:00
rodzic 145103ce03
commit a91e2bd108
3 zmienionych plików z 21 dodań i 9 usunięć

Wyświetl plik

@ -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):

Wyświetl plik

@ -57,6 +57,7 @@
ul#side-menu.nav{
a{
color: #111;
word-break: break-all;
}
}

Wyświetl plik

@ -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()