#3528 Increase CLI unit tests
Merged a year ago by tkopecek. Opened a year ago by jcupova.
jcupova/koji issue-3527  into  master

Increase CLI unit tests
Jana Cupova • a year ago  
@@ -28,7 +28,10 @@ 

              'epoch': None,

              'nvr': 'bash-4.4.12-5.fc26',

              'build_id': 1,

+             'id': 123,

+             'name': 'bash',

          }

+         self.b_label = '%(name)s-%(version)s-%(release)s' % self.build_templ

  

          self.getrpminfo = {'arch': 'noarch',

                             'build_id': 1,
@@ -229,6 +232,42 @@ 

              exit_code=1

          )

  

+     @mock.patch('koji.buildLabel')

+     def test_download_build_without_all_rpms_with_arches(self, build_label):

+         build_id = '1'

+         arches = ['testarch', 'testarch2']

+         build_label.return_value = self.b_label

+         self.session.getRPM.return_value = self.getrpminfo

+         self.session.getBuild.return_value = self.build_templ

+         self.session.listRPMs.return_value = []

+         self.assert_system_exit(

+             anon_handle_download_build,

+             self.options,

+             self.session,

+             [build_id, '--arch', arches[0], '--arch', arches[1], '--key', self.sigkey],

+             stderr='No %s or %s packages available for %s\n'

+                    % (arches[0], arches[1], self.b_label),

+             activate_session=None,

+             exit_code=1

+         )

+ 

+     @mock.patch('koji.buildLabel')

+     def test_download_build_without_all_rpms(self, build_label):

+         build_id = '1'

+         build_label.return_value = self.b_label

+         self.session.getRPM.return_value = self.getrpminfo

+         self.session.getBuild.return_value = self.build_templ

+         self.session.listRPMs.return_value = []

+         self.assert_system_exit(

+             anon_handle_download_build,

+             self.options,

+             self.session,

+             [build_id, '--key', self.sigkey],

+             stderr='No packages available for %s\n' % self.b_label,

+             activate_session=None,

+             exit_code=1

+         )

+ 

      def test_handle_add_volume_help(self):

          self.assert_help(

              anon_handle_download_build,

@@ -1,6 +1,7 @@ 

  from __future__ import absolute_import

  import mock

  from six.moves import StringIO

+ import koji

  

  from koji_cli.commands import handle_list_signed

  from . import utils
@@ -19,6 +20,14 @@ 

  %s: error: {message}

  """ % (self.progname, self.progname)

  

+     def __vm(self, result):

+         m = koji.VirtualCall('mcall_method', [], {})

+         if isinstance(result, dict) and result.get('faultCode'):

+             m._result = result

+         else:

+             m._result = (result,)

+         return m

+ 

      def test_list_signed_help(self):

          self.assert_help(

              handle_list_signed,
@@ -73,7 +82,7 @@ 

  

      @mock.patch('koji.pathinfo.build', return_value='fakebuildpath')

      @mock.patch('sys.stdout', new_callable=StringIO)

-     def test_list_signed_rpm_external_build_non_exist_path(self, stdout, pb):

+     def test_list_signed_rpm_with_build_non_exist_path(self, stdout, pb):

          binfo = {'build_id': 1, 'id': 1, 'name': 'test-build', 'release': '1', 'task_id': 8,

                   'version': '1', 'state': 1, 'completion_ts': 1614869140.368759,

                   'owner_name': 'kojiadmin', 'volume_name': 'DEFAULT',
@@ -99,7 +108,7 @@ 

      @mock.patch('os.path.exists', return_value=True)

      @mock.patch('koji.pathinfo.build', return_value='fakebuildpath')

      @mock.patch('sys.stdout', new_callable=StringIO)

-     def test_list_signed_rpm_external_build_valid(self, stdout, pb, os_path_exists):

+     def test_list_signed_rpm_with_build_valid(self, stdout, pb, os_path_exists):

          binfo = {'build_id': 1,

                   'id': 1,

                   'name': 'test-build',
@@ -113,7 +122,7 @@ 

                   'package_name': 'test-package'}

          list_rpms = [

              {'id': 123, 'name': 'test', 'version': '1.3', 'release': 1, 'arch': 'test-arch',

-              'external_repo_name': 'ext-repo', 'external_repo_id': 456, 'build_id': 1}]

+              'build_id': 1}]

          sigRpm = [{'rpm_id': 123, 'sigkey': 'qwertyuiop'}]

          self.session.getBuild.return_value = binfo

          self.session.listRPMs.return_value = list_rpms
@@ -128,3 +137,66 @@ 

          self.session.listRPMs.assert_called_once_with(buildID=binfo['id'])

          self.session.queryRPMSigs.assert_called_once_with(rpm_id=list_rpms[0]['id'])

          self.session.getRPM.assert_not_called()

+ 

+     @mock.patch('os.path.exists', return_value=True)

+     @mock.patch('koji.pathinfo.build', return_value='fakebuildpath')

+     @mock.patch('sys.stdout', new_callable=StringIO)

+     def test_list_signed_rpm_with_rpm_and_with_key_valid(self, stdout, pb, os_path_exists):

+         rinfo_1 = {'id': 123, 'name': 'test', 'version': '1.3', 'release': 1, 'arch': 'test-arch',

+                    'build_id': 2}

+         rinfo_2 = {'id': 124, 'name': 'test-2', 'version': '1.5', 'release': 1,

+                    'arch': 'test-arch', 'build_id': 3}

+         sigRpm = [{'rpm_id': 124, 'sigkey': 'qwertyuiop'}]

+         self.session.getRPM.side_effect = [rinfo_1, rinfo_2]

+         self.session.queryRPMSigs.return_value = sigRpm

+         handle_list_signed(self.options, self.session, ['--rpm=test-rpm', '--key=qwertyuiop'])

+         path = 'fakebuildpath/data/signed/%s/%s/%s-%s-%s.%s.rpm' \

+                % (sigRpm[0]['sigkey'], rinfo_2['arch'], rinfo_2['name'],

+                   rinfo_2['version'], rinfo_2['release'], rinfo_2['arch'])

+         self.assert_console_message(stdout, '%s\n' % path)

+         self.activate_session_mock.assert_called_once_with(self.session, self.options)

+         self.session.getBuild.assert_called_once_with(rinfo_2['build_id'])

+         self.session.listRPMs.assert_not_called()

+         self.session.queryRPMSigs.assert_called_once_with(sigkey='qwertyuiop',

+                                                           rpm_id=rinfo_1['id'])

+         self.session.getRPM.assert_has_calls([mock.call('test-rpm', strict=True),

+                                               mock.call(rinfo_2['id'])])

+ 

+     @mock.patch('os.path.exists', return_value=True)

+     @mock.patch('koji.pathinfo.build', return_value='fakebuildpath')

+     @mock.patch('sys.stdout', new_callable=StringIO)

+     def test_list_signed_rpm_tag_valid_and_with_key(self, stdout, pb, os_path_exists):

+         tagged_rpms = [{'id': 100,

+                         'build_id': 1,

+                         'name': 'rpmA',

+                         'version': '0.0.1',

+                         'release': '1.el6',

+                         'arch': 'noarch',

+                         'sigkey': 'sigkey',

+                         'extra': 'extra-value'},

+                        ]

+         tagged_builds = [{'id': 1,

+                           'name': 'packagename',

+                           'version': 'version',

+                           'release': '1.el6',

+                           'nvr': 'n-v-r',

+                           'tag_name': 'tag',

+                           'owner_name': 'owner',

+                           'extra': 'extra-value-2',

+                           'package_name': 'packagename'}]

+         self.session.listTaggedRPMS.return_value = [tagged_rpms, tagged_builds]

+         sigRpm = [{'rpm_id': 100, 'sigkey': 'qwertyuiop'}]

+         mcall = self.session.multicall.return_value.__enter__.return_value

+         mcall.queryRPMSigs.return_value = self.__vm(sigRpm)

+         handle_list_signed(self.options, self.session, ['--tag=test-tag'])

+         path = 'fakebuildpath/data/signed/%s/%s/%s-%s-%s.%s.rpm' \

+                % (sigRpm[0]['sigkey'], tagged_rpms[0]['arch'], tagged_rpms[0]['name'],

+                   tagged_rpms[0]['version'], tagged_rpms[0]['release'], tagged_rpms[0]['arch'])

+         self.assert_console_message(stdout, '%s\n' % path)

+         self.activate_session_mock.assert_called_once_with(self.session, self.options)

+         self.session.listTaggedRPMS.assert_called_once_with(

+             'test-tag', inherit=False, latest=False)

+         self.session.getBuild.assert_not_called()

+         self.session.listRPMs.assert_not_called()

+         self.session.queryRPMSigs.assert_not_called()

+         self.session.getRPM.assert_not_called()

rebased onto bc59bc5df34f1a1bc116b14839f9d95e7d914a57

a year ago

rebased onto ca5537e

a year ago

Commit 1cc61dd fixes this pull-request

Pull-Request has been merged by tkopecek

a year ago