/
personal_preferences.txt
129 lines (98 loc) · 3.91 KB
/
personal_preferences.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
Testing the personal preferences form
=====================================
>>> empty_marker = '--NOVALUE--'
>>> def isEmptyMarker(v):
... if len(v) != 1: return False
... return v[0] == empty_marker
Viewing the personal preferences
--------------------------------
This is about the 'personal-preferences' view.
>>> view_name = '@@personal-preferences'
Viewing user data shouldn't be possible for anonymous users:
>>> self.browser.open("http://nohost/plone/" + view_name)
>>> 'Login Name' in self.browser.contents
True
So let's login as Plone user:
>>> self.browser.open('http://nohost/plone/')
>>> self.browser.getLink('Log in').click()
>>> self.browser.getControl('Login Name').value = 'test_user_1_'
>>> self.browser.getControl('Password').value = 'secret'
>>> self.browser.getControl('Log in').click()
Now we should be able to access the user data panel:
>>> self.browser.open("http://nohost/plone/" + view_name)
>>> 'Login Name' in self.browser.contents
False
>>> self.browser.url.endswith(view_name)
True
We have two controls, one for the start page and one for the language:
>>> isEmptyMarker(self.browser.getControl('Wysiwyg editor').value)
True
>>> self.browser.getControl('Enable external editing').selected
False
>>> isEmptyMarker(self.browser.getControl('Language', index=0).value)
True
The form should be using CSRF protection:
>>> self.browser.getControl(name='_authenticator', index=0)
<Control name='_authenticator' type='hidden'>
Now we click the cancel button:
>>> self.browser.getControl('Cancel').click()
>>> self.browser.url.endswith(view_name)
True
There should be no changes at all:
>>> 'Changes canceled.' in self.browser.contents
True
Modifying values
----------------
>>> self.browser.open('http://nohost/plone/' + view_name)
>>> self.browser.getControl('Wysiwyg editor').value = ['TinyMCE']
>>> self.browser.getControl('Enable external editing').selected = True
>>> self.browser.getControl('Language', index=0).value = ['en']
>>> self.browser.getControl('Save').click()
>>> 'Changes saved' in self.browser.contents
True
Verify that the settings have actually been
changed:
>>> member = self.membership.getMemberById('test_user_1_')
>>> marker = object
>>> member.getProperty('wysiwyg_editor', object)
'TinyMCE'
>>> member.getProperty('ext_editor', object)
True
>>> member.getProperty('language', object)
'en'
And that the form still has the according values:
>>> isEmptyMarker(self.browser.getControl('Wysiwyg editor').value)
False
>>> self.browser.getControl('Wysiwyg editor').value
['TinyMCE']
>>> self.browser.getControl('Enable external editing').selected
True
>>> self.browser.getControl('Language', index=0).value
['en']
Clearing values
---------------
Making an input empty should result in a stored empty string.
>>> self.browser.open('http://nohost/plone/' + view_name)
>>> self.browser.getControl('Wysiwyg editor').value = [empty_marker]
>>> self.browser.getControl('Enable external editing').selected = False
>>> self.browser.getControl('Language', index=0).value = [empty_marker]
>>> self.browser.getControl('Save').click()
>>> 'Changes saved' in self.browser.contents
True
Verify that the settings have actually been
changed:
>>> member = self.membership.getMemberById('test_user_1_')
>>> marker = object
>>> member.getProperty('wysiwyg_editor', object)
''
>>> member.getProperty('ext_editor', object)
False
>>> member.getProperty('language', object)
''
And that the form still has the according values:
>>> isEmptyMarker(self.browser.getControl('Wysiwyg editor').value)
True
>>> self.browser.getControl('Enable external editing').selected
False
>>> isEmptyMarker(self.browser.getControl('Language', index=0).value)
True