コード例 #1
0
def test_elite_run_action_changed(monkeypatch, printer):
    helpers.patch_root_runtime(monkeypatch)

    class MyAction(Action):
        def process(self):
            return self.changed()

    elite = Elite(printer)
    elite.register_action('my_action', MyAction)
    assert elite.my_action() == EliteResponse(changed=True, ok=True)
コード例 #2
0
def test_elite_sudo_uid_gid_invalid(monkeypatch, printer):
    helpers.patch_root_runtime(monkeypatch)
    monkeypatch.setenv('SUDO_UID', 'hmm')
    monkeypatch.setenv('SUDO_GID', 'wow')

    with pytest.raises(EliteError):
        Elite(printer)
コード例 #3
0
def test_elite_register_action_which_already_exists(monkeypatch, printer):
    helpers.patch_root_runtime(monkeypatch)

    class MyAction(Action):
        def process(self):
            return self.ok(cool=True)

    elite = Elite(printer)
    elite.register_action('my_action', MyAction)
    with pytest.raises(ValueError):
        elite.register_action('my_action', MyAction)
コード例 #4
0
def test_elite_run_action_failed(monkeypatch, printer):
    helpers.patch_root_runtime(monkeypatch)

    class MyAction(Action):
        def process(self):
            raise ActionError('oh no')

    elite = Elite(printer)
    elite.register_action('my_action', MyAction)
    with pytest.raises(EliteError):
        elite.my_action()
コード例 #5
0
def test_elite_options_ignore_failed(monkeypatch, printer):
    helpers.patch_root_runtime(monkeypatch)

    class MyAction(Action):
        def process(self):
            raise ActionError('oh no')

    elite = Elite(printer)
    elite.register_action('my_action', MyAction)
    with elite.options(ignore_failed=True):
        assert elite.my_action() == EliteResponse(changed=False,
                                                  ok=False,
                                                  failed_message='oh no')
コード例 #6
0
def test_elite_initialisation(monkeypatch, printer):
    helpers.patch_root_runtime(monkeypatch)

    elite = Elite(printer)

    assert elite.user_uid == 501
    assert elite.user_gid == 20

    assert elite.root_env['USER'] == 'root'
    assert elite.root_env['LOGNAME'] == 'root'
    assert elite.root_env['SHELL'] == '/bin/sh'
    assert elite.root_env['USERNAME'] == 'root'
    assert elite.root_env['MAIL'] == '/var/mail/root'

    assert elite.user_env['USER'] == 'fots'
    assert elite.user_env['LOGNAME'] == 'fots'
    assert elite.user_env['HOME'] == '/Users/fots'
    assert elite.user_env['SHELL'] == '/bin/bash'
    assert elite.user_env[
        'PWD'] == '/Users/fots/Documents/Development/macbuild/elite'
    assert 'OLDPWD' not in elite.user_env
    assert 'USERNAME' not in elite.user_env
    assert 'MAIL' not in elite.user_env
コード例 #7
0
def test_elite_options_env(monkeypatch, printer):
    helpers.patch_root_runtime(monkeypatch)

    class MyAction(Action):
        def process(self):
            return self.ok(favourite_animal=os.environ['FAVOURITE_ANIMAL'],
                           enjoy_mooing=bool(os.environ['ENJOY_MOOING']))

    elite = Elite(printer)
    elite.register_action('my_action', MyAction)
    with elite.options(env={'FAVOURITE_ANIMAL': 'cows', 'ENJOY_MOOING': '1'}):
        assert elite.my_action() == EliteResponse(changed=False,
                                                  ok=True,
                                                  data={
                                                      'favourite_animal':
                                                      'cows',
                                                      'enjoy_mooing': True
                                                  })
コード例 #8
0
def test_elite_options_sudo(seteuid_mock, setegid_mock, demote_mock,
                            monkeypatch, printer):
    helpers.patch_root_runtime(monkeypatch)

    class MyAction(Action):
        def process(self):
            return self.ok()

    elite = Elite(printer)
    elite.register_action('my_action', MyAction)
    with elite.options(sudo=True):
        assert elite.my_action() == EliteResponse(changed=False, ok=True)

    assert seteuid_mock.call_args_list == [
        mock.call(501), mock.call(0),
        mock.call(501)
    ]
    assert setegid_mock.call_args_list == [
        mock.call(20), mock.call(0),
        mock.call(20)
    ]
    assert demote_mock.call_args == mock.call(0, 0)
コード例 #9
0
def test_elite_run_action_inexistent(monkeypatch, printer):
    helpers.patch_root_runtime(monkeypatch)

    elite = Elite(printer)
    with pytest.raises(AttributeError):
        elite.my_action()
コード例 #10
0
def test_elite_not_run_as_root():
    printer = Printer()
    with pytest.raises(EliteError):
        Elite(printer)