@@ -111,6 +111,100 @@ func TestGitlabV2_FromChunk_WithV1Secrets(t *testing.T) {
111111 }
112112}
113113
114+ // This test ensures gitlab v2 detector does not work on gitlab v3 secrets
115+ func TestGitlabV2_FromChunk_WithV3Secrets (t * testing.T ) {
116+ ctx , cancel := context .WithTimeout (context .Background (), time .Second * 5 )
117+ defer cancel ()
118+ testSecrets , err := common .GetSecret (ctx , "trufflehog-testing" , "detectors6" )
119+ if err != nil {
120+ t .Fatalf ("could not get test secrets from GCP: %s" , err )
121+ }
122+ secret := testSecrets .MustGetField ("GITLABV3" )
123+ secretInactive := testSecrets .MustGetField ("GITLABV3_INACTIVE" )
124+ type args struct {
125+ ctx context.Context
126+ data []byte
127+ verify bool
128+ }
129+ tests := []struct {
130+ name string
131+ s Scanner
132+ args args
133+ want []detectors.Result
134+ wantErr bool
135+ wantVerificationErr bool
136+ }{
137+ {
138+ name : "verified v3 secret, not found" ,
139+ s : Scanner {},
140+ args : args {
141+ ctx : context .Background (),
142+ data : []byte (fmt .Sprintf ("You can find a gitlab super secret %s within" , secret )),
143+ verify : true ,
144+ },
145+ want : nil ,
146+ wantErr : false ,
147+ },
148+ {
149+ name : "verified v3 secret, not found" ,
150+ s : Scanner {},
151+ args : args {
152+ ctx : context .Background (),
153+ data : []byte (fmt .Sprintf ("gitlab %s" , secret )),
154+ verify : true ,
155+ },
156+ want : nil ,
157+ wantErr : false ,
158+ },
159+ {
160+ name : "unverified v3 secret, not found" ,
161+ s : Scanner {},
162+ args : args {
163+ ctx : context .Background (),
164+ data : []byte (fmt .Sprintf ("You can find a gitlab secret %s within" , secretInactive )),
165+ verify : true ,
166+ },
167+ want : nil ,
168+ wantErr : false ,
169+ },
170+ {
171+ name : "not found" ,
172+ s : Scanner {},
173+ args : args {
174+ ctx : context .Background (),
175+ data : []byte ("You cannot find the secret within" ),
176+ verify : true ,
177+ },
178+ want : nil ,
179+ wantErr : false ,
180+ },
181+ }
182+ for _ , tt := range tests {
183+ t .Run (tt .name , func (t * testing.T ) {
184+ tt .s .SetCloudEndpoint ("https://gitlab.com" )
185+ tt .s .UseCloudEndpoint (true )
186+ got , err := tt .s .FromData (tt .args .ctx , tt .args .verify , tt .args .data )
187+ if (err != nil ) != tt .wantErr {
188+ t .Errorf ("Gitlab.FromData() error = %v, wantErr %v" , err , tt .wantErr )
189+ return
190+ }
191+ for i := range got {
192+ if len (got [i ].Raw ) == 0 {
193+ t .Fatal ("no raw secret present" )
194+ }
195+ if (got [i ].VerificationError () != nil ) != tt .wantVerificationErr {
196+ t .Fatalf (" wantVerificationError = %v, verification error = %v," , tt .wantVerificationErr , got [i ].VerificationError ())
197+ }
198+ got [i ].AnalysisInfo = nil
199+ }
200+ opts := cmpopts .IgnoreFields (detectors.Result {}, "Raw" , "RawV2" , "verificationError" , "primarySecret" )
201+ if diff := cmp .Diff (got , tt .want , opts ); diff != "" {
202+ t .Errorf ("Gitlab.FromData() %s diff: (-got +want)\n %s" , tt .name , diff )
203+ }
204+ })
205+ }
206+ }
207+
114208func BenchmarkFromData (benchmark * testing.B ) {
115209 ctx := context .Background ()
116210 s := Scanner {}
0 commit comments