19
19
package e2e
20
20
21
21
import (
22
+ "context"
22
23
"testing"
23
24
24
- "github.com/stretchr/testify/assert"
25
+ "github.com/stretchr/testify/require"
26
+ corev1 "k8s.io/api/core/v1"
27
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25
28
"k8s.io/apimachinery/pkg/types"
26
29
"k8s.io/utils/pointer"
27
30
testlib "knative.dev/eventing/test/lib"
@@ -30,99 +33,79 @@ import (
30
33
eventingv1alpha1clientset "knative.dev/eventing-kafka-broker/control-plane/pkg/client/clientset/versioned/typed/eventing/v1alpha1"
31
34
"knative.dev/eventing-kafka-broker/test/pkg/addressable"
32
35
"knative.dev/eventing-kafka-broker/test/pkg/sink"
33
- testingpkg "knative.dev/eventing-kafka-broker/test/pkg/testing"
36
+ . "knative.dev/eventing-kafka-broker/test/pkg/testing"
34
37
)
35
38
36
- func TestKafkaSinkV1Alpha1DefaultContentMode (t * testing.T ) {
37
- testingpkg .RunMultiple (t , func (t * testing.T ) {
38
-
39
- client := testlib .Setup (t , false )
40
- defer testlib .TearDown (client )
41
-
42
- clientSet , err := eventingv1alpha1clientset .NewForConfig (client .Config )
43
- assert .Nil (t , err )
44
-
45
- // Create a KafkaSink with the following spec.
46
-
47
- kss := eventingv1alpha1.KafkaSinkSpec {
48
- Topic : "kafka-sink-" + client .Namespace ,
49
- NumPartitions : pointer .Int32Ptr (10 ),
50
- ReplicationFactor : func (rf int16 ) * int16 { return & rf }(1 ),
51
- BootstrapServers : testingpkg .BootstrapServersPlaintextArr ,
52
- }
53
-
54
- createFunc := sink .CreatorV1Alpha1 (clientSet , kss )
55
-
56
- kafkaSink , err := createFunc (types.NamespacedName {
57
- Namespace : client .Namespace ,
58
- Name : "kafka-sink" ,
59
- })
60
- assert .Nil (t , err )
61
-
62
- client .WaitForResourceReadyOrFail (kafkaSink .Name , & kafkaSink .TypeMeta )
63
-
64
- // Send events to the KafkaSink.
65
- ids := addressable .Send (t , kafkaSink )
39
+ const (
40
+ sinkSecretName = "secret-test"
41
+ )
66
42
67
- // Read events from the topic.
68
- sink .Verify (t , client , eventingv1alpha1 .ModeStructured , kss .Topic , ids )
43
+ func TestKafkaSinkV1Alpha1DefaultContentMode (t * testing.T ) {
44
+ testKafkaSink (t , eventingv1alpha1 .ModeStructured , nil , func (kss * eventingv1alpha1.KafkaSinkSpec ) error {
45
+ kss .ContentMode = pointer .StringPtr ("" )
46
+ return nil
69
47
})
70
48
}
71
49
72
50
func TestKafkaSinkV1Alpha1StructuredContentMode (t * testing.T ) {
73
- testingpkg .RunMultiple (t , func (t * testing.T ) {
74
-
75
- client := testlib .Setup (t , false )
76
- defer testlib .TearDown (client )
77
-
78
- clientSet , err := eventingv1alpha1clientset .NewForConfig (client .Config )
79
- assert .Nil (t , err )
80
-
81
- // Create a KafkaSink with the following spec.
82
-
83
- kss := eventingv1alpha1.KafkaSinkSpec {
84
- Topic : "kafka-sink-" + client .Namespace ,
85
- NumPartitions : pointer .Int32Ptr (10 ),
86
- ReplicationFactor : func (rf int16 ) * int16 { return & rf }(1 ),
87
- BootstrapServers : testingpkg .BootstrapServersPlaintextArr ,
88
- ContentMode : pointer .StringPtr (eventingv1alpha1 .ModeStructured ),
89
- }
51
+ testKafkaSink (t , eventingv1alpha1 .ModeStructured , nil )
52
+ }
90
53
91
- createFunc := sink .CreatorV1Alpha1 (clientSet , kss )
54
+ func TestKafkaSinkV1Alpha1BinaryContentMode (t * testing.T ) {
55
+ testKafkaSink (t , eventingv1alpha1 .ModeBinary , nil )
56
+ }
92
57
93
- kafkaSink , err := createFunc (types.NamespacedName {
94
- Namespace : client .Namespace ,
95
- Name : "kafka-sink" ,
96
- })
97
- assert .Nil (t , err )
58
+ func TestKafkaSinkV1Alpha1AuthPlaintext (t * testing.T ) {
59
+ testKafkaSink (t , eventingv1alpha1 .ModeStructured , Plaintext , withBootstrap (BootstrapServersPlaintextArr ), withSecret )
60
+ }
98
61
99
- client .WaitForResourceReadyOrFail (kafkaSink .Name , & kafkaSink .TypeMeta )
62
+ func TestKafkaSinkV1Alpha1AuthSsl (t * testing.T ) {
63
+ testKafkaSink (t , eventingv1alpha1 .ModeStructured , Ssl , withBootstrap (BootstrapServersSslArr ), withSecret )
64
+ }
100
65
101
- // Send events to the KafkaSink.
102
- ids := addressable .Send (t , kafkaSink )
66
+ func TestKafkaSinkV1Alpha1AuthSaslPlaintextScram512 (t * testing.T ) {
67
+ testKafkaSink (t , eventingv1alpha1 .ModeStructured , SaslPlaintextScram512 , withBootstrap (BootstrapServersSaslPlaintextArr ), withSecret )
68
+ }
103
69
104
- // Read events from the topic.
105
- sink .Verify (t , client , eventingv1alpha1 .ModeStructured , kss .Topic , ids )
106
- })
70
+ func TestKafkaSinkV1Alpha1AuthSslSaslScram512 (t * testing.T ) {
71
+ testKafkaSink (t , eventingv1alpha1 .ModeStructured , SslSaslScram512 , withBootstrap (BootstrapServersSslSaslScramArr ), withSecret )
107
72
}
108
73
109
- func TestKafkaSinkV1Alpha1BinaryContentMode (t * testing.T ) {
110
- testingpkg .RunMultiple (t , func (t * testing.T ) {
74
+ func testKafkaSink (t * testing.T , mode string , sp SecretProvider , opts ... func (kss * eventingv1alpha1.KafkaSinkSpec ) error ) {
75
+ RunMultiple (t , func (t * testing.T ) {
76
+
77
+ ctx := context .Background ()
111
78
112
79
client := testlib .Setup (t , false )
113
80
defer testlib .TearDown (client )
114
81
115
82
clientSet , err := eventingv1alpha1clientset .NewForConfig (client .Config )
116
- assert .Nil (t , err )
83
+ require .Nil (t , err )
117
84
118
85
// Create a KafkaSink with the following spec.
119
86
120
87
kss := eventingv1alpha1.KafkaSinkSpec {
121
88
Topic : "kafka-sink-" + client .Namespace ,
122
89
NumPartitions : pointer .Int32Ptr (10 ),
123
90
ReplicationFactor : func (rf int16 ) * int16 { return & rf }(1 ),
124
- BootstrapServers : testingpkg .BootstrapServersPlaintextArr ,
125
- ContentMode : pointer .StringPtr (eventingv1alpha1 .ModeBinary ),
91
+ BootstrapServers : BootstrapServersPlaintextArr ,
92
+ ContentMode : pointer .StringPtr (mode ),
93
+ }
94
+ for _ , opt := range opts {
95
+ require .Nil (t , opt (& kss ))
96
+ }
97
+
98
+ if sp != nil {
99
+ secretData := sp (t , client )
100
+ secret := & corev1.Secret {
101
+ ObjectMeta : metav1.ObjectMeta {
102
+ Namespace : client .Namespace ,
103
+ Name : sinkSecretName ,
104
+ },
105
+ Data : secretData ,
106
+ }
107
+ _ , err = client .Kube .CoreV1 ().Secrets (client .Namespace ).Create (ctx , secret , metav1.CreateOptions {})
108
+ require .Nil (t , err )
126
109
}
127
110
128
111
createFunc := sink .CreatorV1Alpha1 (clientSet , kss )
@@ -131,14 +114,32 @@ func TestKafkaSinkV1Alpha1BinaryContentMode(t *testing.T) {
131
114
Namespace : client .Namespace ,
132
115
Name : "kafka-sink" ,
133
116
})
134
- assert .Nil (t , err )
117
+ require .Nil (t , err )
135
118
136
119
client .WaitForResourceReadyOrFail (kafkaSink .Name , & kafkaSink .TypeMeta )
137
120
138
121
// Send events to the KafkaSink.
139
122
ids := addressable .Send (t , kafkaSink )
140
123
141
124
// Read events from the topic.
142
- sink .Verify (t , client , eventingv1alpha1 . ModeBinary , kss .Topic , ids )
125
+ sink .Verify (t , client , mode , kss .Topic , ids )
143
126
})
144
127
}
128
+
129
+ func withSecret (kss * eventingv1alpha1.KafkaSinkSpec ) error {
130
+ kss .Auth = & eventingv1alpha1.Auth {
131
+ Secret : & eventingv1alpha1.Secret {
132
+ Ref : & eventingv1alpha1.SecretReference {
133
+ Name : sinkSecretName ,
134
+ },
135
+ },
136
+ }
137
+ return nil
138
+ }
139
+
140
+ func withBootstrap (bs []string ) func (kss * eventingv1alpha1.KafkaSinkSpec ) error {
141
+ return func (kss * eventingv1alpha1.KafkaSinkSpec ) error {
142
+ kss .BootstrapServers = bs
143
+ return nil
144
+ }
145
+ }
0 commit comments