github.com/argoproj/argo-events@v1.9.1/controllers/eventbus/fuzz_test.go (about)

     1  package eventbus
     2  
     3  import (
     4  	"context"
     5  	"sync"
     6  	"testing"
     7  
     8  	fuzz "github.com/AdaLogics/go-fuzz-headers"
     9  	appv1 "k8s.io/api/apps/v1"
    10  	corev1 "k8s.io/api/core/v1"
    11  	"k8s.io/client-go/kubernetes/scheme"
    12  	"sigs.k8s.io/controller-runtime/pkg/client/fake"
    13  
    14  	"github.com/argoproj/argo-events/controllers"
    15  
    16  	"github.com/argoproj/argo-events/common/logging"
    17  	"github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1"
    18  )
    19  
    20  var initter sync.Once
    21  
    22  func initScheme() {
    23  	_ = v1alpha1.AddToScheme(scheme.Scheme)
    24  	_ = appv1.AddToScheme(scheme.Scheme)
    25  	_ = corev1.AddToScheme(scheme.Scheme)
    26  }
    27  
    28  func FuzzEventbusReconciler(f *testing.F) {
    29  	f.Fuzz(func(t *testing.T, data []byte) {
    30  		initter.Do(initScheme)
    31  		f := fuzz.NewConsumer(data)
    32  		nativeBus := &v1alpha1.EventBus{}
    33  		err := f.GenerateStruct(nativeBus)
    34  		if err != nil {
    35  			return
    36  		}
    37  		cl := fake.NewClientBuilder().Build()
    38  		config := &controllers.GlobalConfig{}
    39  		err = f.GenerateStruct(config)
    40  		if err != nil {
    41  			return
    42  		}
    43  		r := &reconciler{
    44  			client: cl,
    45  			scheme: scheme.Scheme,
    46  			config: config,
    47  			logger: logging.NewArgoEventsLogger(),
    48  		}
    49  		ctx := context.Background()
    50  		_ = r.reconcile(ctx, nativeBus)
    51  		_ = r.needsUpdate(nativeBus, nativeBus)
    52  	})
    53  }