github.com/argoproj/argo-events@v1.9.1/sensors/listener_test.go (about) 1 /* 2 Copyright 2020 BlackRock, Inc. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package sensors 18 19 import ( 20 "context" 21 "testing" 22 23 "github.com/stretchr/testify/assert" 24 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 25 26 "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1" 27 ) 28 29 var ( 30 fakeTrigger = &v1alpha1.Trigger{ 31 Template: &v1alpha1.TriggerTemplate{ 32 Name: "fake-trigger", 33 K8s: &v1alpha1.StandardK8STrigger{}, 34 }, 35 } 36 37 sensorObj = &v1alpha1.Sensor{ 38 ObjectMeta: metav1.ObjectMeta{ 39 Name: "fake-sensor", 40 Namespace: "fake", 41 }, 42 Spec: v1alpha1.SensorSpec{ 43 Triggers: []v1alpha1.Trigger{ 44 *fakeTrigger, 45 }, 46 }, 47 } 48 ) 49 50 func TestGetDependencyExpression(t *testing.T) { 51 t.Run("get simple expression", func(t *testing.T) { 52 obj := sensorObj.DeepCopy() 53 obj.Spec.Dependencies = []v1alpha1.EventDependency{ 54 { 55 Name: "dep1", 56 EventSourceName: "webhook", 57 EventName: "example-1", 58 }, 59 } 60 sensorCtx := &SensorContext{ 61 sensor: obj, 62 } 63 expr, err := sensorCtx.getDependencyExpression(context.Background(), *fakeTrigger) 64 assert.NoError(t, err) 65 assert.Equal(t, "dep1", expr) 66 }) 67 68 t.Run("get two deps expression", func(t *testing.T) { 69 obj := sensorObj.DeepCopy() 70 obj.Spec.Dependencies = []v1alpha1.EventDependency{ 71 { 72 Name: "dep1", 73 EventSourceName: "webhook", 74 EventName: "example-1", 75 }, 76 { 77 Name: "dep2", 78 EventSourceName: "webhook2", 79 EventName: "example-2", 80 }, 81 } 82 sensorCtx := &SensorContext{ 83 sensor: obj, 84 } 85 _, err := sensorCtx.getDependencyExpression(context.Background(), *fakeTrigger) 86 assert.NoError(t, err) 87 }) 88 89 t.Run("get complex expression", func(t *testing.T) { 90 obj := sensorObj.DeepCopy() 91 obj.Spec.Dependencies = []v1alpha1.EventDependency{ 92 { 93 Name: "dep1", 94 EventSourceName: "webhook", 95 EventName: "example-1", 96 }, 97 { 98 Name: "dep1a", 99 EventSourceName: "webhook", 100 EventName: "example-1a", 101 }, 102 { 103 Name: "dep2", 104 EventSourceName: "webhook2", 105 EventName: "example-2", 106 }, 107 } 108 sensorCtx := &SensorContext{ 109 sensor: obj, 110 } 111 trig := fakeTrigger.DeepCopy() 112 _, err := sensorCtx.getDependencyExpression(context.Background(), *trig) 113 assert.NoError(t, err) 114 }) 115 116 t.Run("get conditions expression", func(t *testing.T) { 117 obj := sensorObj.DeepCopy() 118 obj.Spec.Dependencies = []v1alpha1.EventDependency{ 119 { 120 Name: "dep-1", 121 EventSourceName: "webhook", 122 EventName: "example-1", 123 }, 124 { 125 Name: "dep_1a", 126 EventSourceName: "webhook", 127 EventName: "example-1a", 128 }, 129 { 130 Name: "dep-2", 131 EventSourceName: "webhook2", 132 EventName: "example-2", 133 }, 134 { 135 Name: "dep-3", 136 EventSourceName: "webhook3", 137 EventName: "example-3", 138 }, 139 } 140 sensorCtx := &SensorContext{ 141 sensor: obj, 142 } 143 trig := fakeTrigger.DeepCopy() 144 trig.Template.Conditions = "dep-1 || dep-1a || dep-3" 145 _, err := sensorCtx.getDependencyExpression(context.Background(), *trig) 146 assert.NoError(t, err) 147 }) 148 }