github.com/iaas-resource-provision/iaas-rpc@v1.0.7-0.20211021023331-ed21f798c408/internal/configs/configschema/marks_test.go (about) 1 package configschema 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/zclconf/go-cty/cty" 8 ) 9 10 func TestBlockValueMarks(t *testing.T) { 11 schema := &Block{ 12 Attributes: map[string]*Attribute{ 13 "unsensitive": { 14 Type: cty.String, 15 Optional: true, 16 }, 17 "sensitive": { 18 Type: cty.String, 19 Sensitive: true, 20 }, 21 }, 22 23 BlockTypes: map[string]*NestedBlock{ 24 "list": { 25 Nesting: NestingList, 26 Block: Block{ 27 Attributes: map[string]*Attribute{ 28 "unsensitive": { 29 Type: cty.String, 30 Optional: true, 31 }, 32 "sensitive": { 33 Type: cty.String, 34 Sensitive: true, 35 }, 36 }, 37 }, 38 }, 39 }, 40 } 41 42 for _, tc := range []struct { 43 given cty.Value 44 expect cty.Value 45 }{ 46 { 47 cty.UnknownVal(schema.ImpliedType()), 48 cty.UnknownVal(schema.ImpliedType()), 49 }, 50 { 51 cty.NullVal(schema.ImpliedType()), 52 cty.NullVal(schema.ImpliedType()), 53 }, 54 { 55 cty.ObjectVal(map[string]cty.Value{ 56 "sensitive": cty.UnknownVal(cty.String), 57 "unsensitive": cty.UnknownVal(cty.String), 58 "list": cty.UnknownVal(schema.BlockTypes["list"].ImpliedType()), 59 }), 60 cty.ObjectVal(map[string]cty.Value{ 61 "sensitive": cty.UnknownVal(cty.String).Mark("sensitive"), 62 "unsensitive": cty.UnknownVal(cty.String), 63 "list": cty.UnknownVal(schema.BlockTypes["list"].ImpliedType()), 64 }), 65 }, 66 { 67 cty.ObjectVal(map[string]cty.Value{ 68 "sensitive": cty.NullVal(cty.String), 69 "unsensitive": cty.UnknownVal(cty.String), 70 "list": cty.ListVal([]cty.Value{ 71 cty.ObjectVal(map[string]cty.Value{ 72 "sensitive": cty.UnknownVal(cty.String), 73 "unsensitive": cty.UnknownVal(cty.String), 74 }), 75 cty.ObjectVal(map[string]cty.Value{ 76 "sensitive": cty.NullVal(cty.String), 77 "unsensitive": cty.NullVal(cty.String), 78 }), 79 }), 80 }), 81 cty.ObjectVal(map[string]cty.Value{ 82 "sensitive": cty.NullVal(cty.String).Mark("sensitive"), 83 "unsensitive": cty.UnknownVal(cty.String), 84 "list": cty.ListVal([]cty.Value{ 85 cty.ObjectVal(map[string]cty.Value{ 86 "sensitive": cty.UnknownVal(cty.String).Mark("sensitive"), 87 "unsensitive": cty.UnknownVal(cty.String), 88 }), 89 cty.ObjectVal(map[string]cty.Value{ 90 "sensitive": cty.NullVal(cty.String).Mark("sensitive"), 91 "unsensitive": cty.NullVal(cty.String), 92 }), 93 }), 94 }), 95 }, 96 } { 97 t.Run(fmt.Sprintf("%#v", tc.given), func(t *testing.T) { 98 got := tc.given.MarkWithPaths(schema.ValueMarks(tc.given, nil)) 99 if !got.RawEquals(tc.expect) { 100 t.Fatalf("\nexpected: %#v\ngot: %#v\n", tc.expect, got) 101 } 102 }) 103 } 104 }