// Copyright IBM Corp. 2014, 2026 // SPDX-License-Identifier: BUSL-1.1 package ephemeral import ( "testing" "github.com/google/go-cmp/cmp" "github.com/hashicorp/terraform/internal/lang/marks" "github.com/zclconf/go-cty/cty" ) func TestEphemeralValuePaths(t *testing.T) { // This test is intentionally not a thorough wringing of all possible cases // because EphemeralValuePaths is really just a thing wrapper around a // more general function in package marks, and that function already has // its own tests. That also in turn wraps a more-general-again function in // upstream cty that also has its own tests. v := cty.ObjectVal(map[string]cty.Value{ "unmarked": cty.StringVal("unmarked"), "sensitive": cty.StringVal("sensitive").Mark(marks.Sensitive), "ephemeral": cty.StringVal("ephemeral").Mark(marks.Ephemeral), "both": cty.StringVal("both").Mark(marks.Ephemeral).Mark(marks.Sensitive), "nested": cty.ListVal([]cty.Value{ cty.StringVal("unmarked"), cty.StringVal("sensitive").Mark(marks.Sensitive), cty.StringVal("ephemeral").Mark(marks.Ephemeral), cty.StringVal("both").Mark(marks.Ephemeral).Mark(marks.Sensitive), }), }) got := cty.NewPathSet(EphemeralValuePaths(v)...) want := cty.NewPathSet( cty.GetAttrPath("ephemeral"), cty.GetAttrPath("both"), cty.GetAttrPath("nested").IndexInt(2), cty.GetAttrPath("nested").IndexInt(3), ) if diff := cmp.Diff(want, got); diff != "" { t.Errorf("wrong result\n%s", diff) } }