@@ -484,6 +484,45 @@ func TestGenericReplacement_multiStringSpecificPathUrlEncoded(t *testing.T) {
484484 assertSuccessfulReplacement (& dummyResource , & expected , t )
485485}
486486
487+ func TestSecretReplacement_SpecificPathUrlEncoded_Base64Encoded (t * testing.T ) {
488+ // Test that the secret replacement function can find/replace placeholders that were url-encoded
489+ // and then base64-encoded.
490+ mv := helpers.MockVault {}
491+ mv .LoadData (map [string ]interface {}{
492+ "password" : "redis@123" ,
493+ "username" : "redis" ,
494+ })
495+
496+ dummyResource := Resource {
497+ TemplateData : map [string ]interface {}{
498+ "url" : `JTNDcGF0aCUzQWJsYWglMkZibGFoJTIzdXNlcm5hbWUlM0U6Ly86JTNDcGF0aCUzQWJsYWglMkZibGFoJTIzcGFzc3dvcmQlM0VAcmVkaXMtbWFzdGVyLmhhcmJvci5zdmMuY2x1c3Rlci5sb2NhbC8wP2lkbGVfdGltZW91dF9zZWNvbmRzPTMwCg==` ,
499+ },
500+ Data : map [string ]interface {}{
501+ "password" : "test" ,
502+ "username" : "test" ,
503+ },
504+ Backend : & mv ,
505+ Annotations : map [string ]string {
506+ (types .AVPPathAnnotation ): "" ,
507+ },
508+ }
509+
510+ replaceInner (& dummyResource , & dummyResource .TemplateData , secretReplacement )
511+
512+ expected := Resource {
513+ TemplateData : map [string ]interface {}{
514+ "url" : "cmVkaXM6Ly86cmVkaXMlNDAxMjNAcmVkaXMtbWFzdGVyLmhhcmJvci5zdmMuY2x1c3Rlci5sb2NhbC8wP2lkbGVfdGltZW91dF9zZWNvbmRzPTMwCg==" ,
515+ },
516+ Data : map [string ]interface {}{
517+ "password" : "test" ,
518+ "username" : "test" ,
519+ },
520+ replacementErrors : []error {},
521+ }
522+
523+ assertSuccessfulReplacement (& dummyResource , & expected , t )
524+ }
525+
487526func TestGenericReplacement_Base64 (t * testing.T ) {
488527 dummyResource := Resource {
489528 TemplateData : map [string ]interface {}{
0 commit comments