@@ -558,3 +558,82 @@ line 2`)
558558 require .Equal (t , []byte (nil ), chunk )
559559 }
560560}
561+
562+ func TestNew_EmptyOrWhitespaceSecrets (t * testing.T ) {
563+ t .Log ("empty string secret triggers warning" )
564+ {
565+ var buff bytes.Buffer
566+ mockLogger := new (mocks.Logger )
567+ mockLogger .On ("Warnf" , "Secret value is empty or contains only whitespaces, resulting in unintended redaction!" ).Return ()
568+
569+ New ([]string {"" }, & buff , mockLogger )
570+
571+ mockLogger .AssertExpectations (t )
572+ }
573+
574+ t .Log ("single space secret triggers warning" )
575+ {
576+ var buff bytes.Buffer
577+ mockLogger := new (mocks.Logger )
578+ mockLogger .On ("Warnf" , "Secret value is empty or contains only whitespaces, resulting in unintended redaction!" ).Return ()
579+
580+ New ([]string {" " }, & buff , mockLogger )
581+
582+ mockLogger .AssertExpectations (t )
583+ }
584+
585+ t .Log ("multiple spaces secret triggers warning" )
586+ {
587+ var buff bytes.Buffer
588+ mockLogger := new (mocks.Logger )
589+ mockLogger .On ("Warnf" , "Secret value is empty or contains only whitespaces, resulting in unintended redaction!" ).Return ()
590+
591+ New ([]string {" " }, & buff , mockLogger )
592+
593+ mockLogger .AssertExpectations (t )
594+ }
595+
596+ t .Log ("tab and newline characters secret triggers warning" )
597+ {
598+ var buff bytes.Buffer
599+ mockLogger := new (mocks.Logger )
600+ mockLogger .On ("Warnf" , "Secret value is empty or contains only whitespaces, resulting in unintended redaction!" ).Return ()
601+
602+ New ([]string {"\t \n " }, & buff , mockLogger )
603+
604+ mockLogger .AssertExpectations (t )
605+ }
606+
607+ t .Log ("multiple empty/whitespace secrets trigger multiple warnings" )
608+ {
609+ var buff bytes.Buffer
610+ mockLogger := new (mocks.Logger )
611+ mockLogger .On ("Warnf" , "Secret value is empty or contains only whitespaces, resulting in unintended redaction!" ).Return ().Times (3 )
612+
613+ New ([]string {"" , " " , " " }, & buff , mockLogger )
614+
615+ mockLogger .AssertExpectations (t )
616+ }
617+
618+ t .Log ("normal secret does not trigger warning" )
619+ {
620+ var buff bytes.Buffer
621+ mockLogger := new (mocks.Logger )
622+ // No Warnf expectation set - test will fail if Warnf is called
623+
624+ New ([]string {"valid_secret" }, & buff , mockLogger )
625+
626+ mockLogger .AssertNotCalled (t , "Warnf" )
627+ }
628+
629+ t .Log ("mixed valid and invalid secrets trigger warning only for invalid ones" )
630+ {
631+ var buff bytes.Buffer
632+ mockLogger := new (mocks.Logger )
633+ mockLogger .On ("Warnf" , "Secret value is empty or contains only whitespaces, resulting in unintended redaction!" ).Return ().Times (2 )
634+
635+ New ([]string {"valid_secret" , "" , "another_valid" , " " }, & buff , mockLogger )
636+
637+ mockLogger .AssertExpectations (t )
638+ }
639+ }
0 commit comments