mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2026-08-12 22:15:10 -05:00
Add user and group wrappers
New classes for user and group names provide a convenient way to access the uid and primary gid of a user / gid of a group. The classes also provide chown() and chgrp() methods to simplify common operations. The wrappers are subclasses of builtin str type and behave like ordinary strings with additional features. The pwd and grp structs are retrieved once and then cached. Signed-off-by: Christian Heimes <cheimes@redhat.com> Reviewed-By: Rob Crittenden <rcritten@redhat.com>
This commit is contained in:
committed by
Rob Crittenden
parent
99a40cbbe9
commit
72fb4e60c8
@@ -0,0 +1,53 @@
|
||||
#
|
||||
# Copyright (C) 2020 FreeIPA Contributors see COPYING for license
|
||||
#
|
||||
import pytest
|
||||
|
||||
from ipaplatform.base.constants import User, Group
|
||||
|
||||
|
||||
def test_user_root():
|
||||
user = User("root")
|
||||
assert user == "root"
|
||||
assert str(user) == "root"
|
||||
assert repr(user) == '<User "root">'
|
||||
assert user.uid == 0
|
||||
assert user.pgid == 0
|
||||
assert user.entity.pw_uid == 0
|
||||
|
||||
|
||||
def test_user_invalid():
|
||||
invalid = User("invalid")
|
||||
with pytest.raises(ValueError) as e:
|
||||
assert invalid.uid
|
||||
assert str(e.value) == "user 'invalid' not found"
|
||||
|
||||
|
||||
def test_group():
|
||||
group = Group("root")
|
||||
assert group == "root"
|
||||
assert str(group) == "root"
|
||||
assert repr(group) == '<Group "root">'
|
||||
assert group.gid == 0
|
||||
assert group.entity.gr_gid == 0
|
||||
|
||||
|
||||
def test_group_invalid():
|
||||
invalid = Group("invalid")
|
||||
with pytest.raises(ValueError) as e:
|
||||
assert invalid.gid
|
||||
assert str(e.value) == "group 'invalid' not found"
|
||||
|
||||
|
||||
@pytest.mark.skip_if_platform("debian", reason="test is Fedora specific")
|
||||
@pytest.mark.skip_if_platform("suse", reason="test is Fedora specific")
|
||||
def test_user_group_daemon():
|
||||
# daemon user / group are always defined
|
||||
user = User("daemon")
|
||||
assert user == "daemon"
|
||||
assert user.uid == 2
|
||||
assert user.pgid == 2
|
||||
|
||||
group = Group("daemon")
|
||||
assert group == "daemon"
|
||||
assert group.gid == 2
|
||||
@@ -24,7 +24,6 @@ Test the `ipapython/ipautil.py` module.
|
||||
from __future__ import absolute_import
|
||||
|
||||
import os
|
||||
import pwd
|
||||
import socket
|
||||
import sys
|
||||
import tempfile
|
||||
@@ -530,14 +529,13 @@ def test_run_runas():
|
||||
The test is using 'ipaapi' user as it is configured when
|
||||
ipa-server-common package is installed.
|
||||
"""
|
||||
user = pwd.getpwnam(IPAAPI_USER)
|
||||
res = ipautil.run(['/usr/bin/id', '-u'], runas=IPAAPI_USER)
|
||||
assert res.returncode == 0
|
||||
assert res.raw_output == b'%d\n' % user.pw_uid
|
||||
assert res.raw_output == b'%d\n' % IPAAPI_USER.uid
|
||||
|
||||
res = ipautil.run(['/usr/bin/id', '-g'], runas=IPAAPI_USER)
|
||||
assert res.returncode == 0
|
||||
assert res.raw_output == b'%d\n' % user.pw_gid
|
||||
assert res.raw_output == b'%d\n' % IPAAPI_USER.pgid
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
|
||||
Reference in New Issue
Block a user