add nick
[laas.git] / src / workflow / tests / test_workflows.py
1 ##############################################################################
2 # Copyright (c) 2018 Parker Berberian, Sawyer Bergeron, and others.
3 #
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
9
10 from unittest import SkipTest
11 from django.test import TestCase
12 from workflow.workflow_factory import WorkflowFactory
13
14
15 """
16 To start a workflow:
17     POST to /wf/workflow {"add": <wf_type_int>
18
19     types:
20         0 - Booking
21         1 - Resource
22         2 - Config
23
24 To remove a workflow:
25     POST to /wf/workflow {"cancel": ""}
26 """
27
28
29 class WorkflowTestCase(TestCase):
30
31     @classmethod
32     def setUpClass(cls):
33         super().setUpClass()
34         raise SkipTest("These tests are no good")
35
36     def setUp(self):
37         self.clear_workflow()
38         self.create_workflow(self.wf_type)
39
40     def create_workflow(self, wf_type):
41         self.clear_workflow()
42
43         # creates workflow on backend
44         self.client.post("/", {"create": int(wf_type)})  # TODO: verify content type, etc
45
46     def clear_workflow(self):
47         session = self.client.session
48         for k in session.keys():
49             del session[k]
50         session.save()
51
52     def render_steps(self):
53         """Retrieve each step individually at /wf/workflow/step=<index>."""
54         for i in range(self.step_count):
55             #  renders the step itself, not in an iframe
56             exception = None
57             try:
58                 response = self.client.get("/wf/workflow/", {"step": str(i)})
59                 self.assertLess(response.status_code, 300)
60             except Exception as e:
61                 exception = e
62
63             self.assertIsNone(exception)
64
65
66 class BookingWorkflowTestCase(WorkflowTestCase):
67
68     @classmethod
69     def setUpClass(cls):
70         super(BookingWorkflowTestCase, cls).setUpClass()
71         cls.step_count = len(WorkflowFactory.booking_steps)
72         cls.wf_type = 0
73
74     def test_steps_render(self):
75         super(BookingWorkflowTestCase, self).render_steps()
76
77
78 class ResourceWorkflowTestCase(WorkflowTestCase):
79
80     @classmethod
81     def setUpClass(cls):
82         super(ResourceWorkflowTestCase, cls).setUpClass()
83         cls.step_count = len(WorkflowFactory.resource_steps)
84         cls.wf_type = 1
85
86     def test_steps_render(self):
87         super(ResourceWorkflowTestCase, self).render_steps()
88
89
90 class ConfigWorkflowTestCase(WorkflowTestCase):
91
92     @classmethod
93     def setUpClass(cls):
94         super(ConfigWorkflowTestCase, cls).setUpClass()
95         cls.step_count = len(WorkflowFactory.config_steps)
96         cls.wf_type = 2
97
98     def test_steps_render(self):
99         super(ConfigWorkflowTestCase, self).render_steps()