def test_get_app_permissions_when_dumb_permissions_fails(self, mock_popen): mock_popen.side_effect = RuntimeError() permissions = Aapt.get_app_permissions("any-file-path") assert_popen_called_once(mock_popen) self.assertEqual([], permissions)
def test_get_app_name_when_dumb_badging_fails(self, mock_popen): mock_popen.side_effect = RuntimeError() app_name = Aapt.get_app_name("any-file-path") assert_popen_called_once(mock_popen) self.assertEqual("", app_name)
def test_execute_dump_xmltree(self, mock_popen): mock_popen.return_value = any_popen(b"any-result") result = Aapt._execute_dump_xmltree("any-file-path") assert_popen_called_once(mock_popen) self.assertEqual("any-result", result)
def test_get_apk_info(self, mock_popen): dump_badging = b"package: name='com.example.app' versionCode='1' versionName='1.0' platformBuildVersionName='4'\n" \ b"sdkVersion:'10'\n" \ b"maxSdkVersion:'20'\n" \ b"targetSdkVersion:'15'" mock_popen.return_value = any_popen(dump_badging) apk = Aapt.get_apk_info("any-file-path") assert_popen_called_once(mock_popen) self.assertEqual( { "package_name": "com.example.app", "version": { "code": 1, "name": "1.0" }, "sdk": { "max": "20", "min": "10", "target": "15" } }, apk )
def test_get_app_name(self, mock_popen): mock_popen.return_value = any_popen(b"application: label='Example' icon='res/ic_launcher.png'\n") app_name = Aapt.get_app_name("any-file-path") assert_popen_called_once(mock_popen) self.assertEqual("Example", app_name)
def test_get_manifest_info(self, mock_popen): dump_xmltree = b"N: android=http://schemas.android.com/apk/res/android\n" \ b" E: manifest (line=2)\n" \ b" E: application (line=8)\n" \ b" E: activity (line=9)\n" \ b" A: android:name(0x01010003)=\"any-activity\" (Raw: \"any-activity\")\n" \ b" E: activity (line=15)\n" \ b" A: android:name(0x01010003)=\"any-other-activity\" (Raw: \"any-other-activity\")\n" \ b" E: service (line=25)\n" \ b" A: android:name(0x01010003)=\"any-service\" (Raw: \"any-service\")\n" \ b" E: service (line=26)\n" \ b" A: android:name(0x01010003)=\"any-other-service\" (Raw: \"any-other-service\")\n" \ b" E: receiver (line=28)\n" \ b" A: android:name(0x01010003)=\"any-receiver\" (Raw: \"any-receiver\")\n" \ b" E: receiver (line=29)\n" \ b" A: android:name(0x01010003)=\"any-other-receiver\" (Raw: \"any-other-receiver\")" mock_popen.return_value = any_popen(dump_xmltree) manifest = Aapt.get_manifest_info("any-file-path") assert_popen_called_once(mock_popen) self.assertEqual( { "activities": ["any-activity", "any-other-activity"], "services": ["any-service", "any-other-service"], "receivers": ["any-receiver", "any-other-receiver"] }, manifest)
def test_get_manifest_info_when_dumb_xmltree_fails(self, mock_popen): mock_popen.side_effect = RuntimeError() manifest = Aapt.get_manifest_info("any-file-path") assert_popen_called_once(mock_popen) self.assertEqual({ "activities": [], "services": [], "receivers": [] }, manifest)
def test_get_apk_info_with_invalid_version_code(self, mock_popen): mock_popen.return_value = any_popen(b"package: name='com.example.app' versionCode='A' versionName='1.0'\n") apk = Aapt.get_apk_info("any-file-path") assert_popen_called_once(mock_popen) self.assertEqual( { "code": "", # NOTE: None is converted into an empty string "name": "1.0" }, apk["version"] )
def test_get_apk_info_when_dumb_badging_fails(self, mock_popen): mock_popen.side_effect = RuntimeError() apk = Aapt.get_apk_info("any-file-path") assert_popen_called_once(mock_popen) self.assertEqual( { "package_name": "", "version": { "code": "", "name": "" }, "sdk": {} }, apk)
def test_get_app_permissions(self, mock_popen): dump_permissions = b"package: com.example.app\n" \ b"uses-permission: name='android.permission.READ_EXTERNAL_STORAGE'\n" \ b"uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'\n" \ b"uses-permission: name='android.permission.WRITE_EXTERNAL_STORAGE'\n" \ b"uses-permission: name='android.permission.INTERNET'" mock_popen.return_value = any_popen(dump_permissions) permissions = Aapt.get_app_permissions("any-file-path") assert_popen_called_once(mock_popen) self.assertEqual([ "android.permission.INTERNET", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.RECEIVE_BOOT_COMPLETED", "android.permission.WRITE_EXTERNAL_STORAGE" ], permissions)