kopia lustrzana https://github.com/jupyterhub/repo2docker
57 wiersze
1.6 KiB
Python
57 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
|