mirror of
				https://github.com/f-droid/fdroidserver.git
				synced 2025-11-04 14:30:30 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
import json
 | 
						|
import os
 | 
						|
import shutil
 | 
						|
import tempfile
 | 
						|
import unittest
 | 
						|
from pathlib import Path
 | 
						|
from unittest.mock import MagicMock, patch
 | 
						|
 | 
						|
from fdroidserver import common, gpgsign
 | 
						|
 | 
						|
basedir = Path(__file__).parent
 | 
						|
 | 
						|
 | 
						|
class GpgsignTest(unittest.TestCase):
 | 
						|
    def setUp(self):
 | 
						|
        self.tempdir = tempfile.TemporaryDirectory()
 | 
						|
        os.chdir(self.tempdir.name)
 | 
						|
        self.repodir = Path('repo')
 | 
						|
        self.repodir.mkdir()
 | 
						|
 | 
						|
        gpgsign.config = None
 | 
						|
        config = common.read_config()
 | 
						|
        config['verbose'] = True
 | 
						|
        config['gpghome'] = str((basedir / 'gnupghome').resolve())
 | 
						|
        config['gpgkey'] = '1DBA2E89'
 | 
						|
        gpgsign.config = config
 | 
						|
 | 
						|
    def tearDown(self):
 | 
						|
        self.tempdir.cleanup()
 | 
						|
 | 
						|
    @patch('sys.argv', ['fdroid gpgsign', '--verbose'])
 | 
						|
    @patch('fdroidserver.gpgsign.FDroidPopen')
 | 
						|
    def test_sign_index(self, FDroidPopen):
 | 
						|
        """This skips running gpg because its hard to setup in a test env"""
 | 
						|
        index_v1_json = 'repo/index-v1.json'
 | 
						|
        shutil.copy(basedir / index_v1_json, 'repo')
 | 
						|
        shutil.copy(basedir / 'SpeedoMeterApp.main_1.apk', 'repo')
 | 
						|
 | 
						|
        def _side_effect(gpg):
 | 
						|
            f = gpg[-1]
 | 
						|
            sig = gpg[3]
 | 
						|
            self.assertTrue(sig.startswith(f))
 | 
						|
            open(sig, 'w').close()
 | 
						|
            p = MagicMock()
 | 
						|
            p.returncode = 0
 | 
						|
            return p
 | 
						|
 | 
						|
        FDroidPopen.side_effect = _side_effect
 | 
						|
        gpgsign.main()
 | 
						|
        self.assertTrue(FDroidPopen.called)
 | 
						|
        self.assertTrue((self.repodir / 'index-v1.json').exists())
 | 
						|
        self.assertTrue((self.repodir / 'index-v1.json.asc').exists())
 | 
						|
        self.assertTrue((self.repodir / 'SpeedoMeterApp.main_1.apk.asc').exists())
 | 
						|
        self.assertFalse((self.repodir / 'index.jar.asc').exists())
 | 
						|
        # smoke check status JSON
 | 
						|
        with (self.repodir / 'status/gpgsign.json').open() as fp:
 | 
						|
            data = json.load(fp)
 | 
						|
        self.assertIn('index-v1.json', data['signed'])
 |