コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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
        )
コード例 #5
0
    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)
コード例 #6
0
    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)
コード例 #7
0
    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)
コード例 #8
0
    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"]
        )
コード例 #9
0
    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)
コード例 #10
0
    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)