You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
import os
 | 
						|
import stat
 | 
						|
import tempfile
 | 
						|
from mamba import description, context, fcontext, it, fit, before, after
 | 
						|
from expects import expect, equal, contain, match
 | 
						|
 | 
						|
from helper.spec_helper import start_xvnc, kill_xvnc, run_cmd, clean_env, \
 | 
						|
    add_kasmvnc_user_docker, clean_kasm_users, start_xvnc_pexpect, \
 | 
						|
    write_config, config_filename
 | 
						|
 | 
						|
 | 
						|
def run_vncserver():
 | 
						|
    return start_xvnc(f'-config {config_filename}')
 | 
						|
 | 
						|
 | 
						|
def temp_file_name():
 | 
						|
    return f'/tmp/vncserver.{next(tempfile._get_candidate_names())}'
 | 
						|
 | 
						|
 | 
						|
with description('vncserver') as self:
 | 
						|
    with before.each:
 | 
						|
        clean_env()
 | 
						|
    with after.each:
 | 
						|
        kill_xvnc()
 | 
						|
 | 
						|
    with context("SSL certs"):
 | 
						|
        with before.each:
 | 
						|
            add_kasmvnc_user_docker()
 | 
						|
 | 
						|
        with it("complains if SSL certs don't exist"):
 | 
						|
            non_existent_file_name = temp_file_name()
 | 
						|
 | 
						|
            write_config(f'''
 | 
						|
            network:
 | 
						|
                ssl:
 | 
						|
                    pem_certificate: {non_existent_file_name}
 | 
						|
            ''')
 | 
						|
            completed_process = run_vncserver()
 | 
						|
            expect(completed_process.returncode).to(equal(1))
 | 
						|
            expect(completed_process.stderr).to(
 | 
						|
                match(r'certificate file doesn\'t exist'))
 | 
						|
 | 
						|
        with it("complains if SSL cert not available"):
 | 
						|
            cert_file_name = temp_file_name()
 | 
						|
            with open(cert_file_name, 'w') as f:
 | 
						|
                f.write('test')
 | 
						|
            os.chmod(cert_file_name, stat.S_IXUSR)
 | 
						|
 | 
						|
            write_config(f'''
 | 
						|
            network:
 | 
						|
                ssl:
 | 
						|
                    pem_certificate: {cert_file_name}
 | 
						|
            ''')
 | 
						|
            completed_process = run_vncserver()
 | 
						|
            expect(completed_process.returncode).to(equal(1))
 | 
						|
            expect(completed_process.stderr).to(
 | 
						|
                match(r'certificate isn\'t readable'))
 | 
						|
            expect(completed_process.stderr).to(
 | 
						|
                match(r'addgroup \$USER'))
 |