OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import alerts | 5 import alerts |
6 import json | 6 import json |
7 import random | 7 import random |
8 import string | 8 import string |
9 import unittest | 9 import unittest |
10 import webtest | 10 import webtest |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 self.testapp.post('/alerts', {'content': json.dumps(test_alerts)}) | 94 self.testapp.post('/alerts', {'content': json.dumps(test_alerts)}) |
95 stored_alerts = alerts.AlertsJSON.query().fetch(limit=2) | 95 stored_alerts = alerts.AlertsJSON.query().fetch(limit=2) |
96 self.assertEqual(1, len(stored_alerts)) | 96 self.assertEqual(1, len(stored_alerts)) |
97 | 97 |
98 def test_alerts_jsons_are_retrieved_from_history(self): | 98 def test_alerts_jsons_are_retrieved_from_history(self): |
99 test_alert = {'alerts': ['hello', 'world', '1']} | 99 test_alert = {'alerts': ['hello', 'world', '1']} |
100 alerts.AlertsJSON(json=json.dumps(test_alert), type='alerts').put() | 100 alerts.AlertsJSON(json=json.dumps(test_alert), type='alerts').put() |
101 response = self.testapp.get('/alerts-history') | 101 response = self.testapp.get('/alerts-history') |
102 self.assertEqual(response.status_int, 200) | 102 self.assertEqual(response.status_int, 200) |
103 self.assertEqual(response.content_type, 'application/json') | 103 self.assertEqual(response.content_type, 'application/json') |
104 response_json = json.loads(response.normal_body) | 104 parsed_json = json.loads(response.normal_body) |
105 self.assertEqual(len(response_json['history']), 1) | 105 self.assertEqual(len(parsed_json['history']), 1) |
106 self.assertEqual(response_json['history'][0], test_alert) | |
107 | 106 |
108 def test_internal_alerts_in_history_visible_to_internal_users_only(self): | 107 entry_id = parsed_json['history'][0] |
| 108 response = self.testapp.get('/alerts-history/%s' % entry_id) |
| 109 self.assertEqual(response.status_int, 200) |
| 110 self.assertEqual(response.content_type, 'application/json') |
| 111 parsed_json = json.loads(response.normal_body) |
| 112 self.assertEqual(parsed_json['alerts'], test_alert['alerts']) |
| 113 |
| 114 def test_provides_login_url(self): |
| 115 response = self.testapp.get('/alerts-history') |
| 116 self.assertIn('login-url', response) |
| 117 |
| 118 def test_invalid_keys_return_400(self): |
| 119 response = self.testapp.get('/alerts-history/kjhg$%T', |
| 120 expect_errors=True) |
| 121 self.assertEqual(response.status_int, 400) |
| 122 self.assertEqual(response.content_type, 'application/json') |
| 123 |
| 124 def test_non_existing_keys_return_404(self): |
| 125 response = self.testapp.get('/alerts-history/5348024557502464', |
| 126 expect_errors=True) |
| 127 self.assertEqual(response.status_int, 404) |
| 128 self.assertEqual(response.content_type, 'application/json') |
| 129 |
| 130 def test_internal_alerts_can_only_retrieved_by_internal_users(self): |
| 131 test_alert = {'alerts': ['hello', 'world', '1']} |
| 132 internal_alert = alerts.AlertsJSON(json=json.dumps(test_alert), |
| 133 type='internal-alerts') |
| 134 internal_alert_key = internal_alert.put().integer_id() |
| 135 |
| 136 # No signed-in user. |
| 137 response = self.testapp.get('/alerts-history/%s' % internal_alert_key, |
| 138 expect_errors=True) |
| 139 self.assertEqual(response.status_int, 404) |
| 140 self.assertEqual(response.content_type, 'application/json') |
| 141 parsed_json = json.loads(response.normal_body) |
| 142 self.assertNotIn('alerts', parsed_json) |
| 143 |
| 144 # Non-internal user. |
| 145 self.testbed.setup_env(USER_EMAIL='test@example.com', USER_ID='1', |
| 146 USER_IS_ADMIN='1', overwrite=True) |
| 147 response = self.testapp.get('/alerts-history/%s' % internal_alert_key, |
| 148 expect_errors=True) |
| 149 self.assertEqual(response.status_int, 404) |
| 150 self.assertEqual(response.content_type, 'application/json') |
| 151 parsed_json = json.loads(response.normal_body) |
| 152 self.assertNotIn('alerts', parsed_json) |
| 153 |
| 154 def test_lists_internal_alerts_to_internal_users_only(self): |
109 test_alert = {'alerts': ['hello', 'world', '1']} | 155 test_alert = {'alerts': ['hello', 'world', '1']} |
110 alerts.AlertsJSON(json=json.dumps(test_alert), | 156 alerts.AlertsJSON(json=json.dumps(test_alert), |
111 type='internal-alerts').put() | 157 type='internal-alerts').put() |
112 | 158 |
113 # No signed-in user. | 159 # No signed-in user. |
114 response = self.testapp.get('/alerts-history') | 160 response = self.testapp.get('/alerts-history') |
115 self.assertEqual(response.status_int, 200) | 161 self.assertEqual(response.status_int, 200) |
116 self.assertEqual(response.content_type, 'application/json') | 162 self.assertEqual(response.content_type, 'application/json') |
117 response_json = json.loads(response.normal_body) | 163 response_json = json.loads(response.normal_body) |
118 self.assertEqual(len(response_json['history']), 0) | 164 self.assertEqual(len(response_json['history']), 0) |
119 | 165 |
120 # Non-internal user. | 166 # Non-internal user. |
121 self.testbed.setup_env(USER_EMAIL='test@example.com', USER_ID='1', | 167 self.testbed.setup_env(USER_EMAIL='test@example.com', USER_ID='1', |
122 USER_IS_ADMIN='1', overwrite=True) | 168 USER_IS_ADMIN='1', overwrite=True) |
123 response = self.testapp.get('/alerts-history') | 169 response = self.testapp.get('/alerts-history') |
124 self.assertEqual(response.status_int, 200) | 170 self.assertEqual(response.status_int, 200) |
125 self.assertEqual(response.content_type, 'application/json') | 171 self.assertEqual(response.content_type, 'application/json') |
126 response_json = json.loads(response.normal_body) | 172 response_json = json.loads(response.normal_body) |
127 self.assertEqual(len(response_json['history']), 0) | 173 self.assertEqual(len(response_json['history']), 0) |
128 | 174 |
129 # Internal user. | 175 # Internal user. |
130 self.testbed.setup_env(USER_EMAIL='test@google.com', USER_ID='2', | 176 self.testbed.setup_env(USER_EMAIL='test@google.com', USER_ID='2', |
131 USER_IS_ADMIN='1', overwrite=True) | 177 USER_IS_ADMIN='1', overwrite=True) |
132 response = self.testapp.get('/alerts-history') | 178 response = self.testapp.get('/alerts-history') |
133 self.assertEqual(response.status_int, 200) | 179 self.assertEqual(response.status_int, 200) |
134 self.assertEqual(response.content_type, 'application/json') | 180 self.assertEqual(response.content_type, 'application/json') |
135 response_json = json.loads(response.normal_body) | 181 response_json = json.loads(response.normal_body) |
136 self.assertEqual(len(response_json['history']), 1) | 182 self.assertEqual(len(response_json['history']), 1) |
137 self.assertEqual(response_json['history'][0], test_alert) | |
138 | 183 |
139 def test_returned_alerts_from_history_are_paged(self): | 184 def test_returned_alerts_from_history_are_paged(self): |
140 for i in range(20): | 185 for i in range(20): |
141 test_alert = {'alerts': ['hello', 'world', i]} | 186 test_alert = {'alerts': ['hello', 'world', i]} |
142 alerts.AlertsJSON(json=json.dumps(test_alert), type='alerts').put() | 187 alerts.AlertsJSON(json=json.dumps(test_alert), type='alerts').put() |
143 | 188 |
144 response = self.testapp.get('/alerts-history?limit=15') | 189 response = self.testapp.get('/alerts-history?limit=15') |
145 self.assertEqual(response.status_int, 200) | 190 self.assertEqual(response.status_int, 200) |
146 self.assertEqual(response.content_type, 'application/json') | 191 self.assertEqual(response.content_type, 'application/json') |
147 response_json = json.loads(response.normal_body) | 192 response_json = json.loads(response.normal_body) |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 | 259 |
215 def value(): | 260 def value(): |
216 generators = [time, build, revision, test, literal_array, | 261 generators = [time, build, revision, test, literal_array, |
217 literal_map] | 262 literal_map] |
218 return random.choice(generators)() | 263 return random.choice(generators)() |
219 | 264 |
220 alert = {} | 265 alert = {} |
221 for _ in range(random.randint(6, 9)): | 266 for _ in range(random.randint(6, 9)): |
222 alert[label()] = value() | 267 alert[label()] = value() |
223 return alert | 268 return alert |
OLD | NEW |