//go:build integration
// +build integration

package engine

import (
	"fmt"
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/trufflesecurity/trufflehog/v3/pkg/common"
	"github.com/trufflesecurity/trufflehog/v3/pkg/context"
	"github.com/trufflesecurity/trufflehog/v3/pkg/engine/defaults"
	"github.com/trufflesecurity/trufflehog/v3/pkg/sources"
)

func TestGitLab(t *testing.T) {
	// Run the scan.
	ctx := context.Background()
	e, err := NewEngine(ctx, &Config{
		Detectors:     defaults.DefaultDetectors(),
		SourceManager: sources.NewManager(),
		Verify:        false,
	})
	assert.NoError(t, err)
	e.Start(ctx)

	secret, err := common.GetTestSecret(ctx)
	if err != nil {
		t.Fatal(fmt.Errorf("failed to access secret: %v", err))
	}
	_, err = e.ScanGitLab(ctx, sources.GitlabConfig{
		Token: secret.MustGetField("GITLAB_TOKEN"),
	})
	assert.NoError(t, err)

	err = e.Finish(ctx)
	assert.NoError(t, err)

	// Check the output provided by metrics.
	metrics := e.GetMetrics()
	assert.GreaterOrEqual(t, metrics.ChunksScanned, uint64(23528))
	assert.GreaterOrEqual(t, metrics.BytesScanned, uint64(84982266))
}
