1#!/usr/bin/env vpython3 2# Copyright 2022 The Chromium Authors 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6# TODO(crbug.com/1496426): Remove this file. 7 8import unittest 9from unittest import mock 10 11from parameterized import parameterized 12 13from update_images import _GetImageOverrideInfo 14from update_images import GetImageLocationInfo 15 16 17@mock.patch('update_images.GetSDKOverrideGCSPath') 18class TestGetImageOverrideInfo(unittest.TestCase): 19 def testLocationIsNone(self, mock_sdk_loc): 20 mock_sdk_loc.return_value = None 21 22 actual = _GetImageOverrideInfo() 23 self.assertIsNone(actual) 24 25 def testBadLocationStr(self, mock_sdk_loc): 26 mock_sdk_loc.return_value = 'bad-format-string' 27 28 with self.assertRaises(Exception): 29 _GetImageOverrideInfo() 30 31 @parameterized.expand([ 32 ('gs://my-bucket/development/my-hash/sdk', { 33 'bucket': 'my-bucket', 34 'image_hash': 'my-hash' 35 }), 36 ('gs://my-bucket/development/my-hash', { 37 'bucket': 'my-bucket', 38 'image_hash': 'my-hash' 39 }), 40 ('gs://my-bucket/development/my-hash/', { 41 'bucket': 'my-bucket', 42 'image_hash': 'my-hash' 43 }), 44 ]) 45 def testValidLocation(self, mock_sdk_loc, in_path, expected): 46 mock_sdk_loc.return_value = in_path 47 48 actual = _GetImageOverrideInfo() 49 self.assertEqual(actual, expected) 50 51 52@mock.patch('update_images.GetImageHash') 53@mock.patch('update_images.GetOverrideCloudStorageBucket') 54@mock.patch('update_images._GetImageOverrideInfo') 55class TestGetImageLocationInfo(unittest.TestCase): 56 def testNoOverride(self, mock_image_override, mock_override_bucket, 57 mock_image_hash): 58 mock_image_override.return_value = None 59 mock_override_bucket.return_value = None 60 mock_image_hash.return_value = 'image-hash' 61 62 actual = GetImageLocationInfo('my-bucket') 63 self.assertEqual(actual, { 64 'bucket': 'my-bucket', 65 'image_hash': 'image-hash', 66 }) 67 68 def testOverride(self, mock_image_override, mock_override_bucket, 69 mock_image_hash): 70 override_info = { 71 'bucket': 'override-bucket', 72 'image_hash': 'override-hash', 73 } 74 mock_image_override.return_value = override_info 75 mock_override_bucket.return_value = None 76 mock_image_hash.return_value = 'image-hash' 77 78 actual = GetImageLocationInfo('my-bucket') 79 self.assertEqual(actual, override_info) 80 81 def testNoAllowOverride(self, mock_image_override, mock_override_bucket, 82 mock_image_hash): 83 override_info = { 84 'bucket': 'override-bucket', 85 'image_hash': 'override-hash', 86 } 87 mock_image_override.return_value = override_info 88 mock_override_bucket.return_value = None 89 mock_image_hash.return_value = 'image-hash' 90 91 actual = GetImageLocationInfo('my-bucket', allow_override=False) 92 self.assertEqual(actual, { 93 'bucket': 'my-bucket', 94 'image_hash': 'image-hash', 95 }) 96 97 98if __name__ == '__main__': 99 unittest.main() 100