mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-14 11:00:10 +01:00
18f3acc32e
There is no longer any reason for these to be intertwined. This deliberately avoids touching some files as much as possible because they are super tangled and due to be replaced. Those files are: * fdroidserver/build.py * fdroidserver/update.py # Conflicts: # tests/testcommon.py # Conflicts: # fdroidserver/btlog.py # fdroidserver/import_subcommand.py
111 lines
3.3 KiB
Python
Executable File
111 lines
3.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import inspect
|
|
import json
|
|
import logging
|
|
import os
|
|
import shutil
|
|
import sys
|
|
import tempfile
|
|
import unittest
|
|
|
|
from pathlib import Path
|
|
from unittest.mock import patch
|
|
|
|
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 fdroidserver import common, verify
|
|
|
|
|
|
TEST_APP_ENTRY = {
|
|
"1539780240.3885746": {
|
|
"local": {
|
|
"file": "unsigned/com.politedroid_6.apk",
|
|
"packageName": "com.politedroid",
|
|
"sha256": "70c2f776a2bac38a58a7d521f96ee0414c6f0fb1de973c3ca8b10862a009247d",
|
|
"timestamp": 1234567.8900000,
|
|
"versionCode": "6",
|
|
"versionName": "1.5",
|
|
},
|
|
"remote": {
|
|
"file": "tmp/com.politedroid_6.apk",
|
|
"packageName": "com.politedroid",
|
|
"sha256": "70c2f776a2bac38a58a7d521f96ee0414c6f0fb1de973c3ca8b10862a009247d",
|
|
"timestamp": 1234567.8900000,
|
|
"versionCode": "6",
|
|
"versionName": "1.5",
|
|
},
|
|
"url": "https://f-droid.org/repo/com.politedroid_6.apk",
|
|
"verified": True,
|
|
}
|
|
}
|
|
|
|
|
|
class VerifyTest(unittest.TestCase):
|
|
basedir = Path(__file__).resolve().parent
|
|
|
|
def setUp(self):
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
self.tempdir = tempfile.TemporaryDirectory()
|
|
os.chdir(self.tempdir.name)
|
|
self.repodir = Path('repo')
|
|
self.repodir.mkdir()
|
|
|
|
def tearDown(self):
|
|
self.tempdir.cleanup()
|
|
|
|
@patch('fdroidserver.common.sha256sum')
|
|
def test_write_json_report(self, sha256sum):
|
|
sha256sum.return_value = (
|
|
'70c2f776a2bac38a58a7d521f96ee0414c6f0fb1de973c3ca8b10862a009247d'
|
|
)
|
|
os.mkdir('tmp')
|
|
os.mkdir('unsigned')
|
|
verified_json = Path('unsigned/verified.json')
|
|
packageName = 'com.politedroid'
|
|
apk_name = packageName + '_6.apk'
|
|
remote_apk = 'tmp/' + apk_name
|
|
unsigned_apk = 'unsigned/' + apk_name
|
|
# TODO common.use apk_strip_v1_signatures() on unsigned_apk
|
|
shutil.copy(str(self.basedir / 'repo' / apk_name), remote_apk)
|
|
shutil.copy(str(self.basedir / 'repo' / apk_name), unsigned_apk)
|
|
url = TEST_APP_ENTRY['1539780240.3885746']['url']
|
|
|
|
self.assertFalse(verified_json.exists())
|
|
verify.write_json_report(url, remote_apk, unsigned_apk, {})
|
|
self.assertTrue(verified_json.exists())
|
|
# smoke check status JSON
|
|
with verified_json.open() as fp:
|
|
firstpass = json.load(fp)
|
|
|
|
verify.write_json_report(url, remote_apk, unsigned_apk, {})
|
|
with verified_json.open() as fp:
|
|
secondpass = json.load(fp)
|
|
|
|
self.assertEqual(firstpass, secondpass)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
os.chdir(os.path.dirname(__file__))
|
|
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"-v",
|
|
"--verbose",
|
|
action="store_true",
|
|
default=False,
|
|
help="Spew out even more information than normal",
|
|
)
|
|
common.options = common.parse_args(parser)
|
|
|
|
newSuite = unittest.TestSuite()
|
|
newSuite.addTest(unittest.makeSuite(VerifyTest))
|
|
unittest.main(failfast=False)
|