Example #1
0
    def uploadWorkflow(self, workflowName, waitFor):
        self.find_element_by_link_text(LABEL_UPLOAD_WORFLOW, waitFor)# click on Upload workflow
        #fill form
        self.find_element_by_id(ID_NAME,"workflow_aaa")
        self.find_element_by_id(ID_KEYWORDS,"key1, key2, key3")
        populate = Command()
        self.find_element_by_id(ID_DESCRIPTION,populate.getParragraph(20,400))
        self.find_element_by_id(ID_VERSION,"1.2")
        self.find_select_element_by_id(ID_CATEGORY, workflowName)

        f=open("/tmp/workflow.json","w")
        f.write(populate.getJson())
        f.close()
        element = self.driver.find_element_by_id("id_json")
        element.send_keys("/tmp/workflow.json")

        self.find_element_by_name(LABEL_SUMIT_WORKFLOW)
class UploadTests(TestCase):
    def setUp(self):
        # The test client is a Python class that acts as a dummy Web browser
        self._client = Client()

        # populate database
        self.populate = Command()
        self.populate.handle()

        # data is a pointer to workflow, users and categories names
        # self.data = self.populate.getData()

    def test_0_form_workflow_add_manually(self):
        # test just the form
        # create auxiliary json file
        jsonFileName = "/tmp/workflow.json"
        f = open(jsonFileName, "w")
        f.write(self.populate.getJson())
        f.close()
        upload_file = open(jsonFileName, "rb")
        file_dict = {
            NAME_JSON: SimpleUploadedFile(upload_file.name, upload_file.read())
        }

        # get category IDs for the select Category field
        categories = Category.objects.all()
        category0 = categories[0]
        category1 = categories[1]
        #category0 = Category.objects.get(name=self.data[CATEGORY][0])
        #category1 = Category.objects.get(name=self.data[CATEGORY][1])
        # new workflow name
        workFlowName = 'workflow999'
        data_dict = {
            NAME_NAME: workFlowName,
            NAME_CATEGORY: [category0.id, category1.id],
            NAME_KEYWORDS: self.populate.getParragraph(1, 14),
            NAME_DESCRIPTION: self.populate.getParragraph(23, 123),
            NAME_VERSION: '3.1415',
        }

        # form with fieldfields has two independent dictionaries
        form = WorkFlowFormBase(data=data_dict, files=file_dict)
        self.assertTrue(form.is_valid(), form.errors)
        if form.is_valid():
            file_data = form.cleaned_data["json"].read().decode("utf-8")
            # modify object json value
            form.instance.json = file_data
        newWorkflow = form.save()
        self.assertEqual(newWorkflow.name, workFlowName)

    def test_4_view_workflow_add_manually(self):
        # Now test views
        # create auxiliary json file
        jsonFileName = "/tmp/workflow.json"
        f = open(jsonFileName, "w")
        f.write(self.populate.getJson())
        f.close()
        upload_file = open(jsonFileName, "rb")
        file = SimpleUploadedFile(upload_file.name, upload_file.read())

        workFlowName = 'workflow999'
        categories = Category.objects.all()
        category0 = categories[0]
        category1 = categories[1]
        #        category0 = Category.objects.get(name=self.data[CATEGORY][0])
        #        category1 = Category.objects.get(name=self.data[CATEGORY][1])

        version = '3.1415'
        response = self._client.post(reverse(WORKFLOW_ADD_MANUALLY),
                                     data={
                                         NAME_NAME:
                                         workFlowName,
                                         NAME_KEYWORDS:
                                         self.populate.getParragraph(1, 14),
                                         NAME_CATEGORY:
                                         [category0.id, category1.id],
                                         NAME_DESCRIPTION:
                                         self.populate.getParragraph(23, 123),
                                         NAME_VERSION:
                                         version,
                                         NAME_JSON:
                                         file
                                     })
        workflow = WorkFlow.objects.get(name=workFlowName)
        self.assertEqual(workflow.versionInit, version)
Example #3
0
class UploadTests(TestCase):
    def setUp(self):
        # The test client is a Python class that acts as a dummy Web browser
        self._client = Client()

        # populate database
        self.populate = Command()
        self.populate.handle()

        # data is a pointer to workflow, users and categories names
        self.data = self.populate.getData()

    def test_0_form_workflow_add_manually(self):
        # create auxiliary json file
        jsonFileName = "/tmp/workflow.json"
        f = open(jsonFileName, "w")
        f.write(self.populate.getJson())
        f.close()
        upload_file = open(jsonFileName, "rb")
        file_dict = {
            NAME_JSON: SimpleUploadedFile(upload_file.name, upload_file.read())
        }

        # get category IDs for the select Category field
        category0 = Category.objects.get(name=self.data[CATEGORY][0])
        category1 = Category.objects.get(name=self.data[CATEGORY][1])
        # new workflow name
        workFlowName = 'workflow999'
        data_dict = {
            NAME_NAME: workFlowName,
            NAME_CATEGORY: [category0.id, category1.id],
            NAME_KEYWORDS: self.populate.getParragraph(1, 14),
            NAME_DESCRIPTION: self.populate.getParragraph(23, 123),
            NAME_VERSION: '3.1415',
        }

        # form with fieldfields has two independent dictionaries
        form = WorkFlowManualForm(data=data_dict, files=file_dict)
        self.assertTrue(form.is_valid(), form.errors)
        if form.is_valid():
            file_data = form.cleaned_data["json"].read().decode("utf-8")
            # modify object json value
            form.instance.json = file_data
        newWorkflow = form.save()
        self.assertEqual(newWorkflow.name, workFlowName)

        # Note that we are ignoring recaptcha
        # there is no simple way to automatize it

    def test_1_form_workflowProgStep1_add(self):
        # create auxiliary json file
        jsonFileName = "/tmp/workflow.json"
        f = open(jsonFileName, "w")
        f.write(self.populate.getJson())
        f.close()
        upload_file = open(jsonFileName, "rb")
        file_dict = {
            NAME_JSON: SimpleUploadedFile(upload_file.name, upload_file.read())
        }

        # new workflow name
        workFlowName = 'workflow999'
        data_dict = {
            NAME_VERSION: '3.141592',
        }
        # form with fieldfields has two independent dictionaries
        # we are testing the form not the views
        form = WorkFlowProgStep1Form(data=data_dict, files=file_dict)
        self.assertTrue(form.is_valid(), form.errors)

    def test_2_form_workflowProgStep2_add(self):
        # get category IDs for the select Category field
        category0 = Category.objects.get(name=self.data[CATEGORY][0])
        category1 = Category.objects.get(name=self.data[CATEGORY][1])
        # new workflow name
        workFlowName = 'workflow999'
        data_dict = {
            NAME_NAME: workFlowName,
            NAME_CATEGORY: [category0.id, category1.id],
            NAME_KEYWORDS: self.populate.getParragraph(1, 14),
            NAME_DESCRIPTION: self.populate.getParragraph(23, 123),
            NAME_VERSION: '3.1415',
        }

        # form with fieldfields has two independent dictionaries
        form = WorkFlowProgStep2Form(data=data_dict, )
        self.assertTrue(form.is_valid(), form.errors)
        if form.is_valid():
            file_data = self.populate.getJson()
            # modify object json 2alue
            form.instance.json = file_data
        newWorkflow = form.save()
        self.assertEqual(newWorkflow.name, workFlowName)

        # Note that we are ignoring recaptcha
        # there is no simple way to automatize it

    # Now test views

    def test_4_view_workflow_add_manually(self):
        # create auxiliary json file
        jsonFileName = "/tmp/workflow.json"
        f = open(jsonFileName, "w")
        f.write(self.populate.getJson())
        f.close()
        upload_file = open(jsonFileName, "rb")
        file = SimpleUploadedFile(upload_file.name, upload_file.read())

        workFlowName = 'workflow999'
        category0 = Category.objects.get(name=self.data[CATEGORY][0])
        category1 = Category.objects.get(name=self.data[CATEGORY][1])

        version = '3.1415'
        response = self._client.post(reverse(WORKFLOW_ADD_MANUALLY),
                                     data={
                                         NAME_NAME:
                                         workFlowName,
                                         NAME_KEYWORDS:
                                         self.populate.getParragraph(1, 14),
                                         NAME_CATEGORY:
                                         [category0.id, category1.id],
                                         NAME_DESCRIPTION:
                                         self.populate.getParragraph(23, 123),
                                         NAME_VERSION:
                                         version,
                                         NAME_JSON:
                                         file
                                     })
        workflow = WorkFlow.objects.get(name=workFlowName)
        self.assertEqual(workflow.versionInit, version)

    def test_5_view_workflow_add_programatically(self):
        # create auxiliary json file
        jsonFileName = "/tmp/workflow.json"
        f = open(jsonFileName, "w")
        f.write(self.populate.getJson())
        f.close()
        upload_file = open(jsonFileName, "rb")
        file = SimpleUploadedFile(upload_file.name, upload_file.read())

        workFlowName = 'workflow999'
        category0 = Category.objects.get(name=self.data[CATEGORY][0])
        category1 = Category.objects.get(name=self.data[CATEGORY][1])

        version = '3.1415'
        response = self._client.post(reverse(WORKFLOW_PROG_STEP1),
                                     data={
                                         NAME_VERSION: version,
                                         NAME_JSON: file
                                     })
        self.assertIn("jsonFileName", response.content.decode("utf-8"))
        _dict = json.loads(response.content.decode("utf-8"))

        # call with GET (send filename)
        fileNameUrl = "?jsonFileName=%s&versionInit=%s" % \
                      (_dict['jsonFileName'], version)
        response = self._client.get(reverse(WORKFLOW_PROG_STEP2) + fileNameUrl)

        # workflow should not be available yet.
        try:
            workflow = WorkFlow.objects.get(name=workFlowName)
            self.assertTrue(False, "This workflow should not exist")
        except ObjectDoesNotExist:
            pass

        # call with POST (send metadata)
        response = self._client.post(
            reverse(WORKFLOW_PROG_STEP2),
            data={
                NAME_NAME: workFlowName,
                NAME_KEYWORDS: self.populate.getParragraph(1, 14),
                NAME_CATEGORY: [category0.id, category1.id],
                NAME_DESCRIPTION: self.populate.getParragraph(23, 123),
                NAME_VERSION: version,  # from json
                # NAME_JSON: file - in session variable
            })
        workflow = WorkFlow.objects.get(name=workFlowName)
        self.assertEqual(workflow.versionInit, version)