Ejemplo n.º 1
0
def test_expand_user(value, expect):
    struct = pwd.struct_passwd(
        ['tester', 'x', 1234, 1000, 'Test User', '/home/tester', '/bin/sh'])
    flexmock(os) \
        .should_receive('geteuid') \
        .and_return(1234)
    flexmock(pwd) \
        .should_receive('getpwuid') \
        .and_return(struct)
    flexmock(pwd) \
        .should_receive('getpwnam') \
        .and_return(struct)
    flexmock(grp) \
        .should_receive('getgrnam') \
        .and_return(grp.struct_group(['gx', 'x', 100, []]))
    flexmock(grp) \
        .should_receive('getgrall') \
        .and_return([
            grp.struct_group(['g1', 'x', 101, []]),
            grp.struct_group(['g2', 'x', 102, ['tester']]),
            grp.struct_group(['.g-$ +3', 'x', 103, ['net+tester']]),
            grp.struct_group(['veryveryveryveryveryverylongname_thisnot',
                'x', 104, ['tester']]),
        ])

    result = expand_user({'global': {'user': value}})
    assert result == expect
Ejemplo n.º 2
0
def test_expand_user_non_posix():
    longname  = '[email protected]'
    shortname = longname[:32]
    posixname = 'This_is-not_a-posix-username.It-'

    struct = pwd.struct_passwd(
        [longname, 'x', 1234, 1000, 'Test User', '/home/tester', '/bin/sh'])
    flexmock(pwd) \
        .should_receive('getpwnam') \
        .and_return(struct)
    flexmock(grp) \
        .should_receive('getgrnam') \
        .and_return(grp.struct_group(['gx', 'x', 100, []]))
    flexmock(grp) \
        .should_receive('getgrall') \
        .and_return([
            grp.struct_group(['g1', 'x', 101, [longname]]),
            grp.struct_group(['g2', 'x', 102, [shortname]]),
            grp.struct_group(['g3', 'x', 103, [posixname]]),
        ])

    result = expand_user({'global': {'user': '******' + longname}})
    expect = dict(
        name=posixname,
        uid=1234,
        system=False,
        sudo=False,
        comment=longname,
        groups=[{'name': 'gx', 'gid': 100},
                {'name': 'g1', 'gid': 101}])
    assert result == expect
Ejemplo n.º 3
0
def test_expand_user_no_such_user():
    # user does not exist on the system
    flexmock(pwd).should_receive('getpwnam').and_raise(KeyError)

    result = expand_user({'global': {'user': '******'}})

    expect = dict(name='tester', uid=None, system=False, groups=[], sudo=False)
    assert result == expect
Ejemplo n.º 4
0
def test_expand_user_invalid():
    with pytest.raises(ValueError):
        expand_user({'global': {'user': '******'}})