Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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),
    ]
Exemple #5
0
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),
    ]
Exemple #6
0
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),
    ]
Exemple #7
0
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),
    ]