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 os | 5 import os |
6 import re | 6 import re |
7 | 7 |
8 from google.appengine.ext import testbed | 8 from google.appengine.ext import testbed |
9 import webapp2 | 9 import webapp2 |
10 import webtest | 10 import webtest |
11 | 11 |
12 from testing_utils import testing | 12 from testing_utils import testing |
13 | 13 |
14 from handlers import build_failure | 14 from handlers import build_failure |
15 from model import wf_analysis_status | |
16 from model.test import configured_test_case | |
15 from model.wf_analysis import WfAnalysis | 17 from model.wf_analysis import WfAnalysis |
16 from model import wf_analysis_status | |
17 from waterfall import buildbot | 18 from waterfall import buildbot |
18 from waterfall import waterfall_config | |
19 | 19 |
20 | 20 |
21 # Root directory appengine/findit. | 21 # Root directory appengine/findit. |
22 ROOT_DIR = os.path.join(os.path.dirname(__file__), | 22 ROOT_DIR = os.path.join(os.path.dirname(__file__), |
23 os.path.pardir, os.path.pardir) | 23 os.path.pardir, os.path.pardir) |
24 | 24 |
25 | 25 |
26 class BuildFailureTest(testing.AppengineTestCase): | 26 class BuildFailureTest(testing.AppengineTestCase): |
27 app_module = webapp2.WSGIApplication([ | 27 app_module = webapp2.WSGIApplication([ |
28 ('/build-failure', build_failure.BuildFailure), | 28 ('/build-failure', build_failure.BuildFailure), |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
73 re.MULTILINE | re.DOTALL), | 73 re.MULTILINE | re.DOTALL), |
74 self.test_app.get, '/build-failure', params={'url': build_url}) | 74 self.test_app.get, '/build-failure', params={'url': build_url}) |
75 | 75 |
76 def testNonAdminCanViewAnalysisOfFailureOnUnsupportedMaster(self): | 76 def testNonAdminCanViewAnalysisOfFailureOnUnsupportedMaster(self): |
77 master_name = 'm' | 77 master_name = 'm' |
78 builder_name = 'b 1' | 78 builder_name = 'b 1' |
79 build_number = 123 | 79 build_number = 123 |
80 build_url = buildbot.CreateBuildUrl( | 80 build_url = buildbot.CreateBuildUrl( |
81 master_name, builder_name, build_number) | 81 master_name, builder_name, build_number) |
82 | 82 |
83 def MockMasterIsSupported(*_): | |
84 return False | |
85 self.mock(waterfall_config, 'MasterIsSupported', | |
86 MockMasterIsSupported) | |
87 | |
88 analysis = WfAnalysis.Create(master_name, builder_name, build_number) | 83 analysis = WfAnalysis.Create(master_name, builder_name, build_number) |
89 analysis.status = wf_analysis_status.ANALYZED | 84 analysis.status = wf_analysis_status.ANALYZED |
90 analysis.put() | 85 analysis.put() |
91 | 86 |
92 response = self.test_app.get('/build-failure', | 87 response = self.test_app.get('/build-failure', |
93 params={'url': build_url}) | 88 params={'url': build_url}) |
94 self.assertEquals(200, response.status_int) | 89 self.assertEquals(200, response.status_int) |
95 self.assertEqual(0, len(self.taskqueue_stub.get_filtered_tasks())) | 90 self.assertEqual(0, len(self.taskqueue_stub.get_filtered_tasks())) |
96 | 91 |
97 def testNonAdminCannotRequestAnalysisOfFailureOnUnsupportedMaster(self): | 92 def testNonAdminCannotRequestAnalysisOfFailureOnUnsupportedMaster(self): |
98 master_name = 'm' | 93 master_name = 'm' |
99 builder_name = 'b 1' | 94 builder_name = 'b 1' |
100 build_number = 123 | 95 build_number = 123 |
101 build_url = buildbot.CreateBuildUrl( | 96 build_url = buildbot.CreateBuildUrl( |
102 master_name, builder_name, build_number) | 97 master_name, builder_name, build_number) |
103 | 98 |
104 def MockMasterIsSupported(*_): | |
105 return False | |
106 self.mock(waterfall_config, 'MasterIsSupported', MockMasterIsSupported) | |
107 | |
108 self.assertRaisesRegexp( | 99 self.assertRaisesRegexp( |
109 webtest.app.AppError, | 100 webtest.app.AppError, |
110 re.compile('.*501 Not Implemented.*Master "%s" ' | 101 re.compile('.*501 Not Implemented.*Master "%s" ' |
111 'is not supported yet.*' % master_name, | 102 'is not supported yet.*' % master_name, |
112 re.MULTILINE | re.DOTALL), | 103 re.MULTILINE | re.DOTALL), |
113 self.test_app.get, '/build-failure', params={'url': build_url}) | 104 self.test_app.get, '/build-failure', params={'url': build_url}) |
114 | 105 |
115 def testAdminCanRequestAnalysisOfFailureOnUnsupportedMaster(self): | 106 def testAdminCanRequestAnalysisOfFailureOnUnsupportedMaster(self): |
116 master_name = 'm' | 107 master_name = 'm' |
117 builder_name = 'b' | 108 builder_name = 'b' |
118 build_number = 123 | 109 build_number = 123 |
119 build_url = buildbot.CreateBuildUrl( | 110 build_url = buildbot.CreateBuildUrl( |
120 master_name, builder_name, build_number) | 111 master_name, builder_name, build_number) |
121 | 112 |
122 def MockMasterIsSupported(*_): | |
123 return False | |
124 self.mock(waterfall_config, 'MasterIsSupported', MockMasterIsSupported) | |
125 | |
126 self.mock_current_user(user_email='test@chromium.org', is_admin=True) | 113 self.mock_current_user(user_email='test@chromium.org', is_admin=True) |
127 | 114 |
128 response = self.test_app.get('/build-failure', params={'url': build_url}) | 115 response = self.test_app.get('/build-failure', params={'url': build_url}) |
129 self.assertEquals(200, response.status_int) | 116 self.assertEquals(200, response.status_int) |
130 | 117 |
131 self.assertEqual(1, len(self.taskqueue_stub.get_filtered_tasks())) | 118 self.assertEqual(1, len(self.taskqueue_stub.get_filtered_tasks())) |
132 | 119 |
133 def testAnyoneCanRequestAnalysisOfFailureOnSupportedMaster(self): | 120 def testAnyoneCanRequestAnalysisOfFailureOnSupportedMaster(self): |
134 master_name = 'm' | 121 master_name = 'm' |
135 builder_name = 'b 1' | 122 builder_name = 'b 1' |
136 build_number = 123 | 123 build_number = 123 |
137 build_url = buildbot.CreateBuildUrl( | 124 build_url = buildbot.CreateBuildUrl( |
138 master_name, builder_name, build_number) | 125 master_name, builder_name, build_number) |
139 | 126 self.mock_current_user(user_email='test@chromium.org', is_admin=True) |
140 def MockMasterIsSupported(*_): | 127 configured_test_case.MockConfigSettings() |
stgao
2016/03/30 01:06:30
Is it possible to make BuildFailureTest inherit fr
lijeffrey
2016/03/30 23:28:34
Done.
| |
141 return True | 128 self.mock_current_user(user_email='anyone@chromium.org', is_admin=False) |
142 self.mock(waterfall_config, 'MasterIsSupported', MockMasterIsSupported) | |
143 | 129 |
144 response = self.test_app.get('/build-failure', params={'url': build_url}) | 130 response = self.test_app.get('/build-failure', params={'url': build_url}) |
145 self.assertEquals(200, response.status_int) | 131 self.assertEquals(200, response.status_int) |
146 | 132 |
147 self.assertEqual(1, len(self.taskqueue_stub.get_filtered_tasks())) | 133 self.assertEqual(1, len(self.taskqueue_stub.get_filtered_tasks())) |
OLD | NEW |