2021-09-10 13:14:56 +02:00
|
|
|
import os
|
2021-09-14 10:40:57 +02:00
|
|
|
import shutil
|
2021-09-10 13:14:56 +02:00
|
|
|
import subprocess
|
2021-09-15 07:38:37 +02:00
|
|
|
from path import Path
|
|
|
|
from mamba import description, context, it, before, after
|
2021-09-10 13:14:56 +02:00
|
|
|
from expects import expect, equal
|
|
|
|
|
2021-09-15 07:46:49 +02:00
|
|
|
vncserver_cmd = 'vncserver :1 -cert /etc/ssl/certs/ssl-cert-snakeoil.pem -key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24 -interface 0.0.0.0 -httpd /usr/share/kasmvnc/www -depth 24 -geometry 1280x1050'
|
|
|
|
|
2021-09-14 09:27:53 +02:00
|
|
|
|
2021-09-14 10:40:57 +02:00
|
|
|
def clean_env():
|
|
|
|
home_dir = os.environ['HOME']
|
|
|
|
password_file = os.path.join(home_dir, ".kasmpasswd")
|
2021-09-15 07:38:37 +02:00
|
|
|
Path(password_file).remove_p()
|
2021-09-14 10:40:57 +02:00
|
|
|
|
|
|
|
vnc_dir = os.path.join(home_dir, ".vnc")
|
2021-09-15 07:38:37 +02:00
|
|
|
Path(vnc_dir).rmtree(ignore_errors=True)
|
2021-09-14 10:40:57 +02:00
|
|
|
|
|
|
|
|
2021-09-14 10:12:27 +02:00
|
|
|
def run_cmd(cmd, **kwargs):
|
2021-09-14 09:27:53 +02:00
|
|
|
completed_process = subprocess.run(cmd, shell=True, text=True,
|
|
|
|
capture_output=True,
|
2021-09-14 10:12:27 +02:00
|
|
|
executable='/bin/bash', **kwargs)
|
2021-09-14 09:27:53 +02:00
|
|
|
if completed_process.returncode != 0:
|
|
|
|
print(completed_process.stdout)
|
|
|
|
print(completed_process.stderr)
|
|
|
|
|
|
|
|
return completed_process
|
|
|
|
|
|
|
|
|
2021-09-14 10:19:06 +02:00
|
|
|
def add_kasmvnc_user_docker():
|
|
|
|
completed_process = run_cmd('echo -e "password\\npassword\\n" | vncpasswd -u docker')
|
|
|
|
expect(completed_process.returncode).to(equal(0))
|
|
|
|
|
|
|
|
|
2021-09-14 10:20:55 +02:00
|
|
|
def kill_xvnc():
|
|
|
|
run_cmd('vncserver -kill :1')
|
|
|
|
|
|
|
|
|
2021-09-15 08:16:27 +02:00
|
|
|
def select_de(de_name):
|
|
|
|
try:
|
|
|
|
cmd = f'{vncserver_cmd} -select-de {de_name}'
|
|
|
|
completed_process = run_cmd(cmd)
|
|
|
|
expect(completed_process.returncode).to(equal(0))
|
|
|
|
finally:
|
|
|
|
kill_xvnc()
|
|
|
|
|
|
|
|
|
2021-09-14 10:24:37 +02:00
|
|
|
def check_de_was_setup_to_run(de_name):
|
|
|
|
completed_process = run_cmd(f'grep -q {de_name} ~/.vnc/xstartup')
|
|
|
|
expect(completed_process.returncode).to(equal(0))
|
|
|
|
|
|
|
|
|
2021-09-10 13:14:56 +02:00
|
|
|
with description('vncserver') as self:
|
2021-09-14 10:40:57 +02:00
|
|
|
with before.each:
|
|
|
|
clean_env()
|
2021-09-15 07:39:35 +02:00
|
|
|
with after.each:
|
|
|
|
kill_xvnc()
|
2021-09-14 10:40:57 +02:00
|
|
|
|
2021-09-15 07:55:48 +02:00
|
|
|
with it('asks user to select a DE on the first run'):
|
|
|
|
add_kasmvnc_user_docker()
|
|
|
|
|
2021-09-15 08:15:42 +02:00
|
|
|
choose_cinnamon = "1\n"
|
|
|
|
completed_process = run_cmd(vncserver_cmd, input=choose_cinnamon)
|
2021-09-15 07:55:48 +02:00
|
|
|
expect(completed_process.returncode).to(equal(0))
|
|
|
|
|
|
|
|
check_de_was_setup_to_run('cinnamon')
|
|
|
|
|
2021-09-10 13:35:47 +02:00
|
|
|
with it('selects passed DE with -s'):
|
2021-09-14 10:19:06 +02:00
|
|
|
add_kasmvnc_user_docker()
|
2021-09-10 13:14:56 +02:00
|
|
|
|
2021-09-15 07:46:49 +02:00
|
|
|
cmd = f'{vncserver_cmd} -select-de mate'
|
2021-09-15 07:39:35 +02:00
|
|
|
completed_process = run_cmd(cmd)
|
|
|
|
expect(completed_process.returncode).to(equal(0))
|
2021-09-10 13:35:47 +02:00
|
|
|
|
2021-09-15 07:39:35 +02:00
|
|
|
check_de_was_setup_to_run('mate')
|
2021-09-14 10:16:44 +02:00
|
|
|
|
|
|
|
with it('asks to select a DE, when ran with -select-de'):
|
2021-09-14 10:19:06 +02:00
|
|
|
add_kasmvnc_user_docker()
|
2021-09-14 10:16:44 +02:00
|
|
|
|
2021-09-15 07:46:49 +02:00
|
|
|
cmd = f'{vncserver_cmd} -select-de'
|
2021-09-15 08:15:42 +02:00
|
|
|
choose_cinnamon_and_answer_yes = "1\ny\n"
|
|
|
|
completed_process = run_cmd(cmd, input=choose_cinnamon_and_answer_yes)
|
2021-09-15 07:39:35 +02:00
|
|
|
expect(completed_process.returncode).to(equal(0))
|
2021-09-14 10:16:44 +02:00
|
|
|
|
2021-09-15 07:39:35 +02:00
|
|
|
check_de_was_setup_to_run('cinnamon')
|