summaryrefslogtreecommitdiff
path: root/harnesses/host_controller/build/build_provider_pab_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'harnesses/host_controller/build/build_provider_pab_test.py')
-rw-r--r--harnesses/host_controller/build/build_provider_pab_test.py317
1 files changed, 0 insertions, 317 deletions
diff --git a/harnesses/host_controller/build/build_provider_pab_test.py b/harnesses/host_controller/build/build_provider_pab_test.py
deleted file mode 100644
index 95e83c9..0000000
--- a/harnesses/host_controller/build/build_provider_pab_test.py
+++ /dev/null
@@ -1,317 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-import unittest
-from host_controller.build import build_provider_pab
-
-try:
- from unittest import mock
-except ImportError:
- import mock
-
-from requests.models import Response
-
-
-class BuildProviderPABTest(unittest.TestCase):
- """Tests for Partner Android Build client."""
-
- def setUp(self):
- self.client = build_provider_pab.BuildProviderPAB()
- self.client.XSRF_STORE = None
-
- def tearDown(self):
- del self.client
-
- @mock.patch("build_provider_pab.flow_from_clientsecrets")
- @mock.patch("build_provider_pab.run_flow")
- @mock.patch("build_provider_pab.Storage.get")
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- def testAuthenticationNew(self, mock_creds, mock_storage_get, mock_rf,
- mock_ffc):
- mock_creds.invalid = True
- build_provider_pab.flow_from_clientsecrets = mock_ffc
- build_provider_pab.run_flow = mock_rf
- self.client.Authenticate()
- mock_ffc.assert_called_once()
- mock_storage_get.assert_called_once()
- mock_rf.assert_called_once()
-
- @mock.patch("build_provider_pab.flow_from_clientsecrets")
- @mock.patch("build_provider_pab.run_flow")
- @mock.patch("build_provider_pab.Storage.get")
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- def testAuthenticationStale(self, mock_creds, mock_storage_get, mock_rf,
- mock_ffc):
- mock_creds.invalid = False
- mock_creds.access_token_expired = True
- build_provider_pab.flow_from_clientsecrets = mock_ffc
- build_provider_pab.run_flow = mock_rf
- mock_storage_get.return_value = mock_creds
- self.client.Authenticate()
- mock_ffc.assert_called_once()
- mock_storage_get.assert_called_once()
- mock_rf.assert_not_called()
- mock_creds.refresh.assert_called_once()
-
- @mock.patch("build_provider_pab.flow_from_clientsecrets")
- @mock.patch("build_provider_pab.run_flow")
- @mock.patch("build_provider_pab.Storage.get")
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- def testAuthenticationFresh(self, mock_creds, mock_storage_get, mock_rf,
- mock_ffc):
- mock_creds.invalid = False
- mock_creds.access_token_expired = False
- build_provider_pab.flow_from_clientsecrets = mock_ffc
- build_provider_pab.run_flow = mock_rf
- mock_storage_get.return_value = mock_creds
- self.client.Authenticate()
- mock_ffc.assert_called_once()
- mock_storage_get.assert_called_once()
- mock_rf.assert_not_called()
- mock_creds.refresh.assert_not_called()
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('requests.get')
- @mock.patch('__builtin__.open')
- def testDownloadArtifact(self, mock_open, mock_get, mock_creds):
- self.client._credentials = mock_creds
- artifact_url = (
- "https://partnerdash.google.com/build/gmsdownload/"
- "f_companion/label/clockwork.companion_20170906_211311_RC00/"
- "ClockworkCompanionGoogleWithGmsRelease_signed.apk?a=100621237")
- self.client.DownloadArtifact(
- artifact_url, 'ClockworkCompanionGoogleWithGmsRelease_signed.apk')
- self.client._credentials.apply.assert_called_with({})
- mock_get.assert_called_with(
- artifact_url, headers={}, stream=True)
- mock_open.assert_called_with(
- 'ClockworkCompanionGoogleWithGmsRelease_signed.apk', 'wb')
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('requests.post')
- def testGetArtifactURL(self, mock_post, mock_creds):
- self.client._xsrf = 'disable'
- response = Response()
- response.status_code = 200
- response._content = b'{ "result" : {"1": "this_url"}}'
- mock_post.return_value = response
- self.client._credentials = mock_creds
- url = self.client.GetArtifactURL(
- 100621237,
- "4331445",
- "darwin_mac",
- "android-ndk-43345-darwin-x86_64.tar.bz2",
- "aosp-master-ndk",
- 0,
- method='POST')
- mock_post.assert_called_with(
- 'https://partner.android.com/build/u/0/_gwt/_rpc/buildsvc',
- data=mock.ANY,
- headers={
- 'Content-Type': 'application/json',
- 'x-alkali-account': 100621237,
- })
- self.assertEqual(url, "this_url")
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('requests.post')
- def testGetArtifactURLBackendError(self, mock_post, mock_creds):
- self.client._xsrf = 'disable'
- response = Response()
- response.status_code = 200
- response._content = b'not JSON'
- mock_post.return_value = response
- self.client._credentials = mock_creds
- with self.assertRaises(ValueError) as cm:
- self.client.GetArtifactURL(
- 100621237,
- "4331445",
- "darwin_mac",
- "android-ndk-43345-darwin-x86_64.tar.bz2",
- "aosp-master-ndk",
- 0,
- method='POST')
- expected = "Backend error -- check your account ID"
- self.assertEqual(str(cm.exception), expected)
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('requests.post')
- def testGetArtifactURLMissingResultError(self, mock_post, mock_creds):
- self.client._xsrf = 'disable'
- response = Response()
- response.status_code = 200
- response._content = b'{"result": {}}'
- mock_post.return_value = response
- self.client._credentials = mock_creds
- with self.assertRaises(ValueError) as cm:
- self.client.GetArtifactURL(
- 100621237,
- "4331445",
- "darwin_mac",
- "android-ndk-43345-darwin-x86_64.tar.bz2",
- "aosp-master-ndk",
- 0,
- method='POST')
- expected = "Resource not found"
- self.assertIn(expected, str(cm.exception))
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('requests.post')
- def testGetArtifactURLInvalidXSRFError(self, mock_post, mock_creds):
- self.client._xsrf = 'disable'
- response = Response()
- response.status_code = 200
- response._content = b'{"error": {"code": -32000, "message":"Invalid"}}'
- mock_post.return_value = response
- self.client._credentials = mock_creds
- with self.assertRaises(ValueError) as cm:
- self.client.GetArtifactURL(
- 100621237,
- "4331445",
- "darwin_mac",
- "android-ndk-43345-darwin-x86_64.tar.bz2",
- "aosp-master-ndk",
- 0,
- method='POST')
- self.assertIn('Bad XSRF token', str(cm.exception))
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('requests.post')
- def testGetArtifactURLExpiredXSRFError(self, mock_post, mock_creds):
- self.client._xsrf = 'disable'
- response = Response()
- response.status_code = 200
- response._content = b'{"error": {"code": -32001, "message":"Expired"}}'
- mock_post.return_value = response
- self.client._credentials = mock_creds
- with self.assertRaises(ValueError) as cm:
- self.client.GetArtifactURL(
- 100621237,
- "4331445",
- "darwin_mac",
- "android-ndk-43345-darwin-x86_64.tar.bz2",
- "aosp-master-ndk",
- 0,
- method='POST')
- self.assertIn('Expired XSRF token', str(cm.exception))
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('requests.post')
- def testGetArtifactURLUnknownError(self, mock_post, mock_creds):
- self.client._xsrf = 'disable'
- response = Response()
- response.status_code = 200
- response._content = b'{"some_other_json": "foo"}'
- mock_post.return_value = response
- self.client._credentials = mock_creds
- with self.assertRaises(ValueError) as cm:
- self.client.GetArtifactURL(
- 100621237,
- "4331445",
- "darwin_mac",
- "android-ndk-43345-darwin-x86_64.tar.bz2",
- "aosp-master-ndk",
- 0,
- method='POST')
- self.assertIn('Unknown response from server', str(cm.exception))
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('requests.post')
- def testGetBuildListSuccess(self, mock_post, mock_creds):
- self.client._xsrf = 'disable'
- response = Response()
- response.status_code = 200
- response._content = b'{"result": {"1": "foo"}}'
- mock_post.return_value = response
- self.client._credentials = mock_creds
- result = self.client.GetBuildList(
- 100621237,
- "git_oc-treble-dev",
- "aosp_arm64_ab-userdebug",
- method='POST')
- self.assertEqual(result, "foo")
- mock_post.assert_called_with(
- 'https://partner.android.com/build/u/0/_gwt/_rpc/buildsvc',
- data=mock.ANY,
- headers={
- 'Content-Type': 'application/json',
- 'x-alkali-account': 100621237,
- })
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('requests.post')
- def testGetBuildListError(self, mock_post, mock_creds):
- self.client._xsrf = 'disable'
- response = Response()
- response.status_code = 200
- response._content = b'{"result": {"3": "foo"}}'
- mock_post.return_value = response
- self.client._credentials = mock_creds
- with self.assertRaises(ValueError) as cm:
- self.client.GetBuildList(
- 100621237,
- "git_oc-treble-dev",
- "aosp_arm64_ab-userdebug",
- method='POST')
- self.assertIn('Build list not found', str(cm.exception))
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('build_provider_pab.BuildProviderPAB.GetBuildList')
- def testGetLatestBuildIdSuccess(self, mock_gbl, mock_creds):
- self.client._xsrf = 'disable'
- mock_gbl.return_value = [{'7': 5, '1': 'bad'}, {'7': 7, '1': 'good'}]
- self.client.GetBuildList = mock_gbl
- result = self.client.GetLatestBuildId(
- 100621237,
- "git_oc-treble-dev",
- "aosp_arm64_ab-userdebug",
- method='POST')
- self.assertEqual(result, 'good')
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('build_provider_pab.BuildProviderPAB.GetBuildList')
- def testGetLatestBuildIdEmpty(self, mock_gbl, mock_creds):
- self.client._xsrf = 'disable'
- mock_gbl.return_value = []
- self.client.GetBuildList = mock_gbl
- with self.assertRaises(ValueError) as cm:
- result = self.client.GetLatestBuildId(
- 100621237,
- "git_oc-treble-dev",
- "aosp_arm64_ab-userdebug",
- method='POST')
- self.assertIn("No builds found for", str(cm.exception))
-
- @mock.patch('build_provider_pab.BuildProviderPAB._credentials')
- @mock.patch('build_provider_pab.BuildProviderPAB.GetBuildList')
- def testGetLatestBuildIdAllBad(self, mock_gbl, mock_creds):
- self.client._xsrf = 'disable'
- mock_gbl.return_value = [{'7': 0}, {'7': 0}]
- self.client.GetBuildList = mock_gbl
- with self.assertRaises(ValueError) as cm:
- result = self.client.GetLatestBuildId(
- 100621237,
- "git_oc-treble-dev",
- "aosp_arm64_ab-userdebug",
- method='POST')
- self.assertEqual(
- "No complete builds found: 2 failed or incomplete builds found",
- str(cm.exception))
-
-
-if __name__ == "__main__":
- unittest.main()