mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-08-16 19:30:09 +02:00
70 lines
2.6 KiB
Python
Executable File
70 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import inspect
|
|
import optparse
|
|
import os
|
|
import sys
|
|
import unittest
|
|
import hashlib
|
|
import logging
|
|
from tempfile import TemporaryDirectory
|
|
|
|
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)
|
|
|
|
from testcommon import TmpCwd
|
|
from fdroidserver import common, signatures
|
|
|
|
|
|
class SignaturesTest(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
common.config = None
|
|
config = common.read_config(common.options)
|
|
config['jarsigner'] = common.find_sdk_tools_cmd('jarsigner')
|
|
config['verbose'] = True
|
|
common.config = config
|
|
|
|
def test_main(self):
|
|
|
|
# option fixture class:
|
|
class OptionsFixture:
|
|
APK = [os.path.abspath(os.path.join('repo', 'com.politedroid_3.apk'))]
|
|
|
|
with TemporaryDirectory() as tmpdir, TmpCwd(tmpdir):
|
|
signatures.extract(OptionsFixture())
|
|
|
|
# check if extracted signatures are where they are supposed to be
|
|
# also verify weather if extracted file contian what they should
|
|
filesAndHashes = (
|
|
(os.path.join('metadata', 'com.politedroid', 'signatures', '3', 'MANIFEST.MF'),
|
|
'7dcd83f0c41a75457fd2311bf3c4578f80d684362d74ba8dc52838d353f31cf2'),
|
|
(os.path.join('metadata', 'com.politedroid', 'signatures', '3', 'RELEASE.RSA'),
|
|
'883ef3d5a6e0bf69d2a58d9e255a7930f08a49abc38e216ed054943c99c8fdb4'),
|
|
(os.path.join('metadata', 'com.politedroid', 'signatures', '3', 'RELEASE.SF'),
|
|
'99fbb3211ef5d7c1253f3a7ad4836eadc9905103ce6a75916c40de2831958284'),
|
|
)
|
|
for path, checksum in filesAndHashes:
|
|
self.assertTrue(os.path.isfile(path),
|
|
msg="check whether '{path}' was extracted "
|
|
"correctly.".format(path=path))
|
|
with open(path, 'rb') as f:
|
|
self.assertEqual(hashlib.sha256(f.read()).hexdigest(), checksum)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
os.chdir(os.path.dirname(__file__))
|
|
|
|
parser = optparse.OptionParser()
|
|
parser.add_option("-v", "--verbose", action="store_true", default=False,
|
|
help="Spew out even more information than normal")
|
|
(common.options, args) = parser.parse_args(['--verbose'])
|
|
|
|
newSuite = unittest.TestSuite()
|
|
newSuite.addTest(unittest.makeSuite(SignaturesTest))
|
|
unittest.main(failfast=False)
|