# coding=utf-8 import os from collections import defaultdict from unittest import TestCase, mock, main from pungi.scripts.create_packages_json import PackagesGenerator, RepoInfo FOLDER_WITH_TEST_DATA = os.path.join( os.path.dirname( os.path.abspath(__file__) ), 'data/test_create_packages_json/', ) test_repo_info = RepoInfo( path=FOLDER_WITH_TEST_DATA, folder='test_repo', name='TestRepo', arch='x86_64', is_remote=False, ) test_repo_info_2 = RepoInfo( path=FOLDER_WITH_TEST_DATA, folder='test_repo_2', name='TestRepo2', arch='x86_64', is_remote=False, ) class TestPackagesJson(TestCase): def test_01__get_remote_file_content(self): """ Test the getting of content from a remote file """ request_object = mock.Mock() request_object.raise_for_status = lambda: True request_object.content = b'TestContent' with mock.patch( 'pungi.scripts.create_packages_json.requests.get', return_value=request_object, ) as mock_requests_get, mock.patch( 'pungi.scripts.create_packages_json.tempfile.NamedTemporaryFile', ) as mock_tempfile: mock_tempfile.return_value.__enter__.return_value.name = 'tmpfile' file_name = PackagesGenerator._get_remote_file_content( file_url='fakeurl' ) mock_requests_get.assert_called_once_with(url='fakeurl') mock_tempfile.assert_called_once_with(delete=False) mock_tempfile.return_value.__enter__().\ write.assert_called_once_with(b'TestContent') self.assertEqual( file_name, 'tmpfile', ) def test_02_generate_additional_packages(self): pg = PackagesGenerator( repos=[ test_repo_info, test_repo_info_2, ], excluded_packages=['zziplib-utils'], ) test_packages = defaultdict( lambda: defaultdict( lambda: defaultdict( list, ) ) ) test_packages['TestRepo']['x86_64']['zziplib'] = \ [ 'zziplib.x86_64', ] test_packages['TestRepo2']['x86_64']['zziplib'] = \ [ 'zziplib.i686', ] result = pg.generate_packages_json() self.assertEqual( test_packages, result, ) if __name__ == '__main__': main()