//go:build detectors // +build detectors package coinbase // import ( // "context" // "fmt" // "testing" // "time" // "github.com/kylelemons/godebug/pretty" // "github.com/trufflesecurity/trufflehog/v3/pkg/common" // "github.com/trufflesecurity/trufflehog/v3/pkg/pb/detectorspb" // "github.com/trufflesecurity/trufflehog/v3/pkg/detectors" // ) // func TestCoinbase_FromChunk(t *testing.T) { // ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) // defer cancel() // testSecrets, err := common.GetSecret(ctx, "trufflehog-testing", "detectors3") // if err != nil { // t.Fatalf("could not get test secrets from GCP: %s", err) // } // secret := testSecrets.MustGetField("COINBASE_TOKEN") // inactiveSecret := testSecrets.MustGetField("COINBASE_INACTIVE") // type args struct { // ctx context.Context // data []byte // verify bool // } // tests := []struct { // name string // s Scanner // args args // want []detectors.Result // wantErr bool // }{ // { // name: "found, verified", // s: Scanner{}, // args: args{ // ctx: context.Background(), // data: []byte(fmt.Sprintf("You can find a coinbase secret %s within", secret)), // verify: true, // }, // want: []detectors.Result{ // { // DetectorType: detectorspb.DetectorType_Coinbase, // Verified: true, // }, // }, // wantErr: false, // }, // { // name: "found, unverified", // s: Scanner{}, // args: args{ // ctx: context.Background(), // data: []byte(fmt.Sprintf(""You can find a coinbase secret %s within but not valid", inactiveSecret)), // the secret would satisfy the regex but not pass validation // verify: true, // }, // want: []detectors.Result{ // { // DetectorType: detectorspb.DetectorType_Coinbase, // Verified: false, // }, // }, // wantErr: false, // }, // { // name: "not found", // s: Scanner{}, // args: args{ // ctx: context.Background(), // data: []byte("You cannot find the secret within"), // verify: true, // }, // want: nil, // wantErr: false, // }, // } // for _, tt := range tests { // t.Run(tt.name, func(t *testing.T) { // s := Scanner{} // got, err := s.FromData(tt.args.ctx, tt.args.verify, tt.args.data) // if (err != nil) != tt.wantErr { // t.Errorf("Coinbase.FromData() error = %v, wantErr %v", err, tt.wantErr) // return // } // for i := range got { // if len(got[i].Raw) == 0 { // t.Fatal("no raw secret present") // } // got[i].Raw = nil // } // if diff := pretty.Compare(got, tt.want); diff != "" { // t.Errorf("Coinbase.FromData() %s diff: (-got +want)\n%s", tt.name, diff) // } // }) // } // } // func BenchmarkFromData(benchmark *testing.B) { // ctx := context.Background() // s := Scanner{} // for name, data := range detectors.MustGetBenchmarkData() { // benchmark.Run(name, func(b *testing.B) { // for n := 0; n < b.N; n++ { // s.FromData(ctx, false, data) // } // }) // } // }