blob: 7a342390ad2a521b636dde361fe91fb001dc99d1 [file] [log] [blame]
# Copyright 2017 Google Inc.
#
# 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.
from __future__ import absolute_import
import unittest
from utilities import util
import device_info
import mock
import step
class TestDeviceInfo(unittest.TestCase):
@mock.patch('device_info._GetIDeviceInfoValue', autospec=True)
def testGetIOSDeviceInformation(self, mock_get_value):
"""Tests creating a device_info object for iOS.
Args:
mock_get_value: mock for device_info._GetIDeviceInfoValue
"""
test_name = 'device_name'
test_id = 'abc123'
test_version = '10'
for test_device_class in device_info.IOS_DEVICE_CLASSES:
mock_get_value.side_effect = [
test_device_class, test_name, test_id, test_version
]
info_object = device_info.GetIOSDeviceInformation(test_id)
self.assertEqual(info_object.device_class,
device_info.IOS_DEVICE_CLASSES[test_device_class])
self.assertEqual(info_object.name, test_name)
self.assertEqual(info_object.id, test_id)
self.assertEqual(info_object.version, test_version)
@mock.patch('device_info._GetADBDeviceInfoValue', autospec=True)
def testGetAndroidCPUInformation(self, mock_get_value):
device_id = 'ZX1G223BPN'
mock_get_value.side_effect = [
'hammerhead',
'arm',
'newname',
'arm',
'newname',
'arm64',
'newname',
'notfoundarch',
'newname',
'x86',
'newname',
'x86_64',
]
self.assertEqual(device_info.GetAndroidCPUInformation(device_id), 'arm')
self.assertEqual(device_info.GetAndroidCPUInformation(device_id), 'arm')
self.assertEqual(device_info.GetAndroidCPUInformation(device_id), 'arm_64')
self.assertEqual(
device_info.GetAndroidCPUInformation(device_id), 'notfoundarch')
self.assertEqual(device_info.GetAndroidCPUInformation(device_id), 'x86')
self.assertEqual(device_info.GetAndroidCPUInformation(device_id), 'x86_64')
@mock.patch('device_info._GetADBDeviceInfoValue', autospec=True)
def testGetAndroidAPILevel(self, mock_get_value):
device_id = 'ZX1G223BPN'
mock_get_value.side_effect = [
'23',
'abc',
]
self.assertEqual(device_info.GetAndroidAPILevel(device_id), 23)
self.assertEqual(device_info.GetAndroidAPILevel(device_id), 99)
@mock.patch('device_info._GetADBDeviceInfoValue', autospec=True)
def testGetAndroidBuildType(self, mock_get_value):
device_id = 'ZX1G223BPN'
mock_get_value.side_effect = [
'user',
device_info.BUILD_TYPE_USERDEBUG,
]
self.assertEqual(device_info.GetAndroidBuildType(device_id), 'user')
self.assertEqual(device_info.GetAndroidBuildType(device_id), 'userdebug')
@mock.patch('device_info._GetADBDeviceInfoValue', autospec=True)
def testGetAndroidDeviceInformation(self, mock_get_value):
"""Tests creating a device_info object for Android.
Args:
mock_get_value: mock for device_info._GetIDeviceInfoValue
"""
test_name = 'device_name'
test_version = '10'
device_id = 'ZX1G223BPN'
build_type = 'userdebug'
mock_get_value.side_effect = [step.PHONE, test_name, test_version,
build_type]
info_object = device_info.GetAndroidDeviceInformation(device_id)
self.assertEqual(info_object.device_class, step.PHONE)
self.assertEqual(info_object.name, test_name)
self.assertEqual(info_object.id, device_id)
self.assertEqual(info_object.version, test_version)
self.assertEqual(info_object.build_type, build_type)
mock_get_value.side_effect = [step.TABLET, test_name, test_version,
build_type]
info_object = device_info.GetAndroidDeviceInformation(device_id)
self.assertEqual(info_object.device_class, step.TABLET)
self.assertEqual(info_object.name, test_name)
self.assertEqual(info_object.id, device_id)
self.assertEqual(info_object.version, test_version)
self.assertEqual(info_object.build_type, build_type)
mock_get_value.side_effect = [step.EMULATOR, test_name, test_version,
build_type]
info_object = device_info.GetAndroidDeviceInformation(device_id)
self.assertEqual(info_object.device_class, step.EMULATOR)
self.assertEqual(info_object.name, test_name)
self.assertEqual(info_object.id, device_id)
self.assertEqual(info_object.version, test_version)
self.assertEqual(info_object.build_type, build_type)
@mock.patch('utilities.util.RunADBProcess', autospec=True)
@mock.patch('subprocess.check_output', autospec=True)
def testGetDeviceInfo(self, mock_subprocess, mock_path):
mock_path.return_value = 'test_adb'
device_id = 'ZX1G223BPN'
device_info._GetADBDeviceInfoValue('test_adb', device_id)
self.assertIn('test_adb', mock_path.call_args_list[0][0][0])
device_info._GetIDeviceInfoValue('test_ios', device_id)
self.assertIn('test_ios', mock_subprocess.call_args_list[0][0][0])
@mock.patch('utilities.util.RunADBProcess', autospec=True)
@mock.patch('utilities.util.GetPackageVersion', autospec=True)
@mock.patch('device_info.GetAndroidAPILevel', autospec=True)
def testSystemWebviewInfo_NDevice(self, api_level_mock,
mock_get_package, mock_run_adb):
api_level_mock.return_value = 24
mock_get_package.return_value = ['72.0.000.00']
mock_run_adb.return_value = 'com.chrome.beta\n'
self.assertEqual({
'webview_provider_package': 'com.chrome.beta',
'webview_provider_version': '72.0.000.00',
}, device_info.SystemWebviewInfo('device_id'))
@mock.patch('utilities.util.GetPackageVersion', autospec=True)
@mock.patch('device_info.GetAndroidAPILevel', autospec=True)
def testSystemWebviewInfo_MDevice(self, api_level_mock, mock_get_package):
api_level_mock.return_value = 23
mock_get_package.return_value = ['72.0.000.00']
self.assertEqual({
'webview_provider_package': 'com.google.android.webview',
'webview_provider_version': '72.0.000.00',
}, device_info.SystemWebviewInfo('device_id'))
if __name__ == '__main__':
unittest.main()