repo2docker/tests/unit/test_users.py

56 wiersze
1.6 KiB
Python

"""
Test that User name and ID mapping works
"""
import os
import subprocess
import tempfile
import time
from getpass import getuser
from unittest import mock
from repo2docker import Repo2Docker
def test_automatic_username_deduction():
# check we pickup the right username
with mock.patch("os.environ") as mock_env:
expected = "someusername"
mock_env.get.return_value = expected
r2d = Repo2Docker()
assert r2d.user_name == expected
def test_user():
"""
Validate user id and name setting
"""
ts = str(time.time())
# FIXME: Use arbitrary login here, We need it now since we wanna put things to volume.
username = getuser()
userid = str(os.geteuid())
with tempfile.TemporaryDirectory() as tmpdir:
tmpdir = os.path.realpath(tmpdir)
subprocess.check_call(
[
"repo2docker",
f"--volume={tmpdir}:/home/{username}",
f"--user-id={userid}",
f"--user-name={username}",
tmpdir,
"--",
"/bin/bash",
"-c",
"id -u > id && pwd > pwd && whoami > name && echo -n $USER > env_user",
]
)
with open(os.path.join(tmpdir, "id")) as f:
assert f.read().strip() == userid
with open(os.path.join(tmpdir, "pwd")) as f:
assert f.read().strip() == f"/home/{username}"
with open(os.path.join(tmpdir, "name")) as f:
assert f.read().strip() == username
with open(os.path.join(tmpdir, "name")) as f:
assert f.read().strip() == username