예제 #1
0
    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/")
예제 #2
0
    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
예제 #3
0
    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")
예제 #4
0
    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
예제 #5
0
 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()
예제 #6
0
 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')
예제 #7
0
    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")
예제 #8
0
파일: pages.py 프로젝트: live0717/nuxeo
    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")
예제 #10
0
    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)
예제 #11
0
 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")
예제 #13
0
    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