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  }