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