def test_download_upload(self): server_url = self.server_url # /tmp/tmpswgrBv_funkload/watch0003.request self.get(server_url + "/account/login/", description="Get /account/login/") user = '******' password = '******' csrftoken = extract_token(self.getBody(), 'name=\'csrfmiddlewaretoken\' value=\'', '\'') print "%s\n" % csrftoken self.post(server_url + "/account/login/", params=[['csrfmiddlewaretoken', csrftoken], ['username', user], ['password', password]], description="login") # /tmp/tmpswgrBv_funkload/watch0006.request self.get(server_url + "/submit/download", description="Get /submit/download") # /tmp/tmpswgrBv_funkload/watch0007.request self.get(server_url + "/submit/2/", description="Get /submit/2/") # /tmp/tmpswgrBv_funkload/watch0008.request self.get(server_url + "/user/input/battleships.in", description="Get battleships.in") # /tmp/tmpswgrBv_funkload/watch0009.request self.post(server_url + "/submit/2/", params=[['sourcecode', Upload("foobaz.in")], ['output_file', Upload("foobaz.in")]], description="Post /submit/2/")
def createFile(self, title, description, file_path=None): fl = self.fl fl.post(fl.server_url + "/view_documents.faces", params=[ ['AJAXREQUEST', '_viewRoot'], ['nxw_newDocument_form', 'nxw_newDocument_form'], ['javax.faces.ViewState', fl.getLastJsfState()], ['ajaxSingle', 'nxw_newDocument_form:nxw_doc_documentActionSubviewUpperList_newDocument_subview:nxw_doc_documentActionSubviewUpperList_newDocument_link'], ['nxw_newDocument_form:nxw_doc_documentActionSubviewUpperList_newDocument_subview:nxw_doc_documentActionSubviewUpperList_newDocument_link', 'nxw_newDocument_form:nxw_doc_documentActionSubviewUpperList_newDocument_subview:nxw_doc_documentActionSubviewUpperList_newDocument_link'], ['AJAX:EVENTS_COUNT', '1']], description="Click on 'New' action") fl.assert_('Available document types' in fl.getBody()) fl.post(fl.server_url + "/view_documents.faces", params=[ ['nxw_doc_documentActionSubviewUpperList_newDocument_fancyform', 'nxw_doc_documentActionSubviewUpperList_newDocument_fancyform'], ['javax.faces.ViewState', fl.getLastJsfState()], ['nxw_doc_documentActionSubviewUpperList_newDocument_fancyform:selectDocumentTypeForCreationTable:0:selectDocumentTypeForCreationCategory:0:selectDocumentTypeForCreationCategoryTable:1:selectDocumentTypeForCreationCategoryTitleLink', 'nxw_doc_documentActionSubviewUpperList_newDocument_fancyform:selectDocumentTypeForCreationTable:0:selectDocumentTypeForCreationCategory:0:selectDocumentTypeForCreationCategoryTable:1:selectDocumentTypeForCreationCategoryTitleLink']], description="Create file: New document") fl.assert_('document_create' in fl.getBody(), "File form not found") fl.post(fl.server_url + "/create_document.faces", params=[ ['document_create:nxl_heading:nxw_title', title], ['document_create:nxl_heading:nxw_description', description], ['document_create:nxl_file:nxw_file:nxw_file_file:choice', file_path and 'upload' or 'none'], ['document_create:nxl_file:nxw_file:nxw_file_file:upload', Upload(file_path or '')], ['document_create:nxw_doc_documentCreateButtons_CREATE_DOCUMENT', 'Create'], ['document_create', 'document_create'], ['javax.faces.ViewState', fl.getLastJsfState()]], description="Create file: Submit") fl.assert_('File saved' in fl.getBody()) return self
def file_upload(self): self.get(self.server_url + 'hello/world/', description='Get Some Page') res = self.post(self.server_url + "hello/world/", params=[['email', '*****@*****.**'], ['photo', Upload('files/hello.png')]], description="Upload Photo") self.assert_(res.code in [200, 302], "expecting a 200 or 302")
def cpsCreateNewsItem(self, parent_url, photo_path=None): """Create a random news. return a tuple: (doc_url, doc_id).""" language = self.cpsGetRandomLanguage() title = self._lipsum.getSubject(uniq=True, prefix='test %s' % language) params = [ ["cpsformuid", self._lipsum.getUniqWord()], ["type_name", "News Item"], ["widget__Title", title], ["widget__Description", self._lipsum.getSubject(10)], ['widget__photo_filename', ''], ['widget__photo_choice', photo_path and 'change' or 'keep'], ['widget__photo', Upload(photo_path or '')], ['widget__photo_resize', 'img_auto_size'], ['widget__photo_rposition', 'left'], ['widget__photo_subtitle', ''], ["widget__content", self._lipsum.getMessage()], ["widget__content_rformat", "text"], ['widget__content_fileupload', Upload('')], ["widget__Subject:tokens:default", ""], ["widget__Subject:list", "Business"], # prevent invalid date depending on ui locale ["widget__publication_date_date", time.strftime('01/01/%Y')], ["widget__publication_date_hour", time.strftime('%H')], ["widget__publication_date_minute", time.strftime('%M')], ["cpsdocument_create_button", "Create"] ] self.post("%s/cpsdocument_create" % parent_url, params, description="Creating a news item") last_url = self.getLastUrl() self.assert_('psm_content_created' in last_url, 'Failed to create [%s] in %s/.' % (title, parent_url)) doc_url = self.cpsCleanUrl(self.getLastBaseUrl()) doc_id = doc_url.split('/')[-1] return doc_url, doc_id
def uploadFile(self, uid, filename): # TODO: does not work on 5.2.m[34] # ERROR : org.jboss.seam.RequiredException: # @In attribute requires non-null value: FileManageActions.typeManager fl = self.fl fn = os.path.basename(filename) resp = fl.post(fl.server_url + '/restAPI/' + self.repo + '/' + uid + '/' + fn + '/upload', params=[['file', Upload(filename)]], description='REST upload file') print fl.getBody() return resp.getDOM().getByName('docref')[0].getContentString()
def setUp(self): blob_id = self._get_next_blob_id() base_url = self.conf_get('main', 'url') self.url = urlparse.urljoin(base_url, 'blobs/0/%d' % blob_id) self.setHeader('Authorization', _get_auth_header('0')) templates_dir = self.conf_get('main', 'templates_dir') size = self.conf_getInt('main', 'size') fpath = _ensure_template(templates_dir, size) self.upload = ['file', Upload(fpath)] if DELETE_ON_SETUP: ret = self.delete(self.url, description='Delete blob on setUp') self.assert_(ret.code in [404, 200], 'expected 404 or 200')
def test_submit_paper(self): page = "/submit" self.login(page) self.assert_(page == self.getLastUrl(), "Error in login") num_papers = self.conf_getInt('test_submit_paper', 'num_papers') for i in range(num_papers): csrftoken = extract_token(self.getBody(), "name='csrfmiddlewaretoken' value='", "' />") self.post( self.server_url + "/submit", params=[['csrfmiddlewaretoken', csrftoken], ['coauthors[]', self.lipsum.getWord()], ['coauthors[]', self.lipsum.getWord()], ['title', self.lipsum.getSentence()], ['contents', Upload('files/rms_crossstitch.pdf')], ['abstract', self.lipsum.getMessage()]], description="Post /accounts/login/") self.assert_("paper" in self.getLastUrl(), "Error in login")
def createFile(self, title, description, file_path=None): fl = self.fl fl.post(fl.server_url + "/view_documents.faces", params=[ ['nxw_newDocument_form', 'nxw_newDocument_form'], ['javax.faces.ViewState', fl.getLastJsfState()], ['Faces-Request', 'partial/ajax'], ['javax.faces.source', 'nxw_newDocument_form:nxw_newDocument_link'], ['javax.faces.partial.event', 'click'], ['javax.faces.partial.execute', 'nxw_newDocument_form:nxw_newDocument_link'], ['javax.faces.partial.render', 'nxw_newDocument_after_view_ajax_panel nxw_documentActionSubviewUpperList_panel'], ['javax.faces.behavior.event', 'action'], ['javax.faces.partial.ajax', 'true']], description="Click on 'New' action") fl.assert_('Available Document Types' in fl.getBody()) fl.post(fl.server_url + "/view_documents.faces", params=[ ['nxw_newDocument_after_view_fancy_subview:nxw_newDocument_after_view_fancyform', 'nxw_newDocument_after_view_fancy_subview:nxw_newDocument_after_view_fancyform'], ['javax.faces.ViewState', fl.getLastJsfState()], ['nxw_newDocument_after_view_fancy_subview:nxw_newDocument_after_view_fancyform:File', 'nxw_newDocument_after_view_fancy_subview:nxw_newDocument_after_view_fancyform:File']], description="Create file: New document") fl.assert_('document_create' in fl.getBody(), "File form not found") fl.post(fl.server_url + "/create_document.faces", params=[ ['document_create:nxl_heading:nxw_title', title], ['document_create:nxl_heading:nxw_description', description], ['document_create:nxl_file:nxw_file:nxw_file_file:choice', file_path and 'upload' or 'none'], ['document_create:nxl_file:nxw_file:nxw_file_file:upload', Upload(file_path or '')], ['document_create:nxw_documentCreateButtons_CREATE_DOCUMENT', 'Create'], ['document_create', 'document_create'], ['javax.faces.ViewState', fl.getLastJsfState()]], description="Create file: Submit") fl.assert_('File saved' in fl.getBody()) return self
def test_distribution(self): # The description should be set in the configuration file server_url = self.server_url # begin of test --------------------------------------------- lipsum = self._lipsum today = datetime.today().strftime('%m/%d/%y') randSender = self.getRandSender() receiver = self.getRandReceiver() self.post(server_url + "/nxstartup.faces", params=[['user_name', randSender[0]], ['user_password', randSender[1]], ['requestedUrl', ''], ['form_submitted_marker', ''], ['Submit', 'Connexion']], description="Log in") self.assert_('You are logged as ' + randSender[0] in self.getBody()) self.get(server_url + "/nxpath/default/correspondence/mailboxes/" + randSender[0] + "@mailbox_view?tabId=&conversationId=0NXMAIN", description="View personal mailbox") self.assert_('Create an incoming mail' in self.getBody()) """Create incoming mail.""" self.post(server_url + "/correspondence/mailbox/mailbox_view.faces", params=[['j_id245', 'j_id245'], ['javax.faces.ViewState', self.getLastJsfState()], ['j_id226:j_id227', 'j_id226:j_id227'], ['j_id226_SUBMIT', '1']], description="View mail form") self.assert_( 'nxl_head_correspondence_incoming_document' in self.getBody()) self.post( server_url + "/correspondence/mail/create_correspondence_document.faces", params= [[ 'AJAXREQUEST', 'document_create:nxl_correspondence_document:nxw_contactsRecipients:nxw_contactsRecipients_region' ], ['document_create', 'document_create'], ['document_create:nxl_correspondence_document:nxw_title', ''], [ 'document_create:nxl_correspondence_document:nxw_document_type', '2' ], [ 'document_create:nxl_correspondence_document:nxw_sending_date', '' ], [ 'document_create_link_hidden_', 'document_create:nxl_correspondence_document:nxw_sending_date:trigger' ], [ 'document_create_link_hidden_', 'document_create:nxl_correspondence_document:nxw_receive_date:trigger' ], [ 'document_create_link_hidden_', 'document_create:nxl_correspondence_document:nxw_document_date:trigger' ], [ 'document_create_link_hidden_', 'document_create:nxl_head_correspondence_incoming_document:nxw_scan_date:trigger' ], [ 'document_create:nxl_correspondence_document:nxw_receive_date', '' ], [ 'document_create:nxl_correspondence_document:nxw_document_date', '' ], [ 'document_create:nxl_correspondence_document:nxw_confidentiality', '4' ], ['document_create:nxl_correspondence_document:nxw_origin', ''], ['document_create:nxl_correspondence_document:nxw_reference', ''], ['document_create:nxl_correspondence_document:nxw_body', ''], ['mce_editor_0_styleSelect', ''], ['mce_editor_0_formatSelect', ''], [ 'document_create:nxl_head_correspondence_incoming_document:nxw_scan_site', '' ], [ 'document_create:nxl_head_correspondence_incoming_document:nxw_scan_date', '' ], [ 'document_create:nxl_file:nxw_file:nxw_file_file:choice', 'none' ], ['document_create:nxl_file:nxw_file:nxw_file_file:upload', ''], ['javax.faces.ViewState', self.getLastJsfState()], ['type', 'add'], [ 'document_create:nxl_correspondence_document:nxw_contactsRecipients:nxw_contactsRecipients_add', 'document_create:nxl_correspondence_document:nxw_contactsRecipients:nxw_contactsRecipients_add' ], ['for', 'nxw_contactsRecipients_list']], description="Add recipient") self.post( server_url + "/correspondence/mail/create_correspondence_document.faces", params= [[ 'AJAXREQUEST', 'document_create:nxl_correspondence_document:nxw_contactsSenders:nxw_contactsSenders_region' ], ['document_create', 'document_create'], ['document_create:nxl_correspondence_document:nxw_title', ''], [ 'document_create:nxl_correspondence_document:nxw_document_type', '2' ], [ 'document_create:nxl_correspondence_document:nxw_contactsRecipients:nxw_contactsRecipients_list:0:nxw_contactsRecipients_name', '' ], [ 'document_create:nxl_correspondence_document:nxw_contactsRecipients:nxw_contactsRecipients_list:0:nxw_contactsRecipients_surname', '' ], [ 'document_create:nxl_correspondence_document:nxw_contactsRecipients:nxw_contactsRecipients_list:0:nxw_contactsRecipients_service', '' ], [ 'document_create:nxl_correspondence_document:nxw_sending_date', '' ], [ 'document_create_link_hidden_', 'document_create:nxl_correspondence_document:nxw_sending_date:trigger' ], [ 'document_create_link_hidden_', 'document_create:nxl_correspondence_document:nxw_receive_date:trigger' ], [ 'document_create_link_hidden_', 'document_create:nxl_correspondence_document:nxw_document_date:trigger' ], [ 'document_create_link_hidden_', 'document_create:nxl_head_correspondence_incoming_document:nxw_scan_date:trigger' ], [ 'document_create:nxl_correspondence_document:nxw_receive_date', '' ], [ 'document_create:nxl_correspondence_document:nxw_document_date', '' ], [ 'document_create:nxl_correspondence_document:nxw_confidentiality', '4' ], ['document_create:nxl_correspondence_document:nxw_origin', ''], ['document_create:nxl_correspondence_document:nxw_reference', ''], ['document_create:nxl_correspondence_document:nxw_body', ''], ['mce_editor_0_styleSelect', ''], ['mce_editor_0_formatSelect', ''], [ 'document_create:nxl_head_correspondence_incoming_document:nxw_scan_site', '' ], [ 'document_create:nxl_head_correspondence_incoming_document:nxw_scan_date', '' ], [ 'document_create:nxl_file:nxw_file:nxw_file_file:choice', 'none' ], ['document_create:nxl_file:nxw_file:nxw_file_file:upload', ''], ['javax.faces.ViewState', self.getLastJsfState()], [ 'document_create:nxl_correspondence_document:nxw_contactsSenders:nxw_contactsSenders_add', 'document_create:nxl_correspondence_document:nxw_contactsSenders:nxw_contactsSenders_add' ], ['type', 'add'], ['for', 'nxw_contactsSenders_list']], description="Add sender") self.post( server_url + "/correspondence/mail/create_correspondence_document.faces", params= [['document_create', 'document_create'], [ 'document_create:nxl_correspondence_document:nxw_title', lipsum.getSubject() ], [ 'document_create:nxl_correspondence_document:nxw_document_type', '2' ], [ 'document_create:nxl_correspondence_document:nxw_contactsRecipients:nxw_contactsRecipients_list:0:nxw_contactsRecipients_name', lipsum.getWord() ], [ 'document_create:nxl_correspondence_document:nxw_contactsRecipients:nxw_contactsRecipients_list:0:nxw_contactsRecipients_surname', lipsum.getWord() ], [ 'document_create:nxl_correspondence_document:nxw_contactsRecipients:nxw_contactsRecipients_list:0:nxw_contactsRecipients_service', lipsum.getWord() ], [ 'document_create:nxl_correspondence_document:nxw_sending_date', today + ' 1:00 PM' ], [ 'document_create:nxl_correspondence_document:nxw_receive_date', today + ' 2:00 PM' ], [ 'document_create:nxl_correspondence_document:nxw_document_date', today + ' 11:00 AM' ], [ 'document_create:nxl_correspondence_document:nxw_confidentiality', '4' ], [ 'document_create:nxl_correspondence_document:nxw_contactsSenders:nxw_contactsSenders_list:0:nxw_contactsSenders_name', lipsum.getWord() ], [ 'document_create:nxl_correspondence_document:nxw_contactsSenders:nxw_contactsSenders_list:0:nxw_contactsSenders_surname', lipsum.getWord() ], [ 'document_create:nxl_correspondence_document:nxw_contactsSenders:nxw_contactsSenders_list:0:nxw_contactsSenders_service', lipsum.getWord() ], [ 'document_create:nxl_correspondence_document:nxw_origin', lipsum.getAddress() ], [ 'document_create:nxl_correspondence_document:nxw_reference', lipsum.getUniqWord() ], [ 'document_create:nxl_correspondence_document:nxw_body', lipsum.getParagraph() ], [ 'document_create:nxl_head_correspondence_incoming_document:nxw_scan_site', 'nuxeo' ], [ 'document_create:nxl_head_correspondence_incoming_document:nxw_scan_date', today + ' 10:00 AM' ], [ 'document_create:nxl_file:nxw_file:nxw_file_file:choice', 'upload' ], ['document_create_SUBMIT', '1'], [ 'document_create:nxl_file:nxw_file:nxw_file_file:upload', Upload("hello.pdf") ], ['document_create:j_id365', 'Create'], ['javax.faces.ViewState', self.getLastJsfState()]], description="Submit new mail") self.assert_('Incoming mail saved' in self.getBody()) self.post(server_url + "/correspondence/mail/view_correspondence_envelope.faces", params=[['javax.faces.ViewState', self.getLastJsfState()], ['j_id340_SUBMIT', '1'], [ 'j_id340:j_id341:j_id342:0:j_id343', 'j_id340:j_id341:j_id342:0:j_id343' ]], description="View distribution form") self.assert_('distribution_recipients' in self.getBody()) self.post( server_url + "/correspondence/mail/distribution_correspondence_envelope.faces", params= [[ 'AJAXREQUEST', 'distribution_recipients:nxl_correspondence_recipients:j_id328' ], ['distribution_recipients', 'distribution_recipients'], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggest', receiver[0] ], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggestionBox_selection', '' ], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_copy_recipients_suggest', '' ], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_copy_recipients_suggestionBox_selection', '' ], ['distribution_recipients:comment', ''], ['javax.faces.ViewState', self.getLastJsfState()], [ 'ajaxSingle', 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggestionBox' ], ['mailboxSuggestionSearchType', ''], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggestionBox', 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggestionBox' ], ['inputvalue', receiver[0]], ['AJAX:EVENTS_COUNT', '1']], description="Search receiver") self.assert_(receiver[0] in self.getBody()) self.post( server_url + "/correspondence/mail/distribution_correspondence_envelope.faces", params= [[ 'AJAXREQUEST', 'distribution_recipients:nxl_correspondence_recipients:j_id328' ], ['distribution_recipients', 'distribution_recipients'], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggest', '' ], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggestionBox_selection', '0' ], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_copy_recipients_suggest', '' ], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_copy_recipients_suggestionBox_selection', '' ], ['distribution_recipients:comment', ''], ['javax.faces.ViewState', self.getLastJsfState()], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggestionBox:j_id335', 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggestionBox:j_id335' ], ['suggestionSelectionListId', 'nxw_action_recipients_list']], description="Select receiver") self.post( server_url + "/correspondence/mail/distribution_correspondence_envelope.faces", params= [['distribution_recipients', 'distribution_recipients'], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggest', '' ], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_action_recipients_suggestionBox_selection', '' ], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_copy_recipients_suggest', '' ], [ 'distribution_recipients:nxl_correspondence_recipients:nxw_copy_recipients_suggestionBox_selection', '' ], ['distribution_recipients:comment', lipsum.getSentence()], ['distribution_recipients:j_id389', 'Send'], ['distribution_recipients_SUBMIT', '1'], ['javax.faces.ViewState', self.getLastJsfState()]], description="Send mail") self.assert_('The distribution is done' in self.getBody()) self.get(server_url + "/logout", description="Log out")
def submit_app(self): # try to submit an app ret = self.get('/developers/submit/app', ok_codes=[200, 302]) # generate a random web-app manifest random_id = uuid.uuid1().hex manifest_url = WEBAPP % random_id # we need to accept the TOS once per user if 'read_dev_agreement' in ret.body: params = [['read_dev_agreement', 'True']] add_csrf_token(ret, params) ret = self.post(ret.url, params=params) # submit the manifest params = [['manifest', manifest_url]] add_csrf_token(ret, params) ret = self.post('/developers/upload-manifest', params=params) data = json.loads(ret.body) validation = data['validation'] app_exists = False if isinstance(validation, dict) and 'messages' in validation: messages = [m['message'] for m in data['validation']['messages']] app_exists = 'already' in ' '.join(messages) # we should be able to test editing the app if app_exists: return if isinstance(validation, dict) and 'errors' in validation: self.assertEqual(data['validation']['errors'], 0, data) # now we can submit the app basics, first load the form again ret = self.get('/developers/submit/app/manifest') params = [['upload', data['upload']], ['free', 'free-os'], ['free', 'free-desktop'], ['free', 'free-phone'], ['free', 'free-tablet']] add_csrf_token(ret, params) ret = self.post('/developers/submit/app/manifest', params=params) self.assertTrue('/submit/app/details/' in ret.url, ret.url) app_slug = ret.url.split('/')[-1] # upload icon params = [['upload_image', Upload(ICON)]] add_csrf_token(ret, params) ret = self.post('/developers/app/%s/upload_icon' % app_slug, params=params) data = json.loads(ret.body) self.assertEqual(len(data['errors']), 0, data) icon_hash = data['upload_hash'] # upload screenshot ret = self.get('/developers/submit/app/details/%s' % app_slug) params = [['upload_image', Upload(SCREENSHOT)]] add_csrf_token(ret, params) ret = self.post('/developers/app/%s/upload_image' % app_slug, params=params) data = json.loads(ret.body) self.assertEqual(len(data['errors']), 0, data) screenshot_hash = data['upload_hash'] # fill in some more app details ret = self.get('/developers/submit/app/details/%s' % app_slug) params = [ ['slug', app_slug], ['slug_en-us', app_slug], ['name_en-us', app_slug], ['summary_en-us', 'HA Test web app'], ['privacy_policy_en-us', 'We sell all your data!'], ['support_email_en-us', '*****@*****.**'], ['icon_upload_hash', icon_hash], ['icon_upload_hash_en-us', icon_hash], ['icon_type', 'image/png'], ['icon_type_en-us', 'image/png'], ['categories', '167'], ['categories_en-us', '167'], ['files-0-position', '0'], ['files-0-position_en-us', '0'], ['files-0-upload_hash', screenshot_hash], ['files-0-upload_hash_en-us', screenshot_hash], ['files-0-unsaved_image_type', 'image/png'], ['files-0-unsaved_image_type_en-us', 'image/png'], ['files-TOTAL_FORMS', '1'], ['files-TOTAL_FORMS_en-us', '1'], ['files-INITIAL_FORMS', '0'], ['files-INITIAL_FORMS_en-us', '0'], ['files-MAX_NUM_FORMS', '1'], ['files-MAX_NUM_FORMS_en-us', '1'], ] token = add_csrf_token(ret, params) if token: # work around creative code in app edit form params.append(['csrfmiddlewaretoken_en-us', token]) # hack in the current_locale cookie cookies = self._browser.cookies morsel = Morsel() morsel.set('current_locale', 'en-us', 'en-us') for domain, value in cookies.items(): value['/'].setdefault('current_locale', morsel) # fill details and submit ret = self.post(ret.url, params=params) # finally delete the app ret = self.get('/developers/app/%s/status' % app_slug) params = [] add_csrf_token(ret, params) self.post('/developers/app/%s/delete' % app_slug, params=params)
def test_common(self): try: #获取测试网页的数量 page_number = int(self.conf_get("pages", "page_number")) #获取需测试网页编号 test_page_list_conf = self.conf_get("pages", "test_page_list") for page_index in range(page_number): section = "page_%s_section" % page_index if test_page_list_conf.lower() not in ["noset", "all"]: if page_index not in json.loads(test_page_list_conf): continue elif test_page_list_conf.lower() == "noset": if "false" == self.conf_get(section, "need_test").lower(): continue http_method = self.conf_get(section, "page_method") function = getattr(self, http_method.lower()) self.url_path = self.conf_get(section, "page_path") request_type = self.conf_get(section, "request_type").lower() if request_type == "none": self.request = None elif request_type == "data": data_type = self.conf_get(section, "data_type") data = self.conf_get(section, "data") if data.startswith("@"): data = open(data[1:]).read() self.request = Data(data_type, data) elif request_type == "params": data = json.loads(self.conf_get(section, "data").replace("'", '"')) for items in data: if items[1].startswith("upload@"): items[1] = Upload(items[1][7:]) elif items[1].startswith("@"): items[1] = open(items[1][1:]).read() #这里可能需要处理一下数据,请填写自定义代码 pass self.request = data ok_codes = self.conf_get(section, "ok_codes") if ok_codes.lower() != "none": ok_codes = map(lambda x:int(x.replace(" ", "")), ok_codes.split(",")) else: ok_codes = None #添加头 try: self.clearHeaders() heads = self.conf_get(section, "headers") for head in heads.split("&&&"): item = head.split("===") self.addHeader(item[0], item[1]) except NoOptionError, ex: pass #前处理 self.request_preprocess(page_index) #接口调用 self.response = function(self.host + self.url_path, self.request, description = self.host + self.url_path, ok_codes = ok_codes) #print self.response.headers self.log_write(self.response.body) #后处理 self.postprocess(page_index) except Exception,ex: self.error_log_write(str(ex))
def test_viewboard(self): # The description should be set in the configuration file server_url = self.server_url site = self.site # begin of test --------------------------------------------- self.setBasicAuth('admin', 'admin') self.get(server_url + site + "/ploneboard", description="Get /pb/ploneboard") self.get(server_url + site + "/ploneboard/python", description="Get /pb/ploneboard/python") self.get(server_url + site + "/ploneboard/python/add_conversation_form", description="Get /pb/ploneboard/pyth...d_conversation_form") res = self.post( server_url + site + "/ploneboard/python/add_conversation_form", params= [['form.submitted', '1'], ['title', 'This is a test posting in the python forum'], ['text_text_format:default', 'text/html'], [ 'text', '\r\n<p>Guido rocks!</p>\r\n<p>Plone rocks!</p>\r\n<p>Ploneboard rocks!</p>\r\n' ], ['files:list', Upload("")], ['form.button.Post', 'Post comment']], description="Post /pb/ploneboard/pyth...d_conversation_form") url = getPostUrlFromForum(res, 0) res = self.get(url, description="Get latest posting") url = getReplyUrlFromConversation(res, 0) self.get(url + "?title=This+is+a+test+posting+in+the+python+forum", description="Get add comment form") self.post( url, params= [['form.submitted', '1'], ['title', 'Re: This is a test posting in the python forum'], ['text_text_format:default', 'text/html'], [ 'text', 'Previously admin wrote:\r\n<blockquote>\r\n<p>Guido rocks!</p>\r\n<p>Plone rocks!</p>\r\n<p>Ploneboard rocks!</p>\r\n</blockquote>\r\n<p>Zope rocks too!</p>\r\n' ], ['files:list', Upload("")], ['form.button.Post', 'Post comment']], description="Post comment") res = self.get(server_url + site + "/ploneboard/python", description="Get /pb/ploneboard/python") url = getPostUrlFromForum(res, 1) self.get(url, description="Get second last post") self.get(server_url + site + "/ploneboard/python", description="Get /pb/ploneboard/python") self.get(server_url + site + "/ploneboard", description="Get /pb/ploneboard")
def ajouterFichierParapheur(self, urlCourante, filepath): #, htmlPageOrigine): # verification que le fichier existe if not os.path.exists(filepath): print('File not found : ' + filepath) # Il faut conserver le html de la page d'origine pour recuperer des information a l'interieur. # les futur appels a la methode getBody vont retourner le resultat des requetes AJAX. htmlPageOrigine = self.ftest.getBody() # selection du répertoire Acte Intégral. ''' exemple de requete : self.post(server_url + urlCourante, params=[ ['AJAXREQUEST', 'document_properties:documentViewRegion'], ['document_properties:parapheurTree:1::parapheurFolderVideDocAjoutableNodeExpanded', 'true'], ['document_properties:parapheurTree:2::parapheurFolderVideDocAjoutableNodeExpanded', 'true'], ['document_properties:parapheurTree:3::parapheurFolderVideDocAjoutableNodeExpanded', 'true'], ['document_properties:parapheurTree:input', 'document_properties:parapheurTree:1::parapheurFolderVideDocAjoutable'], ['document_properties_SUBMIT', '1'], ['javax.faces.ViewState', extractJsfState(self.ftest.getBody())], ['document_properties:parapheurTree:selectedNode', 'document_properties:parapheurTree:1::parapheurFolderVideDocAjoutable']], description="Post /solonepg/..._view.faces") ''' idNode = extractToken(self.ftest.getBody(), 'document_properties:parapheurTree:1::', '\"><tbody>') self.ftest.post( self.ftest.server_url + urlCourante, params= [['AJAXREQUEST', 'document_properties:documentViewRegion'], [ 'document_properties:parapheurTree:1::parapheurFolderVideDocAjoutableNodeExpanded', 'true' ], [ 'document_properties:parapheurTree:2::parapheurFolderVideDocAjoutableNodeExpanded', 'true' ], [ 'document_properties:parapheurTree:3::parapheurFolderVideDocAjoutableNodeExpanded', 'true' ], [ 'document_properties:parapheurTree:input', 'document_properties:parapheurTree:1::parapheurFolderVideDocAjoutable' ], ['document_properties_SUBMIT', '1'], ['javax.faces.ViewState', extractJsfState(self.ftest.getBody())], [ 'document_properties:parapheurTree:selectedNode', 'document_properties:parapheurTree:1::parapheurFolderVideDocAjoutable' ]], description="AJAX : Select bouton Acte intégral") # Clic sur 'Ajouter document' ''' exemple de requete : self.post(server_url + urlCourante, params=[ ['AJAXREQUEST', 'document_properties:documentViewRegion'], ['document_properties:parapheurTree:1::parapheurFolderVideDocAjoutableNodeExpanded, 'true'], ['document_properties:parapheurTree:2::parapheurFolderVideDocAjoutableNodeExpanded', 'true'], ['document_properties:parapheurTree:3::parapheurFolderVideDocAjoutableNodeExpanded', 'true'], ['document_properties:parapheurTree:input', 'document_properties:parapheurTree:1::parapheurFolderVideDocAjoutable'], ['document_properties_SUBMIT', '1'], ['javax.faces.ViewState', extractJsfState(self.ftest.getBody())], ['SelectedNodeId', '9881bbf1-7c04-42b8-90e9-9f5f37bdf7be'], ['SelectedNodeType', 'ParapheurFolder'], ['document_properties:j_id1101', 'document_properties:j_id1101'], ['ajaxSingle', 'document_properties:j_id1101']], description="Post /solonepg/..._view.faces") ''' # idNode a la même valeur que dans la requete precedente #idDocumentProperties = extractToken(htmlPageOrigine, 'document_properties:j_id', '\',\'parameters') SelectedNodeId = extractToken(htmlPageOrigine, "'show',{'id': '", "', 'type':") #print(SelectedNodeId) SelectedNodeId = SelectedNodeId.replace('\\x2D', '-') # print(SelectedNodeId) self.ftest.post( self.ftest.server_url + urlCourante, params= [['AJAXREQUEST', 'document_properties:documentViewRegion'], [ 'document_properties:parapheurTree:1::parapheurFolderVideDocAjoutableNodeExpanded', 'true' ], [ 'document_properties:parapheurTree:2::parapheurFolderVideDocAjoutableNodeExpanded', 'true' ], [ 'document_properties:parapheurTree:3::parapheurFolderVideDocAjoutableNodeExpanded', 'true' ], [ 'document_properties:parapheurTree:input', 'document_properties:parapheurTree:1::parapheurFolderVideDocAjoutable' ], ['document_properties_SUBMIT', '1'], ['javax.faces.ViewState', extractJsfState(self.ftest.getBody())], ['SelectedNodeId', SelectedNodeId], ['SelectedNodeType', 'ParapheurFolder'], ['document_properties:j_id1787', 'document_properties:j_id1787'], ['ajaxSingle', 'document_properties:j_id1787']], description="AJAX : Ajouter document'") # ajout du fichier #print("### Upload du fichier : " + filepath) filename = os.path.basename(filepath) # rich face random uid upload_uid = str(random.random()) #Attention, ne pas descendre les parametres passés dans la string dans le tableau self.ftest.post( self.ftest.server_url + urlCourante + "?_richfaces_upload_uid=" + upload_uid + "&editFileForm:uploadParapheurFiles=editFileForm:uploadParapheurFiles&_richfaces_upload_file_indicator=true&AJAXREQUEST=editFileRegion", params=[ ['editFileForm:uploadParapheurFiles:file', Upload(filepath)], # adresse du fichier ['editFileForm_SUBMIT', '1'], [ 'javax.faces.ViewState', extractJsfState(self.ftest.getBody()) ] ], description="AJAX : Upload du fichier") self.ftest.post( self.ftest.server_url + urlCourante, params=[['AJAXREQUEST', 'editFileRegion'], ['editFileForm:uploadParapheurFiles:file', ''], ['editFileForm_SUBMIT', '1'], [ 'javax.faces.ViewState', extractJsfState(self.ftest.getBody()) ], ['ajaxSingle', 'editFileForm:uploadParapheurFiles'], [ 'editFileForm:uploadParapheurFiles', 'editFileForm:uploadParapheurFiles' ], ['AJAX:EVENTS_COUNT', '1']], description= "AJAX : Requete post-upload : Reaffichage de la boite de telechargement." ) idEditForm = extractToken(htmlPageOrigine, '\"editFileForm:j_id', '\"') self.ftest.post(self.ftest.server_url + urlCourante, params=[['AJAXREQUEST', 'editFileRegion'], ['editFileForm:uploadParapheurFiles:file', ''], ['editFileForm_SUBMIT', '1'], [ 'javax.faces.ViewState', extractJsfState(self.ftest.getBody()) ], [ 'editFileForm:j_id' + idEditForm, 'editFileForm:j_id' + idEditForm ], ['AJAX:EVENTS_COUNT', '1']], description="AJAX prévalidation upload") #Validation de l'upload du fichier self.ftest.post( self.ftest.server_url + urlCourante, params=[['AJAXREQUEST', 'editFileRegion'], ['editFileForm:uploadParapheurFiles:file', ''], ['editFileForm_SUBMIT', '1'], [ 'javax.faces.ViewState', extractJsfState(self.ftest.getBody()) ], ['ajaxSingle', 'editFileForm:editFileButtonText'], [ 'editFileForm:editFileButtonText', 'editFileForm:editFileButtonText' ], ['AJAX:EVENTS_COUNT', '1']], description="AJAX : Validation definitive de l'upload") # les reponses AJAX ne permettent pas de savoir si le document a bien ete uploade # Verification que le dossier dispose bien d'un document ayant le nom de celui que l'on vient d'ajouter. # Attention, si on ajoute 2 documents avec le meme nom, un seul d'entre eux est bien uploade. self.ftest.assert_( '\'name\': \'' + filename + '\', \'type\': \'ParapheurFichier\'' in self.ftest.getBody()) return htmlPageOrigine