Changeset 2521 in products


Ignore:
Timestamp:
Jun 11, 2010 1:13:05 PM (14 years ago)
Author:
mylan
Message:

#192: updated tests for uploading verification file.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testqPloneGoogleSitemaps.py

    r2409 r2521  
    44 
    55from base import * 
     6from cgi import FieldStorage 
     7from tempfile import TemporaryFile, NamedTemporaryFile 
     8 
     9from OFS.Image import cookId 
     10from Products.CMFPlone.utils import _createObjectByType 
     11from ZPublisher.HTTPRequest import FileUpload 
     12 
    613from zope.component import getSiteManager 
    714from archetypes.schemaextender.interfaces import ISchemaExtender 
    8 from Products.CMFPlone.utils import _createObjectByType 
     15 
     16def prepareUploadFile(prefix=""): 
     17    """ Helper function for prerare file to uploading """ 
     18    fp = NamedTemporaryFile(mode='w+', prefix=prefix) 
     19    fp.write("google-site-verification: " + fp.name) 
     20    fp.seek(0,2) 
     21    fsize = fp.tell() 
     22    fp.seek(0) 
     23 
     24    env = {'REQUEST_METHOD':'PUT'} 
     25    headers = {'content-type':'text/plain', 
     26               'content-length': fsize, 
     27               'content-disposition':'attachment; filename=%s' % fp.name} 
     28    fs = FieldStorage(fp=fp, environ=env, headers=headers) 
     29    return FileUpload(fs), fp 
    930 
    1031class TestGoogleSitemapsInstallation(TestCase): 
     
    171192 
    172193    def testVerificationFileCreation(self): 
    173         self.portal.gsm_create_verify_file('verif_file') 
    174  
    175         vf_created = hasattr(self.portal, 'verif_file') 
     194        fp, fname = None, None 
     195        try: 
     196            fupload, fp = prepareUploadFile() 
     197            fname, ftitle = cookId('', '', fupload) 
     198            self.portal.REQUEST.form['verification_file'] = fupload 
     199            self.portal.gsm_create_verify_file() 
     200        finally: 
     201            if fp: fp.close() 
     202        import pdb;pdb.set_trace() 
     203        vf_created = hasattr(self.portal, fname) 
    176204        self.assert_(vf_created, 'Verification file not created') 
    177205 
     
    179207        verifyConfigUrl = '/'+self.portal.absolute_url(1) + '/prefs_gsm_verification' 
    180208        verif_config = self.publish(verifyConfigUrl, self.auth).getBody() 
    181         rexp_input_acitve = re.compile('<input\s+name="verify_filename"\s+([^>]*)>', re.I|re.S) 
     209        rexp_input_acitve = re.compile('<input\s+name="verification_file"\s+([^>]*)>', re.I|re.S) 
    182210        rexp_button_acitve = re.compile('<input\s+name="form.button.CreateFile"\s+([^>]*)>', re.I|re.S) 
    183211        rexp_delete_button = re.compile('<input\s+name="form.button.DeleteFile"\s+[^>]*>', re.I|re.S) 
     
    191219        self.assert_(not delete_button) 
    192220 
    193         self.portal.gsm_create_verify_file('verif_file') 
     221        fp, fname = None, None 
     222        try: 
     223            fupload, fp = prepareUploadFile() 
     224            fname, ftitle = cookId('', '', fupload) 
     225            self.portal.REQUEST.form['verification_file'] = fupload 
     226            self.portal.gsm_create_verify_file() 
     227        finally: 
     228            if fp: fp.close() 
    194229 
    195230        input_acitve = rexp_input_acitve.search(verif_config) 
     
    203238    def testMultiplyVerificationFiles(self): 
    204239        verifyConfigUrl = '/'+self.portal.absolute_url(1) + '/prefs_gsm_verification' 
    205  
    206         form = {'verify_filename':'verif_file_1', 
    207                 'form.button.CreateFile': 'Create verification file', 
    208                 'form.submitted':1} 
    209         post_data = StringIO(urlencode(form)) 
    210         response = self.publish(verifyConfigUrl, request_method='POST', 
    211                                 stdin=post_data, basic=self.auth) 
    212         self.assertEqual(response.getStatus(), 200) 
    213         self.assert_('verif_file_1' in self.gsm_props.getProperty('verification_filenames',[]), 
    214                      self.gsm_props.getProperty('verification_filenames',[])) 
    215  
    216         form = {'verify_filename':'verif_file_2', 
    217                 'form.button.CreateFile': 'Create verification file', 
    218                 'form.submitted':1} 
    219         post_data = StringIO(urlencode(form)) 
    220         response = self.publish(verifyConfigUrl, request_method='POST', 
    221                                 stdin=post_data, basic=self.auth) 
    222         self.assertEqual(response.getStatus(), 200) 
    223         self.assert_([1 for vf in ['verif_file','verif_file_2'] \ 
    224                       if vf in self.gsm_props.getProperty('verification_filenames',[])], 
    225                      self.gsm_props.getProperty('verification_filenames',[])) 
     240        fnames = [] 
     241        for i in [1,2]: 
     242            fp, fname, response = None, None, None 
     243            try: 
     244                fupload, fp = prepareUploadFile(prefix=str(i)) 
     245                fname, ftitle = cookId('', '', fupload) 
     246                form = {'form.button.CreateFile': 'Create verification file', 
     247                        'form.submitted': 1} 
     248                extra_update = {'verification_file': fupload} 
     249                response = self.publish(verifyConfigUrl, request_method='POST', 
     250                                        stdin=StringIO(urlencode(form)), 
     251                                        basic=self.auth, extra=extra_update) 
     252            finally: 
     253                if fp: fp.close() 
     254             
     255            self.assertEqual(response.getStatus(), 200) 
     256            self.assert_(fname in self.gsm_props.getProperty('verification_filenames',[]), 
     257                             self.gsm_props.getProperty('verification_filenames',[])) 
     258            fnames.append(fname) 
     259 
     260        self.assertEqual(len([1 for vf in fnames \ 
     261            if vf in self.gsm_props.getProperty('verification_filenames',[])]), 2, 
     262            self.gsm_props.getProperty('verification_filenames',[])) 
    226263 
    227264 
Note: See TracChangeset for help on using the changeset viewer.