source: products/qMemberdataExport/tags/0.0.2/tests/testFunctional.py @ 1552

Last change on this file since 1552 was 1, checked in by myroslav, 19 years ago

Building directory structure

  • Property svn:eol-style set to native
File size: 2.8 KB
Line 
1
2""" This module contains class that tests python script in portal root """
3
4import os, sys, string
5if __name__ == '__main__':
6    execfile(os.path.join(sys.path[0], 'framework.py'))
7
8from commonTestingStuff import *
9
10class TestFunctional(PloneTestCase.FunctionalTestCase):
11    """ Class for functional testing """
12
13    def afterSetUp(self):
14        """ AfterSetUp features """
15
16        self.auth = 'admin:secret'
17        self.loginAsPortalOwner()
18        self.qi = getToolByName(self.portal, 'portal_quickinstaller')
19        self.membership = self.portal.portal_membership
20        self.path = '%s/%s' % (self.portal.id, EXTERNAL_METHOD)
21        for m in PORTAL_MEMBERS:
22            addMember(self, m['id'], m['fullname'], m['email'], m['roles'], m['last_login_time'])
23
24    def testExternalMethod(self):
25        """ Test external method script for publishing """
26
27        if cmfmember_installed:
28            getToolByName(self.portal, 'cmfmember_control').upgrade(swallow_errors=0)
29        response = self.publish(self.path, self.auth, extra={'exclude_props':[], 'include_props':INCLUDE_PROPS})
30        forCompare = parseCSV(self, response.getBody())
31        self.failUnless(forCompare[0] == forCompare[1], '%s external method return bad CSV value' % EXTERNAL_METHOD)
32
33    def testContentDispositionResponseHeader(self):
34        """ Test response for content-disposition header """
35
36        import re
37        pattern = re.compile(r'\s*attachment\;\s*filename=\s*memberdata\-\d{4}\-\d{2}\-\d{2}\-\d{2}\-\d{2}\-\d{2}\.csv\s*', re.I)
38        response = self.publish(self.path, self.auth, extra={'exclude_props':[], 'include_props':INCLUDE_PROPS})
39        self.failUnless(pattern.search(response.getHeader('content-disposition')),
40                                       'Bad response header \'Content Disposition\'')
41
42    def testContentTypeResponseHeader(self):
43        """ Test response for content-type header """
44
45        response = self.publish(self.path, self.auth, extra={'exclude_props':[], 'include_props':INCLUDE_PROPS})
46        self.failUnless(response.getHeader('content-type').find('text/csv') != -1,
47                        'Bad response header \'Content Type\'')
48
49    def testExternalMethodSecurity(self):
50        """ Test external method for 'View' permission """
51
52        response = self.publish(self.path, 'barney:secret')
53        type_header = response.getHeader('bobo-exception-type')
54        location_header = response.getHeader('location') or ''
55        self.failUnless(type_header == 'Unauthorized' or location_header.find('login_form') != -1,
56                        'Anonymous user have access to external method')
57
58def test_suite():
59    from unittest import TestSuite, makeSuite
60    suite = TestSuite()
61    suite.addTest(makeSuite(TestFunctional))
62    return suite
63
64if __name__ == '__main__':
65    framework()
Note: See TracBrowser for help on using the repository browser.