1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-11-16 11:50:10 +01:00
fdroidserver/tests/verify.TestCase
Hans-Christoph Steiner 18f3acc32e split out options from read_config()
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
2024-05-08 16:26:46 +02:00

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)