2017-12-19 21:00:55 +00:00
|
|
|
"""
|
|
|
|
Test that User name and ID mapping works
|
|
|
|
"""
|
|
|
|
import os
|
|
|
|
import subprocess
|
|
|
|
import tempfile
|
|
|
|
import time
|
2019-09-08 09:54:22 +00:00
|
|
|
from getpass import getuser
|
2019-05-21 16:47:47 +00:00
|
|
|
from unittest import mock
|
|
|
|
|
|
|
|
from repo2docker import Repo2Docker
|
|
|
|
|
|
|
|
|
|
|
|
def test_automatic_username_deduction():
|
|
|
|
# check we pickup the right username
|
2019-05-31 09:10:17 +00:00
|
|
|
with mock.patch("os.environ") as mock_env:
|
|
|
|
expected = "someusername"
|
2019-05-21 16:47:47 +00:00
|
|
|
mock_env.get.return_value = expected
|
|
|
|
|
|
|
|
r2d = Repo2Docker()
|
|
|
|
assert r2d.user_name == expected
|
|
|
|
|
2017-12-19 21:00:55 +00:00
|
|
|
|
|
|
|
def test_user():
|
|
|
|
"""
|
|
|
|
Validate user id and name setting
|
|
|
|
"""
|
|
|
|
ts = str(time.time())
|
2017-12-20 00:36:37 +00:00
|
|
|
# FIXME: Use arbitrary login here, We need it now since we wanna put things to volume.
|
2019-09-08 09:54:22 +00:00
|
|
|
username = getuser()
|
2017-12-20 00:36:37 +00:00
|
|
|
userid = str(os.geteuid())
|
2017-12-19 21:00:55 +00:00
|
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
2018-12-17 10:05:25 +00:00
|
|
|
tmpdir = os.path.realpath(tmpdir)
|
2019-05-31 09:10:17 +00:00
|
|
|
subprocess.check_call(
|
|
|
|
[
|
|
|
|
"repo2docker",
|
|
|
|
"-v",
|
|
|
|
"{}:/home/{}".format(tmpdir, username),
|
|
|
|
"--user-id",
|
|
|
|
userid,
|
|
|
|
"--user-name",
|
|
|
|
username,
|
|
|
|
tmpdir,
|
|
|
|
"--",
|
|
|
|
"/bin/bash",
|
|
|
|
"-c",
|
|
|
|
"id -u > id && pwd > pwd && whoami > name && echo -n $USER > env_user".format(
|
|
|
|
ts
|
|
|
|
),
|
|
|
|
]
|
|
|
|
)
|
2017-12-19 21:00:55 +00:00
|
|
|
|
2019-05-31 09:10:17 +00:00
|
|
|
with open(os.path.join(tmpdir, "id")) as f:
|
2017-12-20 00:36:37 +00:00
|
|
|
assert f.read().strip() == userid
|
2019-05-31 09:10:17 +00:00
|
|
|
with open(os.path.join(tmpdir, "pwd")) as f:
|
|
|
|
assert f.read().strip() == "/home/{}".format(username)
|
|
|
|
with open(os.path.join(tmpdir, "name")) as f:
|
2017-12-19 21:27:22 +00:00
|
|
|
assert f.read().strip() == username
|
2019-05-31 09:10:17 +00:00
|
|
|
with open(os.path.join(tmpdir, "name")) as f:
|
2017-12-19 21:27:22 +00:00
|
|
|
assert f.read().strip() == username
|