| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 datetime | 5 import datetime |
| 6 import json | 6 import json |
| 7 import re | 7 import re |
| 8 import webapp2 | 8 import webapp2 |
| 9 import webtest | 9 import webtest |
| 10 | 10 |
| 11 from handlers import config | 11 from handlers import config |
| 12 from model import wf_config | 12 from model import wf_config |
| 13 from testing_utils import testing | 13 from testing_utils import testing |
| 14 | 14 from google.appengine.api import users |
| 15 | 15 |
| 16 _MOCK_STEPS_FOR_MASTERS_RULES_OLD_FORMAT = { | 16 _MOCK_STEPS_FOR_MASTERS_RULES_OLD_FORMAT = { |
| 17 'master1': ['unsupported_step1', 'unsupported_step2'], | 17 'master1': ['unsupported_step1', 'unsupported_step2'], |
| 18 'master2': ['unsupported_step3', 'unsupported_step4'], | 18 'master2': ['unsupported_step3', 'unsupported_step4'], |
| 19 } | 19 } |
| 20 | 20 |
| 21 _MOCK_STEPS_FOR_MASTERS_RULES = { | 21 _MOCK_STEPS_FOR_MASTERS_RULES = { |
| 22 'supported_masters': { | 22 'supported_masters': { |
| 23 'master1': { | 23 'master1': { |
| 24 # supported_steps override global. | 24 # supported_steps override global. |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 | 70 |
| 71 _MOCK_VERSION_NUMBER = 12 | 71 _MOCK_VERSION_NUMBER = 12 |
| 72 | 72 |
| 73 | 73 |
| 74 class ConfigTest(testing.AppengineTestCase): | 74 class ConfigTest(testing.AppengineTestCase): |
| 75 app_module = webapp2.WSGIApplication([ | 75 app_module = webapp2.WSGIApplication([ |
| 76 ('/config', config.Configuration), | 76 ('/config', config.Configuration), |
| 77 ], debug=True) | 77 ], debug=True) |
| 78 | 78 |
| 79 def testGetConfigurationSettings(self): | 79 def testGetConfigurationSettings(self): |
| 80 self.mock_current_user(user_email='test@chromium.org', is_admin=True) | |
| 81 | |
| 82 config_data = { | 80 config_data = { |
| 83 'steps_for_masters_rules': _MOCK_STEPS_FOR_MASTERS_RULES, | 81 'steps_for_masters_rules': _MOCK_STEPS_FOR_MASTERS_RULES, |
| 84 'builders_to_trybots': _MOCK_BUILDERS_TO_TRYBOTS, | 82 'builders_to_trybots': _MOCK_BUILDERS_TO_TRYBOTS, |
| 85 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, | 83 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, |
| 86 'swarming_settings': _MOCK_SWARMING_SETTINGS | 84 'swarming_settings': _MOCK_SWARMING_SETTINGS |
| 87 } | 85 } |
| 88 wf_config.FinditConfig.Get().Update(**config_data) | 86 |
| 87 self.mock_current_user(user_email='test@chromium.org', is_admin=True) |
| 88 |
| 89 wf_config.FinditConfig.Get().Update(users.GetCurrentUser(), is_admin=True, |
| 90 **config_data) |
| 89 | 91 |
| 90 response = self.test_app.get('/config', params={'format': 'json'}) | 92 response = self.test_app.get('/config', params={'format': 'json'}) |
| 91 self.assertEquals(response.status_int, 200) | 93 self.assertEquals(response.status_int, 200) |
| 92 | 94 |
| 93 expected_response = { | 95 expected_response = { |
| 94 'masters': _MOCK_STEPS_FOR_MASTERS_RULES, | 96 'masters': _MOCK_STEPS_FOR_MASTERS_RULES, |
| 95 'builders': _MOCK_BUILDERS_TO_TRYBOTS, | 97 'builders': _MOCK_BUILDERS_TO_TRYBOTS, |
| 96 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, | 98 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, |
| 97 'swarming_settings': _MOCK_SWARMING_SETTINGS, | 99 'swarming_settings': _MOCK_SWARMING_SETTINGS, |
| 98 'version': 1, | 100 'version': 1, |
| 99 'latest_version': 1, | 101 'latest_version': 1, |
| 100 'updated_by': 'test', | 102 'updated_by': 'test', |
| 101 'updated_ts': response.json_body.get('updated_ts') | 103 'updated_ts': response.json_body.get('updated_ts') |
| 102 } | 104 } |
| 103 | 105 |
| 104 self.assertEquals(expected_response, response.json_body) | 106 self.assertEquals(expected_response, response.json_body) |
| 105 | 107 |
| 106 def testGetVersionOfConfigurationSettings(self): | 108 def testGetVersionOfConfigurationSettings(self): |
| 107 self.mock_current_user(user_email='test@chromium.org', is_admin=True) | 109 self.mock_current_user(user_email='test@chromium.org', is_admin=True) |
| 108 | 110 |
| 109 config_data = { | 111 config_data = { |
| 110 'steps_for_masters_rules': _MOCK_STEPS_FOR_MASTERS_RULES, | 112 'steps_for_masters_rules': _MOCK_STEPS_FOR_MASTERS_RULES, |
| 111 'builders_to_trybots': _MOCK_BUILDERS_TO_TRYBOTS, | 113 'builders_to_trybots': _MOCK_BUILDERS_TO_TRYBOTS, |
| 112 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, | 114 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, |
| 113 'swarming_settings': _MOCK_SWARMING_SETTINGS | 115 'swarming_settings': _MOCK_SWARMING_SETTINGS |
| 114 } | 116 } |
| 115 wf_config.FinditConfig.Get().Update(**config_data) | 117 wf_config.FinditConfig.Get().Update( |
| 118 users.GetCurrentUser(), is_admin=True, **config_data) |
| 116 | 119 |
| 117 response = self.test_app.get( | 120 response = self.test_app.get( |
| 118 '/config', params={'version': 1, 'format': 'json'}) | 121 '/config', params={'version': 1, 'format': 'json'}) |
| 119 self.assertEquals(response.status_int, 200) | 122 self.assertEquals(response.status_int, 200) |
| 120 | 123 |
| 121 expected_response = { | 124 expected_response = { |
| 122 'masters': _MOCK_STEPS_FOR_MASTERS_RULES, | 125 'masters': _MOCK_STEPS_FOR_MASTERS_RULES, |
| 123 'builders': _MOCK_BUILDERS_TO_TRYBOTS, | 126 'builders': _MOCK_BUILDERS_TO_TRYBOTS, |
| 124 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, | 127 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, |
| 125 'swarming_settings': _MOCK_SWARMING_SETTINGS, | 128 'swarming_settings': _MOCK_SWARMING_SETTINGS, |
| 126 'version': 1, | 129 'version': 1, |
| 127 'latest_version': 1, | 130 'latest_version': 1, |
| 128 'updated_by': 'test', | 131 'updated_by': 'test', |
| 129 'updated_ts': response.json_body.get('updated_ts') | 132 'updated_ts': response.json_body.get('updated_ts') |
| 130 } | 133 } |
| 131 | 134 |
| 132 self.assertEquals(expected_response, response.json_body) | 135 self.assertEquals(expected_response, response.json_body) |
| 133 | 136 |
| 134 def testGetOutOfBoundsVersionOfConfigurationSettings(self): | 137 def testGetOutOfBoundsVersionOfConfigurationSettings(self): |
| 135 self.mock_current_user(user_email='test@chromium.org', is_admin=True) | |
| 136 | |
| 137 config_data = { | 138 config_data = { |
| 138 'steps_for_masters_rules': _MOCK_STEPS_FOR_MASTERS_RULES, | 139 'steps_for_masters_rules': _MOCK_STEPS_FOR_MASTERS_RULES, |
| 139 'builders_to_trybots': _MOCK_BUILDERS_TO_TRYBOTS, | 140 'builders_to_trybots': _MOCK_BUILDERS_TO_TRYBOTS, |
| 140 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, | 141 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, |
| 141 'swarming_settings': _MOCK_SWARMING_SETTINGS | 142 'swarming_settings': _MOCK_SWARMING_SETTINGS |
| 142 } | 143 } |
| 143 wf_config.FinditConfig.Get().Update(**config_data) | 144 self.mock_current_user(user_email='test@chromium.org', is_admin=True) |
| 145 |
| 146 wf_config.FinditConfig.Get().Update( |
| 147 user=users.GetCurrentUser(), is_admin=True, |
| 148 **config_data) |
| 144 | 149 |
| 145 self.assertRaisesRegexp( | 150 self.assertRaisesRegexp( |
| 146 webtest.app.AppError, | 151 webtest.app.AppError, |
| 147 re.compile('The requested version is invalid or not found.', | 152 re.compile('The requested version is invalid or not found.', |
| 148 re.MULTILINE | re.DOTALL), | 153 re.MULTILINE | re.DOTALL), |
| 149 self.test_app.get, '/config', params={'version': 0, 'format': 'json'}) | 154 self.test_app.get, '/config', params={'version': 0, 'format': 'json'}) |
| 150 self.assertRaisesRegexp( | 155 self.assertRaisesRegexp( |
| 151 webtest.app.AppError, | 156 webtest.app.AppError, |
| 152 re.compile('The requested version is invalid or not found.', | 157 re.compile('The requested version is invalid or not found.', |
| 153 re.MULTILINE | re.DOTALL), | 158 re.MULTILINE | re.DOTALL), |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 613 'builders': _MOCK_BUILDERS_TO_TRYBOTS, | 618 'builders': _MOCK_BUILDERS_TO_TRYBOTS, |
| 614 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, | 619 'try_job_settings': _MOCK_TRY_JOB_SETTINGS, |
| 615 'swarming_settings': _MOCK_SWARMING_SETTINGS, | 620 'swarming_settings': _MOCK_SWARMING_SETTINGS, |
| 616 'version': 1, | 621 'version': 1, |
| 617 'latest_version': 1, | 622 'latest_version': 1, |
| 618 'updated_by': 'test', | 623 'updated_by': 'test', |
| 619 'updated_ts': response.json_body.get('updated_ts') | 624 'updated_ts': response.json_body.get('updated_ts') |
| 620 } | 625 } |
| 621 | 626 |
| 622 self.assertEquals(expected_response, response.json_body) | 627 self.assertEquals(expected_response, response.json_body) |
| OLD | NEW |