From f53da82febfa1eb5f48a0a49336f06bd535fa6a7 Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Tue, 15 Sep 2026 00:38:55 +0000 Subject: [PATCH] Test shared pipeline access across users --- tests/integration | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/integration b/tests/integration index 8ed73cb..a1a8e45 100755 --- a/tests/integration +++ b/tests/integration @@ -18,6 +18,10 @@ prompt_library_repository=$(cd "$repository_root/../assets/narratio-prompts" && prompt_library_root=/usr/local/share/narratio/prompt-library campaigns_revision=$(git -C "$campaigns_repository" rev-parse HEAD) prompt_library_revision=$(git -C "$prompt_library_repository" rev-parse HEAD) +operator_user="dnd_f0009_${$}" +shared_fixture_root="/var/lib/narratio/${operator_user}" +service_fixture_file="$shared_fixture_root/service.txt" +operator_fixture_file="$shared_fixture_root/operator.txt" baseline_args=( -e 'dnd_pipeline_whisperx_transcribe_url=http://127.0.0.1:8000/transcribe' -e "dnd_pipeline_campaigns_repository_url=file://$campaigns_repository" @@ -30,6 +34,8 @@ baseline_args=( cleanup() { exit_status=$? trap - EXIT + /usr/bin/sudo /bin/rm -rf -- "$shared_fixture_root" || true + /usr/bin/sudo /usr/sbin/userdel --remove "$operator_user" 2>/dev/null || true "$ansible_playbook" -i "$inventory" "${baseline_args[@]}" "$converge" >/dev/null 2>&1 || true rm -rf -- "$test_tmp" exit "$exit_status" @@ -84,6 +90,19 @@ run_converge "$baseline_log" "${baseline_args[@]}" /usr/bin/sudo -u narratio /usr/local/bin/narratio config diff default testing \ --config /usr/local/etc/narratio/pipeline.yml --campaign centaurs | \ awk -F '\t' '$1 != "changed" || $2 !~ /\.profile_id$/ { invalid = 1 } END { exit invalid || NR == 0 }' +/usr/bin/sudo /usr/sbin/useradd --create-home --groups narratio \ + --shell /usr/sbin/nologin "$operator_user" +/usr/bin/sudo -u "$operator_user" /usr/local/bin/narratio config validate \ + --config /usr/local/etc/narratio/pipeline.yml --campaign centaurs +/usr/bin/sudo -u nobody /bin/cat /usr/local/etc/narratio/pipeline.yml >/dev/null +/usr/bin/sudo -u narratio /bin/sh -c \ + "umask 077; mkdir '$shared_fixture_root'; printf '%s\\n' service-created > '$service_fixture_file'" +/usr/bin/sudo -u "$operator_user" /bin/sh -c \ + "grep -Fx service-created '$service_fixture_file'; printf '%s\\n' operator-appended >> '$service_fixture_file'" +/usr/bin/sudo -u narratio /bin/grep -Fx operator-appended "$service_fixture_file" +/usr/bin/sudo -u "$operator_user" /bin/sh -c \ + "umask 077; printf '%s\\n' operator-created > '$operator_fixture_file'" +/usr/bin/sudo -u narratio /bin/grep -Fx operator-created "$operator_fixture_file" session_recap_prompt_json=$(/usr/local/bin/scriptorium inspect prompt \ --config /usr/local/etc/scriptorium/config.yml \ --prompt dnd.session_recap --prompt-version 2.0.0 --format json)