blob: 30c06a3881cd9c2d5319428eb89ced448bf491be [file] [log] [blame]
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import json
import unittest
import mock
from dashboard import buildbucket_service
from dashboard import testing_common
from dashboard import utils
class BuildbucketServiceTest(testing_common.TestCase):
class FakeJob(object):
def __init__(self):
pass
def GetBuildParameters(self):
return {
'builder_name': 'dummy_builder',
'properties': {'bisect_config': {}}
}
class FakeRequest(object):
def __init__(self):
pass
def execute(self):
return {'build': {'id': 'fake_id'}}
class FakeService(object):
def __init__(self):
self.bodies = []
def put(self, body):
self.bodies.append(body)
return BuildbucketServiceTest.FakeRequest()
def get(self, **kwargs):
self.bodies.append(kwargs)
return BuildbucketServiceTest.FakeRequest()
def setUp(self):
super(BuildbucketServiceTest, self).setUp()
self.fake_service = BuildbucketServiceTest.FakeService()
@mock.patch.object(utils, 'ServiceAccountHttp', mock.MagicMock())
def testPutJob(self):
fake_job = BuildbucketServiceTest.FakeJob()
with mock.patch('apiclient.discovery.build', mock.MagicMock(
return_value=self.fake_service)):
fake_id = buildbucket_service.PutJob(fake_job)
# Ensure the request was composed
request = self.fake_service.bodies[0]
self.assertEqual('master.tryserver.chromium.perf', request['bucket'])
parameters_json = request['parameters_json']
parameters = json.loads(parameters_json)
self.assertIsInstance(parameters, dict)
self.assertIn('bisect_config', parameters['properties'])
# Ensure the result is exactly what we plugged in.
self.assertEqual(fake_id, 'fake_id')
@mock.patch.object(utils, 'ServiceAccountHttp', mock.MagicMock())
def testGetJobStatus(self):
fake_id = '1234567890'
with mock.patch('apiclient.discovery.build', mock.MagicMock(
return_value=self.fake_service)):
_ = buildbucket_service.GetJobStatus(fake_id)
# Ensure the given job id was passed to the request.
request = self.fake_service.bodies[0]
self.assertIn('id', request)
self.assertEqual(fake_id, request['id'])
if __name__ == '__main__':
unittest.main()