source: products/qMemberdataExport/tags/0.0.2/tests/commonTestingStuff.py @ 2111

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

Building directory structure

  • Property svn:eol-style set to native
File size: 4.3 KB
Line 
1from DateTime import DateTime
2
3from Products.CMFCore.utils import getToolByName
4
5from Products.PloneTestCase import PloneTestCase
6
7from Products.qMemberdataExport.config import EXTERNAL_METHOD
8
9try:
10    from Products import CMFMember
11    cmfmember_installed = True
12except ImportError:
13    cmfmember_installed = False
14
15PRODUCTS = ['qMemberdataExport',]
16
17if cmfmember_installed: PRODUCTS.append('CMFMember')
18
19map(PloneTestCase.installProduct, PRODUCTS)
20PloneTestCase.setupPloneSite(products=PRODUCTS)
21
22PRODUCT = 'qMemberdataExport'
23
24def maps_login(self, role):
25    """  Utility method for login under required role """
26    from Testing.ZopeTestCase.PortalTestCase import user_name, user_password
27    if role == 'manager':
28        self.loginAsPortalOwner()
29    elif role == 'member':
30        self.login(user_name)
31    elif role == 'another_member':
32        self.login('another_member')
33    elif role == 'anonym':
34        self.logout()
35
36def parseCSV(self, data):
37    """ Utility function for parsing csv and extracting some data form portal_memberdata """
38    import csv
39    from cStringIO import StringIO
40    from Products.qMemberdataExport import getRegisteredMemberdataHandlers as registry
41    from Products.qMemberdataExport import CMFMemberdataHandler, BaseMemberdataHandler
42
43    datahandler = False
44
45    for handler in registry():
46        try:
47            datahandler = handler(self.portal)
48            break
49        except:
50            pass
51
52    if datahandler:
53        props = datahandler.listAllMemberProperties(exclude_props=EXCLUDE_PROPS, include_props=INCLUDE_PROPS)
54        if cmfmember_installed:
55            self.assertEquals(datahandler.__class__, CMFMemberdataHandler)
56        else:
57            self.assertEquals(datahandler.__class__, BaseMemberdataHandler)
58    else:
59        self.fail('Registry does not have needed memberdata handler')
60
61    reader = csv.DictReader(StringIO(data), fieldnames = props, quoting=csv.QUOTE_ALL)
62
63    i = 0
64    res = []
65    for row in reader:
66        properties = {}
67        if i != 0 and row['id'] not in ['test_user_1_', 'portal_owner']:
68            for field in row.keys():
69                properties[field] = row[field]
70            res.append(properties)
71        i += 1
72
73    self.failUnless(i-2 == len(PORTAL_MEMBERS), 'CSV output does not matcht to amount of portal members')
74
75    members = [memb.copy() for memb in PORTAL_MEMBERS]
76    for memb in members:
77        del memb['roles']
78        del memb['last_login_time']
79
80    return (members, res)
81
82def addMember(self, username, fullname, email, roles, last_login_time):
83    """ Utility function for simpler way of adding portal members with default password 'secret' """
84    self.membership.addMember(username, 'secret', roles, [])
85    member = self.membership.getMemberById(username)
86    member.setMemberProperties({'fullname': fullname, 'email': email,
87                                'last_login_time': DateTime(last_login_time),})
88
89# testing stuff for adding members to portal
90PORTAL_MEMBERS = [{
91                   'id'              : 'Fred',
92                   'fullname'        : 'Fred Flintstone',
93                   'email'           : 'fred@bedrock.com',
94                   'roles'           : ['Member', 'Reviewer'],
95                   'last_login_time' : '2002/01/01'},
96                  {
97                   'id'              : 'admin',
98                   'fullname'        : 'Admin',
99                   'email'           : 'admin@admin.com',
100                   'roles'           : ['Manager'],
101                   'last_login_time' : '2003/12/28'},
102                  {
103                   'id'              : 'barney',
104                   'fullname'        : 'Barney Rubble',
105                   'email'           : 'barney@bedrock.com',
106                   'roles'           : ['Member'],
107                   'last_login_time' : '2002/01/01'},
108                  {
109                   'id'              : 'brubble',
110                   'fullname'        : 'Bambam Rubble',
111                   'email'           : 'bambam@bambam.net',
112                   'roles'           : ['Member'],
113                   'last_login_time' :  '2003/12/31'},
114                 ]
115
116EXCLUDE_PROPS = ['portrait', 'password', 'mail_me',
117                 'confirm_password','login_time', 'last_login_time',
118                 'listed','fc_internal_data', 'review_state',
119                 'roles', 'domains', 'groups']
120
121INCLUDE_PROPS = ['id', 'fullname', 'email']
Note: See TracBrowser for help on using the repository browser.