Files
firezone/scripts/tests/smoke-test-gui-linux.sh
Reactor Scram 52cde610e1 feat(linux): make deep link auth work (#4102)
Right now it only works on my dev VM, not on my test VMs, due to #4053
and #4103, but it passes tests and should be safe to merge.

There's one doc fix and one script fix which are unrelated and could be
their own PRs, but they'd be tiny, so I left them in here.

Ref #4106 and #3713 for the plan to fix all this by splitting the tunnel
process off so that the GUI runs as a normal user.
2024-03-13 18:11:04 +00:00

76 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
BUNDLE_ID="dev.firezone.client"
DEVICE_ID_PATH="/var/lib/$BUNDLE_ID/config/firezone-id.json"
LOGS_PATH="$HOME/.cache/$BUNDLE_ID/data/logs"
DUMP_PATH="$LOGS_PATH/last_crash.dmp"
SETTINGS_PATH="$HOME/.config/$BUNDLE_ID/config/advanced_settings.json"
export FIREZONE_DISABLE_SYSTRAY=true
PACKAGE=firezone-gui-client
export RUST_LOG=firezone_gui_client=debug,warn
export WEBKIT_DISABLE_COMPOSITING_MODE=1
cargo build -p "$PACKAGE"
function smoke_test() {
# Make sure the files we want to check don't exist on the system yet
sudo stat "$LOGS_PATH" && exit 1
sudo stat "$SETTINGS_PATH" && exit 1
sudo stat "$DEVICE_ID_PATH" && exit 1
# Run the smoke test normally
sudo --preserve-env xvfb-run --auto-servernum ../target/debug/"$PACKAGE" --no-deep-links smoke-test
# Note the device ID
DEVICE_ID_1=$(cat "$DEVICE_ID_PATH")
# Make sure the files were written in the right paths
# TODO: Inject some bogus sign-in sequence to test the actor_name file
# https://stackoverflow.com/questions/41321092
sudo bash -c "stat \"${LOGS_PATH}/\"connlib*log"
sudo stat "$SETTINGS_PATH"
sudo stat "$DEVICE_ID_PATH"
# Run the test again and make sure the device ID is not changed
sudo --preserve-env xvfb-run --auto-servernum ../target/debug/"$PACKAGE" --no-deep-links smoke-test
DEVICE_ID_2=$(cat "$DEVICE_ID_PATH")
if [ "$DEVICE_ID_1" != "$DEVICE_ID_2" ]
then
echo "The device ID should not change if the file is intact between runs"
exit 1
fi
# Clean up the files but not the folders
sudo rm -rf "$LOGS_PATH"
sudo rm "$SETTINGS_PATH"
sudo rm "$DEVICE_ID_PATH"
}
function crash_test() {
# Delete the crash file if present
sudo rm -f "$DUMP_PATH"
# Fail if it returns success, this is supposed to crash
sudo --preserve-env xvfb-run --auto-servernum ../target/debug/"$PACKAGE" --crash --no-deep-links && exit 1
# Fail if the crash file wasn't written
sudo stat "$DUMP_PATH"
# Clean up
sudo rm "$DUMP_PATH"
}
# Run the tests twice to make sure it's okay for the directories to stay intact
smoke_test
smoke_test
crash_test
crash_test
# I'm not sure if the last command is handled specially, so explicitly exit with 0
exit 0