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  }