OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 # If this test is failing, please check these steps. | 6 # If this test is failing, please check these steps. |
7 # | 7 # |
8 # - You introduced a new policy: | 8 # - You introduced a new policy: |
9 # Cool! Edit |policies| in policy_test_cases.py and add an entry for it. | 9 # Cool! Edit |policies| in policy_test_cases.py and add an entry for it. |
10 # See the comment above it for the format. | 10 # See the comment above it for the format. |
(...skipping 10 matching lines...) Expand all Loading... |
21 import logging | 21 import logging |
22 | 22 |
23 import pyauto_functional # must come before pyauto. | 23 import pyauto_functional # must come before pyauto. |
24 import policy_base | 24 import policy_base |
25 import pyauto | 25 import pyauto |
26 | 26 |
27 from policy_test_cases import PolicyPrefsTestCases | 27 from policy_test_cases import PolicyPrefsTestCases |
28 | 28 |
29 | 29 |
30 class PolicyPrefsUITest(policy_base.PolicyTestBase): | 30 class PolicyPrefsUITest(policy_base.PolicyTestBase): |
31 """Tests policies and their impact on the prefs UI.""" | 31 """Tests user policies and their impact on the prefs UI.""" |
32 | 32 |
33 settings_pages = [ | 33 settings_pages = [ |
34 'chrome://settings-frame', | 34 'chrome://settings-frame', |
35 'chrome://settings-frame/searchEngines', | 35 'chrome://settings-frame/searchEngines', |
36 'chrome://settings-frame/passwords', | 36 'chrome://settings-frame/passwords', |
37 'chrome://settings-frame/autofill', | 37 'chrome://settings-frame/autofill', |
38 'chrome://settings-frame/content', | 38 'chrome://settings-frame/content', |
39 'chrome://settings-frame/homePageOverlay', | 39 'chrome://settings-frame/homePageOverlay', |
40 'chrome://settings-frame/languages', | 40 'chrome://settings-frame/languages', |
41 ] | 41 ] |
42 if pyauto.PyUITest.IsChromeOS(): | 42 if pyauto.PyUITest.IsChromeOS(): |
43 settings_pages += [ | 43 settings_pages += [ |
44 'chrome://settings-frame/accounts', | 44 'chrome://settings-frame/accounts', |
45 ] | 45 ] |
46 | 46 |
| 47 def setUp(self): |
| 48 policy_base.PolicyTestBase.setUp(self) |
| 49 if self.IsChromeOS(): |
| 50 self.LoginWithTestAccount() |
47 | 51 |
48 def IsAnyBannerVisible(self): | 52 def IsAnyBannerVisible(self): |
49 """Returns true if any managed prefs banner is visible in the current page. | 53 """Returns true if any managed prefs banner is visible in the current page. |
50 """ | 54 """ |
51 ret = self.ExecuteJavascript(""" | 55 ret = self.ExecuteJavascript(""" |
52 var visible = false; | 56 var visible = false; |
53 var banners = document.querySelectorAll('.managed-prefs-banner'); | 57 var banners = document.querySelectorAll('.managed-prefs-banner'); |
54 for (var i=0; i<banners.length; i++) { | 58 for (var i=0; i<banners.length; i++) { |
55 if (banners[i].parentElement.id == 'templates') | 59 if (banners[i].parentElement.id == 'templates') |
56 continue; | 60 continue; |
57 | 61 |
58 if (window.getComputedStyle(banners[i]).display != 'none') | 62 if (window.getComputedStyle(banners[i]).display != 'none') |
59 visible = true; | 63 visible = true; |
60 } | 64 } |
61 domAutomationController.send(visible.toString()); | 65 domAutomationController.send(visible.toString()); |
62 """) | 66 """) |
63 return ret == 'true' | 67 return ret == 'true' |
64 | 68 |
65 def testNoPoliciesNoBanner(self): | 69 def testNoUserPoliciesNoBanner(self): |
66 """Verifies that the banner isn't present when no policies are in place.""" | 70 """Verifies the banner isn't present when no user policies are in place.""" |
67 | 71 |
68 self.SetPolicies({}) | 72 self.SetUserPolicy({}) |
69 for page in PolicyPrefsUITest.settings_pages: | 73 for page in PolicyPrefsUITest.settings_pages: |
70 self.NavigateToURL(page) | 74 self.NavigateToURL(page) |
71 self.assertFalse(self.IsAnyBannerVisible(), msg= | 75 self.assertFalse(self.IsAnyBannerVisible(), msg= |
72 'Unexpected banner in %s.\n' | 76 'Unexpected banner in %s.\n' |
73 'Please check that chrome/test/functional/policy_prefs_ui.py has an ' | 77 'Please check that chrome/test/functional/policy_prefs_ui.py has an ' |
74 'entry for any new policies introduced.' % page) | 78 'entry for any new policies introduced.' % page) |
75 | 79 |
76 def RunPoliciesShowBanner(self, include_expected, include_unexpected): | 80 def RunUserPoliciesShowBanner(self, include_expected, include_unexpected): |
77 """Tests all the policies on each settings page. | 81 """Tests all the user policies on each settings page. |
78 | 82 |
79 If |include_expected|, pages where the banner is expected will be verified. | 83 If |include_expected|, pages where the banner is expected will be verified. |
80 If |include_unexpected|, pages where the banner should not appear will also | 84 If |include_unexpected|, pages where the banner should not appear will also |
81 be verified. This can take some time. | 85 be verified. This can take some time. |
82 """ | 86 """ |
83 | 87 |
84 os = self.GetPlatform() | 88 os = self.GetPlatform() |
| 89 all_policies = self.GetPolicyDefinitionList() |
85 | 90 |
86 for policy, policy_test in PolicyPrefsTestCases.policies.iteritems(): | 91 for policy, policy_test in PolicyPrefsTestCases.policies.iteritems(): |
| 92 # Skip device policies |
| 93 if policy in all_policies and all_policies[policy][1]: |
| 94 continue |
87 if os not in policy_test[PolicyPrefsTestCases.INDEX_OS]: | 95 if os not in policy_test[PolicyPrefsTestCases.INDEX_OS]: |
88 continue | 96 continue |
89 expected_pages = [PolicyPrefsUITest.settings_pages[n] | 97 expected_pages = [PolicyPrefsUITest.settings_pages[n] |
90 for n in policy_test[PolicyPrefsTestCases.INDEX_PAGES]] | 98 for n in policy_test[PolicyPrefsTestCases.INDEX_PAGES]] |
91 did_test = False | 99 did_test = False |
92 for page in PolicyPrefsUITest.settings_pages: | 100 for page in PolicyPrefsUITest.settings_pages: |
93 expected = page in expected_pages | 101 expected = page in expected_pages |
94 if expected and not include_expected: | 102 if expected and not include_expected: |
95 continue | 103 continue |
96 if not expected and not include_unexpected: | 104 if not expected and not include_unexpected: |
97 continue | 105 continue |
98 if not did_test: | 106 if not did_test: |
99 did_test = True | 107 did_test = True |
100 policy_dict = { | 108 policy_dict = { |
101 policy: policy_test[PolicyPrefsTestCases.INDEX_VALUE] | 109 policy: policy_test[PolicyPrefsTestCases.INDEX_VALUE] |
102 } | 110 } |
103 self.SetPolicies(policy_dict) | 111 self.SetUserPolicy(policy_dict) |
104 self.NavigateToURL(page) | 112 self.NavigateToURL(page) |
105 self.assertEqual(expected, self.IsAnyBannerVisible(), msg= | 113 self.assertEqual(expected, self.IsAnyBannerVisible(), msg= |
106 'Banner was%sexpected in %s, but it was%svisible.\n' | 114 'Banner was%sexpected in %s, but it was%svisible.\n' |
107 'The policy tested was "%s".\n' | 115 'The policy tested was "%s".\n' |
108 'Please check that chrome/test/functional/policy_prefs_ui.py has ' | 116 'Please check that chrome/test/functional/policy_prefs_ui.py has ' |
109 'an entry for any new policies introduced.' % | 117 'an entry for any new policies introduced.' % |
110 (expected and ' ' or ' NOT ', page, expected and ' NOT ' or ' ', | 118 (expected and ' ' or ' NOT ', page, expected and ' NOT ' or ' ', |
111 policy)) | 119 policy)) |
112 if did_test: | 120 if did_test: |
113 logging.debug('Policy passed: %s' % policy) | 121 logging.debug('Policy passed: %s' % policy) |
114 | 122 |
115 def testPoliciesShowBanner(self): | 123 def testUserPoliciesShowBanner(self): |
116 """Verifies that the banner is shown when a pref is managed by policy.""" | 124 """Verifies the banner is shown when a user pref is managed by policy.""" |
117 self.RunPoliciesShowBanner(True, False) | 125 self.RunUserPoliciesShowBanner(True, False) |
118 | 126 |
119 # This test is disabled by default because it takes a very long time, | 127 # This test is disabled by default because it takes a very long time, |
120 # for little benefit. | 128 # for little benefit. |
121 def PoliciesDontShowBanner(self): | 129 def UserPoliciesDontShowBanner(self): |
122 """Verifies that the banner is NOT shown on unrelated pages.""" | 130 """Verifies that the banner is NOT shown on unrelated pages.""" |
123 self.RunPoliciesShowBanner(False, True) | 131 self.RunUserPoliciesShowBanner(False, True) |
124 | 132 |
125 def testFailOnPoliciesNotTested(self): | 133 def testFailOnUserPoliciesNotTested(self): |
126 """Verifies that all existing policies are covered. | 134 """Verifies that all existing user policies are covered. |
127 | 135 |
128 Fails for all policies listed in GetPolicyDefinitionList() that aren't | 136 Fails for all user policies listed in GetPolicyDefinitionList() that aren't |
129 listed in |PolicyPrefsUITest.policies|, and thus are not tested by | 137 listed in |PolicyPrefsUITest.policies|, and thus are not tested by |
130 |testPoliciesShowBanner|. | 138 |testUserPoliciesShowBanner|. |
131 """ | 139 """ |
132 | 140 |
133 all_policies = self.GetPolicyDefinitionList() | 141 all_policies = self.GetPolicyDefinitionList() |
134 for policy in all_policies: | 142 for policy in all_policies: |
| 143 # Skip device policies |
| 144 if all_policies[policy][1]: |
| 145 continue |
135 self.assertTrue(policy in PolicyPrefsTestCases.policies, msg= | 146 self.assertTrue(policy in PolicyPrefsTestCases.policies, msg= |
136 'Policy "%s" does not have a test in ' | 147 'Policy "%s" does not have a test in ' |
137 'chrome/test/functional/policy_prefs_ui.py.\n' | 148 'chrome/test/functional/policy_prefs_ui.py.\n' |
138 'Please edit the file and add an entry for this policy.' % policy) | 149 'Please edit the file and add an entry for this policy.' % policy) |
139 test_type = type(PolicyPrefsTestCases.policies[policy] | 150 test_type = type(PolicyPrefsTestCases.policies[policy] |
140 [PolicyPrefsTestCases.INDEX_VALUE]).__name__ | 151 [PolicyPrefsTestCases.INDEX_VALUE]).__name__ |
141 expected_type = all_policies[policy][0] | 152 expected_type = all_policies[policy][0] |
142 self.assertEqual(expected_type, test_type, msg= | 153 self.assertEqual(expected_type, test_type, msg= |
143 'Policy "%s" has type "%s" but the test value has type "%s".' % | 154 'Policy "%s" has type "%s" but the test value has type "%s".' % |
144 (policy, expected_type, test_type)) | 155 (policy, expected_type, test_type)) |
145 | 156 |
146 def testTogglePolicyTogglesBanner(self): | 157 def testToggleUserPolicyTogglesBanner(self): |
147 """Verifies that toggling a policy also toggles the banner's visibility.""" | 158 """Verifies that toggling a user policy toggles the banner's visibility.""" |
148 # |policy| just has to be any policy that has at least a settings page that | 159 # |policy| just has to be any user policy that has at least a settings page |
149 # displays the banner when the policy is set. | 160 # that displays the banner when the policy is set. |
150 policy = 'ShowHomeButton' | 161 policy = 'ShowHomeButton' |
151 | 162 |
152 policy_test = PolicyPrefsTestCases.policies[policy] | 163 policy_test = PolicyPrefsTestCases.policies[policy] |
153 page = PolicyPrefsUITest.settings_pages[ | 164 page = PolicyPrefsUITest.settings_pages[ |
154 policy_test[PolicyPrefsTestCases.INDEX_PAGES][0]] | 165 policy_test[PolicyPrefsTestCases.INDEX_PAGES][0]] |
155 policy_dict = { | 166 policy_dict = { |
156 policy: policy_test[PolicyPrefsTestCases.INDEX_VALUE] | 167 policy: policy_test[PolicyPrefsTestCases.INDEX_VALUE] |
157 } | 168 } |
158 | 169 |
159 self.SetPolicies({}) | 170 self.SetUserPolicy({}) |
160 self.NavigateToURL(page) | 171 self.NavigateToURL(page) |
161 self.assertFalse(self.IsAnyBannerVisible()) | 172 self.assertFalse(self.IsAnyBannerVisible()) |
162 | 173 |
163 self.SetPolicies(policy_dict) | 174 self.SetUserPolicy(policy_dict) |
164 self.assertTrue(self.IsAnyBannerVisible()) | 175 self.assertTrue(self.IsAnyBannerVisible()) |
165 | 176 |
166 self.SetPolicies({}) | 177 self.SetUserPolicy({}) |
167 self.assertFalse(self.IsAnyBannerVisible()) | 178 self.assertFalse(self.IsAnyBannerVisible()) |
168 | 179 |
169 | 180 |
170 if __name__ == '__main__': | 181 if __name__ == '__main__': |
171 pyauto_functional.Main() | 182 pyauto_functional.Main() |
OLD | NEW |