public void WhenCreateMacOsOsascriptSudoProcessStartInfoWithoutWorkingDirectoryThenArgumentsWillElevateCommand()
        {
            var prompt           = "HstWB Imager";
            var command          = "/home/hst/hstwb-imager";
            var arguments        = "--worker";
            var workingDirectory = string.Empty;
            var processStartInfo =
                ElevateHelper.CreateMacOsOsascriptSudoProcessStartInfo(prompt, command, arguments, workingDirectory);

            var script        = $"echo '{prompt}'; sudo bash -c '{command} {arguments} >/dev/null &'";
            var osaScriptArgs = new[]
            {
                "-e \"tell application \\\"Terminal\\\"\"",
                "-e \"activate\"",
                $"-e \"set tabId to do script \\\"{script}\\\"\"",
                "-e \"set windowId to the id of window 1 where its tab 1 = tabId\"",
                "-e \"repeat\"",
                "-e \"delay 0.1\"",
                "-e \"if not busy of tabId then exit repeat\"",
                "-e \"end repeat\"",
                "-e \"close window id windowId\"",
                "-e \"end tell\""
            };

            Assert.Equal("/usr/bin/osascript", processStartInfo.FileName);
            Assert.Equal(string.Empty, processStartInfo.WorkingDirectory);
            Assert.Equal(
                string.Join(" ", osaScriptArgs),
                processStartInfo.Arguments);
            Assert.Equal(string.Empty, processStartInfo.Verb);
        }
        public void WhenCreateWindowsRunasProcessStartInfoThenArgumentsWillElevateCommand()
        {
            var command          = "hstwb-imager";
            var arguments        = string.Empty;
            var workingDirectory = @"c:\program files\hstwb-installer";
            var processStartInfo =
                ElevateHelper.CreateWindowsRunasProcessStartInfo(command, arguments, workingDirectory);

            Assert.Equal(command, processStartInfo.FileName);
            Assert.Equal(workingDirectory, processStartInfo.WorkingDirectory);
            Assert.Equal(arguments, processStartInfo.Arguments);
            Assert.Equal("runas", processStartInfo.Verb);
        }
        public void WhenCreateMacOsOsascriptProcessStartInfoWithoutWorkingDirectoryThenArgumentsWillElevateCommand()
        {
            var prompt           = "HstWB Imager";
            var command          = "/home/hst/hstwb-imager";
            var arguments        = "--worker";
            var workingDirectory = string.Empty;
            var processStartInfo =
                ElevateHelper.CreateMacOsOsascriptProcessStartInfo(prompt, command, arguments, workingDirectory);

            Assert.Equal("/usr/bin/osascript", processStartInfo.FileName);
            Assert.Equal(string.Empty, processStartInfo.WorkingDirectory);
            Assert.Equal(
                $"-e 'do shell script \"sudo \\\"{command}\\\" {arguments}\" with prompt \"{prompt}\" with administrator privileges'",
                processStartInfo.Arguments);
            Assert.Equal(string.Empty, processStartInfo.Verb);
        }
        public void WhenCreateLinuxPkExecProcessStartInfoThenArgumentsWillElevateCommand()
        {
            var command          = "hstwb-imager";
            var arguments        = "--worker";
            var workingDirectory =
                "/home/hst";
            var processStartInfo =
                ElevateHelper.CreateLinuxPkExecProcessStartInfo(command, arguments, workingDirectory);

            Assert.Equal("/usr/bin/pkexec", processStartInfo.FileName);
            Assert.Equal(workingDirectory, processStartInfo.WorkingDirectory);
            Assert.Equal(
                $"bash -c \"./{command} {arguments}\"",
                processStartInfo.Arguments);
            Assert.Equal(string.Empty, processStartInfo.Verb);
        }