@@ -791,3 +791,70 @@ func TestAddRedactionMarkers(t *testing.T) {
791791 })
792792 }
793793}
794+
795+ func TestRedactSSLKeyInInputs (t * testing.T ) {
796+ inputYaml := []byte (`inputs:
797+ - ssl:
798+ certificate: cert1
799+ key: key1
800+ nested:
801+ ssl:
802+ certificate: cert2
803+ key: key2
804+ slice:
805+ - ssl:
806+ certificate: cert3
807+ key: key3` )
808+
809+ var unmarshalled map [string ]any
810+ err := yaml .Unmarshal (inputYaml , & unmarshalled )
811+ require .NoError (t , err )
812+
813+ var errOut bytes.Buffer
814+ redacted := Redact (unmarshalled , & errOut )
815+ assert .Equalf (t , 0 , errOut .Len (), "Unexpected errors written when redacting secrets: %s" , errOut .String ())
816+ require .NotNil (t , redacted )
817+
818+ require .Contains (t , redacted , "inputs" )
819+ inputs , ok := redacted ["inputs" ].([]any )
820+ require .Truef (t , ok , "expected inputs to be slice, detected: %T" , redacted ["inputs" ])
821+ require .Len (t , inputs , 1 )
822+ input , ok := inputs [0 ].(map [string ]any )
823+ require .True (t , ok , "expected input to be object, detected: %T" , inputs [0 ])
824+
825+ // check top level ssl
826+ require .Contains (t , input , "ssl" )
827+ top , ok := input ["ssl" ].(map [string ]any )
828+ require .True (t , ok , "expected type to be object, detected: %T" , input ["ssl" ])
829+ require .Contains (t , top , "certificate" )
830+ assert .Equal (t , REDACTED , top ["certificate" ])
831+ require .Contains (t , top , "key" )
832+ assert .Equal (t , REDACTED , top ["key" ])
833+
834+ // check nested object
835+ require .Contains (t , input , "nested" )
836+ nested , ok := input ["nested" ].(map [string ]any )
837+ require .True (t , ok , "expected type to be object, detected: %T" , input ["nested" ])
838+ require .Contains (t , nested , "ssl" )
839+ nestedSSL , ok := nested ["ssl" ].(map [string ]any )
840+ require .True (t , ok , "expected type to be object, detected: %T" , nested ["ssl" ])
841+ require .Contains (t , nestedSSL , "certificate" )
842+ assert .Equal (t , REDACTED , nestedSSL ["certificate" ])
843+ require .Contains (t , nestedSSL , "key" )
844+ assert .Equal (t , REDACTED , nestedSSL ["key" ])
845+
846+ // check nested slice
847+ require .Contains (t , input , "slice" )
848+ slice , ok := input ["slice" ].([]any )
849+ require .True (t , ok , "expected type to be slice, detected: %T" , input ["slice" ])
850+ require .Len (t , slice , 1 )
851+ elem , ok := slice [0 ].(map [string ]any )
852+ require .True (t , ok , "expected type to be object, detected: %T" , slice [0 ])
853+ require .Contains (t , elem , "ssl" )
854+ sliceSSL , ok := elem ["ssl" ].(map [string ]any )
855+ require .True (t , ok , "expected type to be object, detected: %T" , elem ["ssl" ])
856+ require .Contains (t , sliceSSL , "certificate" )
857+ assert .Equal (t , REDACTED , sliceSSL ["certificate" ])
858+ require .Contains (t , sliceSSL , "key" )
859+ assert .Equal (t , REDACTED , sliceSSL ["key" ])
860+ }
0 commit comments