def test_main_bad_format_version(mock_subprocess, mock_args): mock_process = Mock() mock_process.communicate.return_value = (b'zypper', b'stderr') mock_process.returncode = 0 mock_subprocess.return_value = mock_process exception = False try: main() except Exception as e: exception = True assert 'Could not parse' in str(e) assert exception
def test_main_no_root(mock_subprocess, mock_args): mock_process = Mock() mock_process.communicate.return_value = (b'zypper 1.14.15', b'stderr') mock_process.returncode = 0 mock_subprocess.return_value = mock_process exception = False try: main() except Exception as e: exception = True assert 'root privileges' in str(e) assert exception
def test_main_wrong_version(mock_subprocess, mock_args): mock_process = Mock() mock_process.communicate.return_value = (b'zypper 1.13.0', b'stderr') mock_process.returncode = 0 mock_subprocess.return_value = mock_process exception = False try: main() except Exception as e: exception = True assert 'higher is required' in str(e) assert exception
def test_main_zypper_returns_100(mock_subprocess, mock_geteuid, mock_args, mock_annotate, mock_name): return_values = [(b'', b''), (b'zypper 1.14.15', b'')] def mock_communicate(): if len(return_values) > 1: return return_values.pop() else: return return_values[0] args = Mock() args.annotate_only = False mock_args.return_value = args mock_geteuid.return_value = 0 mock_process = Mock() mock_process.communicate.side_effect = mock_communicate mock_process.returncode = ZYPPER_EXIT_INF_RESTART_NEEDED mock_subprocess.return_value = mock_process main() assert mock_subprocess.call_args_list == [ call(['zypper', '--version'], stdout=-1, stderr=-1, env=ANY), call(['zypper', '--userdata', 'skuba-update', 'ref', '-s'], stdout=None, stderr=None, env=ANY), call([ 'zypper', '--userdata', 'skuba-update', '--non-interactive', '--non-interactive-include-reboot-patches', 'patch' ], stdout=None, stderr=None, env=ANY), call([ 'zypper', '--userdata', 'skuba-update', '--non-interactive', '--non-interactive-include-reboot-patches', 'patch' ], stdout=None, stderr=None, env=ANY), call(['zypper', '--userdata', 'skuba-update', 'ps', '-sss'], stdout=-1, stderr=-1, env=ANY), call(['rpm', '-q', 'caasp-release', '--queryformat', '%{VERSION}'], stdout=-1, stderr=-1, env=ANY), call(['zypper', '--userdata', 'skuba-update', 'needs-rebooting'], stdout=None, stderr=None, env=ANY), ]
def test_main(mock_subprocess, mock_geteuid, mock_args, mock_annotate, mock_annotate_version, mock_name): return_values = [(b'some_service1\nsome_service2', b''), (b'zypper 1.14.15', b'')] def mock_communicate(): if len(return_values) > 1: return return_values.pop() else: return return_values[0] args = Mock() args.annotate_only = False mock_args.return_value = args mock_geteuid.return_value = 0 mock_process = Mock() mock_process.communicate.side_effect = mock_communicate mock_process.returncode = 0 mock_subprocess.return_value = mock_process main() assert mock_subprocess.call_args_list == [ call(['zypper', '--version'], stdout=-1, stderr=-1, env=ANY), call(['zypper', '--userdata', 'skuba-update', 'ref', '-s'], stdout=None, stderr=None, env=ANY), call([ 'zypper', '--userdata', 'skuba-update', '--non-interactive', '--non-interactive-include-reboot-patches', 'patch' ], stdout=None, stderr=None, env=ANY), call(['zypper', '--userdata', 'skuba-update', 'ps', '-sss'], stdout=-1, stderr=-1, env=ANY), call(['systemctl', 'restart', 'some_service1'], stdout=None, stderr=None, env=ANY), call(['systemctl', 'restart', 'some_service2'], stdout=None, stderr=None, env=ANY), call(['zypper', '--userdata', 'skuba-update', 'needs-rebooting'], stdout=None, stderr=None, env=ANY), ]
def test_main_annotate_only(mock_subprocess, mock_geteuid, mock_args, mock_annotate): args = Mock() args.annotate_only = True mock_args.return_value = args mock_geteuid.return_value = 0 mock_process = Mock() mock_process.communicate.return_value = (b'zypper 1.14.15', b'stderr') mock_process.returncode = ZYPPER_EXIT_INF_UPDATE_NEEDED mock_subprocess.return_value = mock_process main() assert mock_subprocess.call_args_list == [ call(['zypper', '--version'], stdout=-1, stderr=-1, env=ANY), call(['zypper', 'ref', '-s'], stdout=None, stderr=None, env=ANY), ]
def test_main_annotate_only(mock_subprocess, mock_geteuid, mock_args, mock_annotate, mock_name): args = Mock() args.annotate_only = True mock_args.return_value = args mock_geteuid.return_value = 0 mock_process = Mock() mock_process.communicate.return_value = (b'zypper 1.14.15', b'stderr') mock_process.returncode = ZYPPER_EXIT_INF_UPDATE_NEEDED mock_subprocess.return_value = mock_process main() assert mock_subprocess.call_args_list == [ call(['zypper', '--version'], stdout=-1, stderr=-1, env=ANY), call(['zypper', '--userdata', 'skuba-update', 'ref', '-s'], stdout=None, stderr=None, env=ANY), call(['rpm', '-q', 'caasp-release', '--queryformat', '%{VERSION}'], stdout=-1, stderr=-1, env=ANY), ]