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 | ] |
---|