@@ -10,8 +10,6 @@ import (
1010 "strings"
1111 "testing"
1212
13- tfjson "github.com/hashicorp/terraform-json"
14-
1513 "github.com/gruntwork-io/terratest/modules/files"
1614 "github.com/gruntwork-io/terratest/modules/logger"
1715 "github.com/gruntwork-io/terratest/modules/random"
@@ -229,28 +227,6 @@ func TestRunUpgradeVpcPattern(t *testing.T) {
229227 }
230228}
231229
232- // sanitizeResourceChanges sanitizes the sensitive data in a Terraform JSON Change and returns the sanitized JSON.
233- func sanitizeResourceChanges (change * tfjson.Change , mergedSensitive map [string ]interface {}) (string , error ) {
234- // Marshal the Change to JSON bytes
235- changesBytes , err := json .MarshalIndent (change , "" , " " )
236- if err != nil {
237- return "" , err
238- }
239- changesJson := string (changesBytes )
240-
241- // Perform sanitization of sensitive data
242- changesJson , err = common .SanitizeSensitiveData (changesJson , mergedSensitive )
243- return changesJson , err
244- }
245-
246- // handleSanitizationError logs an error message if a sanitization error occurs.
247- func handleSanitizationError (err error , location string , options * testhelper.TestOptions ) {
248- if err != nil {
249- errorMessage := fmt .Sprintf ("Error sanitizing sensitive data in %s" , location )
250- logger .Log (options .Testing , errorMessage )
251- }
252- }
253-
254230func TestRunOverride (t * testing.T ) {
255231 t .Parallel ()
256232
@@ -273,108 +249,7 @@ func TestRunOverride(t *testing.T) {
273249
274250 if assert .Nil (t , planErr , "This should not have errored" ) &&
275251 assert .NotNil (t , planStruct , "Expected some output" ) {
276-
277- // defines if at least one resource changed (destroy, update, etc)
278- resourcesChanged := false
279- for _ , resource := range planStruct .ResourceChangesMap {
280- // get JSON string of full changes for the logs
281- changesBytes , changesErr := json .MarshalIndent (resource .Change , "" , " " )
282- // if it errors in the marshall step, just put a placeholder and move on, not important
283- changesJson := "--UNAVAILABLE--"
284- if changesErr == nil {
285- changesJson = string (changesBytes )
286- }
287-
288- var resourceDetails string
289-
290- // Treat all keys in the BeforeSensitive and AfterSensitive maps as sensitive
291- // Assuming BeforeSensitive and AfterSensitive are of type interface{}
292- beforeSensitive , beforeSensitiveOK := resource .Change .BeforeSensitive .(map [string ]interface {})
293- afterSensitive , afterSensitiveOK := resource .Change .AfterSensitive .(map [string ]interface {})
294-
295- // Create the mergedSensitive map
296- mergedSensitive := make (map [string ]interface {})
297-
298- // Check if BeforeSensitive is of the expected type
299- if beforeSensitiveOK {
300- // Copy the keys and values from BeforeSensitive to the mergedSensitive map.
301- for key , value := range beforeSensitive {
302- mergedSensitive [key ] = value
303- }
304- }
305-
306- // Check if AfterSensitive is of the expected type
307- if afterSensitiveOK {
308- // Copy the keys and values from AfterSensitive to the mergedSensitive map.
309- for key , value := range afterSensitive {
310- mergedSensitive [key ] = value
311- }
312- }
313-
314- // Perform sanitization
315- changesJson , err := sanitizeResourceChanges (resource .Change , mergedSensitive )
316- if err != nil {
317- changesJson = "Error sanitizing sensitive data"
318- logger .Log (options .Testing , changesJson )
319- }
320- formatChangesJson , err := common .FormatJsonStringPretty (changesJson )
321-
322- var formatChangesJsonString string
323- if err != nil {
324- logger .Log (options .Testing , "Error formatting JSON, use unformatted" )
325- formatChangesJsonString = changesJson
326- } else {
327- formatChangesJsonString = string (formatChangesJson )
328- }
329-
330- diff , diffErr := common .GetBeforeAfterDiff (changesJson )
331-
332- if diffErr != nil {
333- diff = fmt .Sprintf ("Error getting diff: %s" , diffErr )
334- } else {
335- // Split the changesJson into "Before" and "After" parts
336- beforeAfter := strings .Split (diff , "After: " )
337-
338- // Perform sanitization on "After" part
339- var after string
340- if len (beforeAfter ) > 1 {
341- after , err = common .SanitizeSensitiveData (beforeAfter [1 ], mergedSensitive )
342- handleSanitizationError (err , "after diff" , options )
343- } else {
344- after = fmt .Sprintf ("Could not parse after from diff" ) // dont print incase diff contains sensitive values
345- }
346-
347- // Perform sanitization on "Before" part
348- var before string
349- if len (beforeAfter ) > 0 {
350- before , err = common .SanitizeSensitiveData (strings .TrimPrefix (beforeAfter [0 ], "Before: " ), mergedSensitive )
351- handleSanitizationError (err , "before diff" , options )
352- } else {
353- before = fmt .Sprintf ("Could not parse before from diff" ) // dont print incase diff contains sensitive values
354- }
355-
356- // Reassemble the sanitized diff string
357- diff = " Before: \n \t " + before + "\n After: \n \t " + after
358- }
359- resourceDetails = fmt .Sprintf ("\n Name: %s\n Address: %s\n Actions: %s\n DIFF:\n %s\n \n Change Detail:\n %s" , resource .Name , resource .Address , resource .Change .Actions , diff , formatChangesJsonString )
360-
361- // build error message
362- errorMessage := fmt .Sprintf ("Resource(s) identified to be destroyed %s" , resourceDetails )
363-
364- // check if current resource is changed
365- noResourceChange := resource .Change .Actions .NoOp () || resource .Change .Actions .Read ()
366- assert .True (options .Testing , noResourceChange , errorMessage )
367-
368- // if at least one resource is changed, then save that information
369- if ! resourcesChanged && ! noResourceChange {
370- resourcesChanged = true
371- }
372- }
373-
374- // Run plan again to output the nice human-readable plan if there was a change
375- if resourcesChanged {
376- terraform .Plan (options .Testing , options .TerraformOptions )
377- }
252+ options .CheckConsistency (planStruct )
378253 }
379254 }
380255 options .TestTearDown ()
0 commit comments