From f5c4f16d42b36182bd569b52e081a078f40ffcd8 Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 01:54:40 +0000 Subject: [PATCH] feat(ansible): add b64encode filter support Co-authored-by: Virgil --- executor.go | 5 +++++ executor_extra_test.go | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/executor.go b/executor.go index d82f83b..cfd60c2 100644 --- a/executor.go +++ b/executor.go @@ -2680,6 +2680,11 @@ func (e *Executor) applyFilter(value, filter string) string { return value } + // Handle b64encode + if filter == "b64encode" { + return base64.StdEncoding.EncodeToString([]byte(value)) + } + return value } diff --git a/executor_extra_test.go b/executor_extra_test.go index 3b2e5b9..13fc11e 100644 --- a/executor_extra_test.go +++ b/executor_extra_test.go @@ -1049,6 +1049,11 @@ func TestExecutorExtra_ApplyFilter_Good_B64Decode(t *testing.T) { assert.Equal(t, "hello", e.applyFilter("aGVsbG8=", "b64decode")) } +func TestExecutorExtra_ApplyFilter_Good_B64Encode(t *testing.T) { + e := NewExecutor("/tmp") + assert.Equal(t, "aGVsbG8=", e.applyFilter("hello", "b64encode")) +} + func TestExecutorExtra_ApplyFilter_Good_UnknownFilter(t *testing.T) { e := NewExecutor("/tmp") assert.Equal(t, "value", e.applyFilter("value", "unknown_filter")) @@ -1076,3 +1081,11 @@ func TestExecutorExtra_ResolveExpr_Good_WithFilter(t *testing.T) { result := e.resolveExpr("raw_value | trim", "host1", nil) assert.Equal(t, "trimmed", result) } + +func TestExecutorExtra_ResolveExpr_Good_WithB64Encode(t *testing.T) { + e := NewExecutor("/tmp") + e.vars["raw_value"] = "hello" + + result := e.resolveExpr("raw_value | b64encode", "host1", nil) + assert.Equal(t, "aGVsbG8=", result) +}