diff --git a/tests/androguard_test.py b/tests/androguard_test.py deleted file mode 100644 index 162dffb3..00000000 --- a/tests/androguard_test.py +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env python3 - -import inspect -import logging -import optparse -import os -import sys -import unittest - -localmodule = os.path.realpath( - os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) -print('localmodule: ' + localmodule) -if localmodule not in sys.path: - sys.path.insert(0, localmodule) - -import fdroidserver.common -import fdroidserver.metadata -import fdroidserver.update - - -class UpdateTest(unittest.TestCase): - '''fdroid androguard manual tests''' - - def testScanMetadataAndroguardAAPT(self): - - def _create_apkmetadata_object(apkName): - '''Create an empty apk metadata object''' - apk = {} - apk['apkName'] = apkName - apk['uses-permission'] = [] - apk['uses-permission-sdk-23'] = [] - apk['features'] = [] - apk['icons_src'] = {} - return apk - - config = dict() - fdroidserver.common.fill_config_defaults(config) - fdroidserver.update.config = config - os.chdir(os.path.dirname(__file__)) - if os.path.basename(os.getcwd()) != 'tests': - raise Exception('This test must be run in the "tests/" subdir') - - config['ndk_paths'] = dict() - fdroidserver.common.config = config - fdroidserver.update.config = config - - fdroidserver.update.options = type('', (), {})() - fdroidserver.update.options.clean = True - fdroidserver.update.options.delete_unknown = True - - self.assertTrue(fdroidserver.common.SdkToolsPopen('aapt')) - try: - from androguard.core.bytecodes.apk import APK - dir(APK) - except ImportError: - raise Exception("androguard not installed!") - - apkList = ['../info.guardianproject.urzip.apk', '../org.dyndns.fules.ck_20.apk'] - - for apkName in apkList: - logging.debug("Processing " + apkName) - apkfile = os.path.join('repo', apkName) - - apkaapt = _create_apkmetadata_object(apkName) - logging.debug("Using AAPT for metadata") - fdroidserver.update.scan_apk_aapt(apkaapt, apkfile) - # avoid AAPT application name bug - del apkaapt['name'] - - apkandroguard = _create_apkmetadata_object(apkName) - logging.debug("Using androguard for metadata") - fdroidserver.update.scan_apk_androguard(apkandroguard, apkfile) - # avoid AAPT application name bug - del apkandroguard['name'] - - self.maxDiff = None - self.assertEqual(apkaapt, apkandroguard) - - -if __name__ == "__main__": - parser = optparse.OptionParser() - parser.add_option("-v", "--verbose", action="store_true", default=False, - help="Spew out even more information than normal") - (fdroidserver.common.options, args) = parser.parse_args(['--verbose']) - - newSuite = unittest.TestSuite() - newSuite.addTest(unittest.makeSuite(UpdateTest)) - unittest.main() diff --git a/tests/update.TestCase b/tests/update.TestCase index cc56f455..4d425382 100755 --- a/tests/update.TestCase +++ b/tests/update.TestCase @@ -1652,6 +1652,70 @@ class UpdateTest(unittest.TestCase): self.assertEqual(fdroidserver.update.config['jarsigner'], data['jarsigner']) self.assertEqual(fdroidserver.update.config['keytool'], data['keytool']) + def test_scan_metadata_androguard(self): + + def _create_apkmetadata_object(apkName): + """Create an empty apk metadata object.""" + apk = {} + apk['apkName'] = apkName + apk['uses-permission'] = [] + apk['uses-permission-sdk-23'] = [] + apk['features'] = [] + apk['icons_src'] = {} + return apk + + apkList = [ + ( + 'org.dyndns.fules.ck_20.apk', + { + 'apkName': 'org.dyndns.fules.ck_20.apk', + 'uses-permission': [ + fdroidserver.update.UsesPermission( + name='android.permission.BIND_INPUT_METHOD', + maxSdkVersion=None, + ), + fdroidserver.update.UsesPermission( + name='android.permission.READ_EXTERNAL_STORAGE', + maxSdkVersion=None, + ), + fdroidserver.update.UsesPermission( + name='android.permission.VIBRATE', maxSdkVersion=None + ), + ], + 'uses-permission-sdk-23': [], + 'features': [], + 'icons_src': { + '240': 'res/drawable-hdpi-v4/icon_launcher.png', + '120': 'res/drawable-ldpi-v4/icon_launcher.png', + '160': 'res/drawable-mdpi-v4/icon_launcher.png', + '-1': 'res/drawable-mdpi-v4/icon_launcher.png', + }, + 'packageName': 'org.dyndns.fules.ck', + 'versionCode': 20, + 'versionName': 'v1.6pre2', + 'minSdkVersion': 7, + 'name': 'Compass Keyboard', + 'targetSdkVersion': 8, + 'nativecode': [ + 'arm64-v8a', + 'armeabi', + 'armeabi-v7a', + 'mips', + 'mips64', + 'x86', + 'x86_64', + ], + }, + ) + ] + + for apkfile, apkaapt in apkList: + apkandroguard = _create_apkmetadata_object(apkfile) + fdroidserver.update.scan_apk_androguard(apkandroguard, apkfile) + + self.maxDiff = None + self.assertEqual(apkaapt, apkandroguard) + if __name__ == "__main__": os.chdir(os.path.dirname(__file__))