github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/terraform/terraform_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package terraform 5 6 import ( 7 "github.com/stretchr/testify/assert" 8 "testing" 9 ) 10 11 func TestReadOutputs(t *testing.T) { 12 terraformOutputsJson := `{ 13 "boolean": { 14 "sensitive": false, 15 "type": "bool", 16 "value": true 17 }, 18 "list_any": { 19 "sensitive": false, 20 "type": [ 21 "tuple", 22 [ 23 "bool", 24 "string", 25 "number", 26 [ 27 "tuple", 28 [] 29 ] 30 ] 31 ], 32 "value": [ 33 true, 34 "2", 35 3, 36 [] 37 ] 38 }, 39 "list_numbers": { 40 "sensitive": false, 41 "type": [ 42 "tuple", 43 [ 44 "number", 45 "number", 46 "number" 47 ] 48 ], 49 "value": [ 50 1, 51 2, 52 3 53 ] 54 }, 55 "list_string": { 56 "sensitive": false, 57 "type": [ 58 "tuple", 59 [ 60 "string", 61 "string", 62 "string" 63 ] 64 ], 65 "value": [ 66 "1", 67 "2", 68 "3" 69 ] 70 }, 71 "map": { 72 "sensitive": false, 73 "type": [ 74 "object", 75 { 76 "ATTR1": "string", 77 "ATTR2": [ 78 "object", 79 { 80 "ATTR3": [ 81 "tuple", 82 [] 83 ] 84 } 85 ] 86 } 87 ], 88 "value": { 89 "ATTR1": "", 90 "ATTR2": { 91 "ATTR3": [] 92 } 93 } 94 }, 95 "secret": { 96 "sensitive": true, 97 "type": "string", 98 "value": "this-could-be-a-password" 99 }, 100 "string": { 101 "sensitive": false, 102 "type": "string", 103 "value": "string" 104 }, 105 "number": { 106 "sensitive": false, 107 "type": "number", 108 "value": 1 109 } 110 } 111 ` 112 outputs, err := ReadOutputs(terraformOutputsJson) 113 assert.NoError(t, err) 114 115 assert.Equal(t, 8, len(outputs)) 116 117 assert.Equal(t, true, outputs["boolean"]) 118 assert.Equal(t, "string", outputs["string"]) 119 assert.Equal(t, float64(1), outputs["number"]) 120 }