github.com/argoproj/argo-events@v1.9.1/pkg/apis/common/validate_test.go (about) 1 package common 2 3 import ( 4 strings "strings" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 corev1 "k8s.io/api/core/v1" 9 ) 10 11 func fakeTLSConfig(t *testing.T, insecureSkipVerify bool) *TLSConfig { 12 t.Helper() 13 if insecureSkipVerify == true { 14 return &TLSConfig{InsecureSkipVerify: true} 15 } else { 16 return &TLSConfig{ 17 CACertSecret: &corev1.SecretKeySelector{ 18 Key: "fake-key1", 19 LocalObjectReference: corev1.LocalObjectReference{ 20 Name: "fake-name1", 21 }, 22 }, 23 ClientCertSecret: &corev1.SecretKeySelector{ 24 Key: "fake-key2", 25 LocalObjectReference: corev1.LocalObjectReference{ 26 Name: "fake-name2", 27 }, 28 }, 29 ClientKeySecret: &corev1.SecretKeySelector{ 30 Key: "fake-key3", 31 LocalObjectReference: corev1.LocalObjectReference{ 32 Name: "fake-name3", 33 }, 34 }, 35 } 36 } 37 } 38 39 func fakeSASLConfig(t *testing.T) *SASLConfig { 40 t.Helper() 41 return &SASLConfig{ 42 Mechanism: "PLAIN", 43 44 UserSecret: &corev1.SecretKeySelector{ 45 Key: "fake-key1", 46 LocalObjectReference: corev1.LocalObjectReference{ 47 Name: "user", 48 }, 49 }, 50 PasswordSecret: &corev1.SecretKeySelector{ 51 Key: "fake-key2", 52 LocalObjectReference: corev1.LocalObjectReference{ 53 Name: "password", 54 }, 55 }, 56 } 57 } 58 59 func TestValidateTLSConfig(t *testing.T) { 60 t.Run("test empty", func(t *testing.T) { 61 c := &TLSConfig{} 62 err := ValidateTLSConfig(c) 63 assert.NotNil(t, err) 64 assert.True(t, strings.Contains(err.Error(), "please configure either caCertSecret, or clientCertSecret and clientKeySecret, or both")) 65 }) 66 67 t.Run("test insecureSkipVerify true", func(t *testing.T) { 68 c := &TLSConfig{InsecureSkipVerify: true} 69 err := ValidateTLSConfig(c) 70 assert.Nil(t, err) 71 }) 72 73 t.Run("test clientKeySecret is set, clientCertSecret is empty", func(t *testing.T) { 74 c := fakeTLSConfig(t, false) 75 c.CACertSecret = nil 76 c.ClientCertSecret = nil 77 err := ValidateTLSConfig(c) 78 assert.NotNil(t, err) 79 assert.True(t, strings.Contains(err.Error(), "both clientCertSecret and clientKeySecret need to be configured")) 80 }) 81 82 t.Run("test only caCertSecret is set", func(t *testing.T) { 83 c := fakeTLSConfig(t, false) 84 c.ClientCertSecret = nil 85 c.ClientKeySecret = nil 86 err := ValidateTLSConfig(c) 87 assert.Nil(t, err) 88 }) 89 90 t.Run("test clientCertSecret and clientKeySecret are set", func(t *testing.T) { 91 c := fakeTLSConfig(t, false) 92 c.CACertSecret = nil 93 err := ValidateTLSConfig(c) 94 assert.Nil(t, err) 95 }) 96 97 t.Run("test all of 3 are set", func(t *testing.T) { 98 c := fakeTLSConfig(t, false) 99 err := ValidateTLSConfig(c) 100 assert.Nil(t, err) 101 }) 102 } 103 104 func TestValidateSASLConfig(t *testing.T) { 105 t.Run("test empty", func(t *testing.T) { 106 s := &SASLConfig{} 107 err := ValidateSASLConfig(s) 108 assert.NotNil(t, err) 109 assert.True(t, strings.Contains(err.Error(), "invalid sasl config, both userSecret and passwordSecret must be defined")) 110 }) 111 112 t.Run("test invalid Mechanism is set", func(t *testing.T) { 113 s := fakeSASLConfig(t) 114 s.Mechanism = "INVALIDSTRING" 115 err := ValidateSASLConfig(s) 116 assert.NotNil(t, err) 117 assert.True(t, strings.Contains(err.Error(), "invalid sasl config. Possible values for SASL Mechanism are `OAUTHBEARER`, `PLAIN`, `SCRAM-SHA-256`, `SCRAM-SHA-512` and `GSSAPI`")) 118 }) 119 120 t.Run("test only User is set", func(t *testing.T) { 121 s := fakeSASLConfig(t) 122 s.PasswordSecret = nil 123 err := ValidateSASLConfig(s) 124 assert.NotNil(t, err) 125 }) 126 127 t.Run("test only Password is set", func(t *testing.T) { 128 s := fakeSASLConfig(t) 129 s.UserSecret = nil 130 err := ValidateSASLConfig(s) 131 assert.NotNil(t, err) 132 }) 133 134 t.Run("test all of 3 are set", func(t *testing.T) { 135 s := fakeSASLConfig(t) 136 err := ValidateSASLConfig(s) 137 assert.Nil(t, err) 138 }) 139 }