source: products/qMemberdataExport/trunk/tests/commonTestingStuff.py

Last change on this file was 1, checked in by myroslav, 18 years ago

Building directory structure

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