[1] | 1 | from DateTime import DateTime |
---|
| 2 | |
---|
| 3 | from Products.CMFCore.utils import getToolByName |
---|
| 4 | |
---|
| 5 | from Products.PloneTestCase import PloneTestCase |
---|
| 6 | |
---|
| 7 | from Products.qMemberdataExport.config import * |
---|
| 8 | |
---|
| 9 | PRODUCTS=('qMemberdataExport',) |
---|
| 10 | |
---|
| 11 | map(PloneTestCase.installProduct, PRODUCTS) |
---|
| 12 | PloneTestCase.setupPloneSite(products=PRODUCTS) |
---|
| 13 | |
---|
| 14 | PRODUCT = 'qMemberdataExport' |
---|
| 15 | |
---|
| 16 | def maps_login(self, role): |
---|
| 17 | """ Utility method for login under required role """ |
---|
| 18 | from Testing.ZopeTestCase.PortalTestCase import user_name, user_password |
---|
| 19 | if role == 'manager': |
---|
| 20 | self.loginAsPortalOwner() |
---|
| 21 | elif role == 'member': |
---|
| 22 | self.login(user_name) |
---|
| 23 | elif role == 'another_member': |
---|
| 24 | self.login('another_member') |
---|
| 25 | elif role == 'anonym': |
---|
| 26 | self.logout() |
---|
| 27 | |
---|
| 28 | def parseCSV(self, data): |
---|
| 29 | """ Utility function for parsing csv and extracting some data form portal_memberdata """ |
---|
| 30 | import csv |
---|
| 31 | from cStringIO import StringIO |
---|
| 32 | |
---|
| 33 | props = ['id',] + getToolByName(self.portal, 'portal_memberdata').propertyIds() |
---|
| 34 | reader = csv.DictReader(StringIO(data), fieldnames = props, quoting=csv.QUOTE_ALL) |
---|
| 35 | i = 0 |
---|
| 36 | res = [] |
---|
| 37 | for row in reader: |
---|
| 38 | properties = {} |
---|
| 39 | if i != 0 and row['id'] != 'test_user_1_': |
---|
| 40 | for field in row.keys(): |
---|
| 41 | if field in PROPERTIES_TO_COMPARE: properties[field] = row[field] |
---|
| 42 | res.append(properties) |
---|
| 43 | i += 1 |
---|
| 44 | self.failUnless(i-2 == len(PORTAL_MEMBERS), 'CSV output does not matcht to amount of portal members') |
---|
| 45 | members = [memb.copy() for memb in PORTAL_MEMBERS] |
---|
| 46 | for memb in members: del memb['roles'] |
---|
| 47 | return (members, res) |
---|
| 48 | |
---|
| 49 | def addMember(self, username, fullname, email, roles, last_login_time): |
---|
| 50 | """ Utility function for simpler way of adding portal members with default password 'secret' """ |
---|
| 51 | self.membership.addMember(username, 'secret', roles, []) |
---|
| 52 | member = self.membership.getMemberById(username) |
---|
| 53 | member.setMemberProperties({'fullname': fullname, 'email': email, |
---|
| 54 | 'last_login_time': DateTime(last_login_time),}) |
---|
| 55 | |
---|
| 56 | # testing stuff for adding members to portal |
---|
| 57 | |
---|
| 58 | PROPERTIES_TO_COMPARE = ['id', 'fullname', 'email', 'last_login_time'] |
---|
| 59 | |
---|
| 60 | PORTAL_MEMBERS = [{ |
---|
| 61 | 'id' : 'Fred', |
---|
| 62 | 'fullname' : 'Fred Flintstone', |
---|
| 63 | 'email' : 'fred@bedrock.com', |
---|
| 64 | 'roles' : ['Member', 'Reviewer'], |
---|
| 65 | 'last_login_time' : '2002/01/01'}, |
---|
| 66 | { |
---|
| 67 | 'id' : 'admin', |
---|
| 68 | 'fullname' : 'Admin', |
---|
| 69 | 'email' : 'admin@admin.com', |
---|
| 70 | 'roles' : ['Manager'], |
---|
| 71 | 'last_login_time' : '2003/12/28'}, |
---|
| 72 | { |
---|
| 73 | 'id' : 'barney', |
---|
| 74 | 'fullname' : 'Barney Rubble', |
---|
| 75 | 'email' : 'barney@bedrock.com', |
---|
| 76 | 'roles' : ['Member'], |
---|
| 77 | 'last_login_time' : '2002/01/01'}, |
---|
| 78 | { |
---|
| 79 | 'id' : 'brubble', |
---|
| 80 | 'fullname' : 'Bambam Rubble', |
---|
| 81 | 'email' : 'bambam@bambam.net', |
---|
| 82 | 'roles' : ['Member'], |
---|
| 83 | 'last_login_time' : '2003/12/31'}, |
---|
| 84 | ] |
---|