github.com/argoproj/argo-events@v1.9.1/webhook/validator/sensor_test.go (about)

     1  package validator
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/ghodss/yaml"
    10  	"github.com/stretchr/testify/assert"
    11  	corev1 "k8s.io/api/core/v1"
    12  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    13  
    14  	"github.com/argoproj/argo-events/common"
    15  	eventbusv1alpha1 "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1"
    16  	"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1"
    17  )
    18  
    19  var (
    20  	fakeBus = &eventbusv1alpha1.EventBus{
    21  		TypeMeta: metav1.TypeMeta{
    22  			APIVersion: eventbusv1alpha1.SchemeGroupVersion.String(),
    23  			Kind:       "EventBus",
    24  		},
    25  		ObjectMeta: metav1.ObjectMeta{
    26  			Namespace: testNamespace,
    27  			Name:      common.DefaultEventBusName,
    28  		},
    29  		Spec: eventbusv1alpha1.EventBusSpec{
    30  			NATS: &eventbusv1alpha1.NATSBus{
    31  				Native: &eventbusv1alpha1.NativeStrategy{
    32  					Auth: &eventbusv1alpha1.AuthStrategyToken,
    33  				},
    34  			},
    35  		},
    36  		Status: eventbusv1alpha1.EventBusStatus{
    37  			Config: eventbusv1alpha1.BusConfig{
    38  				NATS: &eventbusv1alpha1.NATSConfig{
    39  					URL:  "nats://xxxx",
    40  					Auth: &eventbusv1alpha1.AuthStrategyToken,
    41  					AccessSecret: &corev1.SecretKeySelector{
    42  						Key: "test-key",
    43  						LocalObjectReference: corev1.LocalObjectReference{
    44  							Name: "test-name",
    45  						},
    46  					},
    47  				},
    48  			},
    49  		},
    50  	}
    51  )
    52  
    53  func TestValidateSensor(t *testing.T) {
    54  	dir := "../../examples/sensors"
    55  	dirEntries, err := os.ReadDir(dir)
    56  	assert.Nil(t, err)
    57  
    58  	testBus := fakeBus.DeepCopy()
    59  	testBus.Status.MarkDeployed("test", "test")
    60  	testBus.Status.MarkConfigured()
    61  	_, err = fakeEventBusClient.ArgoprojV1alpha1().EventBus(testNamespace).Create(context.TODO(), testBus, metav1.CreateOptions{})
    62  	assert.Nil(t, err)
    63  
    64  	for _, entry := range dirEntries {
    65  		if entry.IsDir() {
    66  			continue
    67  		}
    68  		content, err := os.ReadFile(fmt.Sprintf("%s/%s", dir, entry.Name()))
    69  		assert.Nil(t, err)
    70  		var sensor *v1alpha1.Sensor
    71  		err = yaml.Unmarshal(content, &sensor)
    72  		assert.Nil(t, err)
    73  		sensor.Namespace = testNamespace
    74  		newSensor := sensor.DeepCopy()
    75  		newSensor.Generation++
    76  		v := NewSensorValidator(fakeK8sClient, fakeEventBusClient, fakeEventSourceClient, fakeSensorClient, sensor, newSensor)
    77  		r := v.ValidateCreate(contextWithLogger(t))
    78  		assert.True(t, r.Allowed)
    79  		r = v.ValidateUpdate(contextWithLogger(t))
    80  		assert.True(t, r.Allowed)
    81  	}
    82  }