github.com/rudderlabs/rudder-go-kit@v0.30.0/kafkaclient/config_test.go (about)

     1  package client
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/segmentio/kafka-go/sasl/plain"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestScramHashGeneratorString(t *testing.T) {
    11  	t.Run("ok", func(t *testing.T) {
    12  		tests := []struct {
    13  			generator ScramHashGenerator
    14  			expected  string
    15  		}{
    16  			{ScramPlainText, "plain"},
    17  			{ScramSHA256, "sha256"},
    18  			{ScramSHA512, "sha512"},
    19  		}
    20  
    21  		for _, test := range tests {
    22  			require.Equal(t, test.expected, test.generator.String())
    23  		}
    24  	})
    25  	t.Run("panic", func(t *testing.T) {
    26  		require.Panics(t, func() {
    27  			_ = ScramHashGenerator(123).String()
    28  		})
    29  	})
    30  }
    31  
    32  func TestScramHashGeneratorFromString(t *testing.T) {
    33  	t.Run("ok", func(t *testing.T) {
    34  		tests := []struct {
    35  			generator string
    36  			expected  ScramHashGenerator
    37  		}{
    38  			{"plain", ScramPlainText},
    39  			{"sha256", ScramSHA256},
    40  			{"sha512", ScramSHA512},
    41  		}
    42  
    43  		for _, test := range tests {
    44  			generator, err := ScramHashGeneratorFromString(test.generator)
    45  			require.NoError(t, err)
    46  			require.Equal(t, test.expected, generator)
    47  		}
    48  	})
    49  	t.Run("error", func(t *testing.T) {
    50  		_, err := ScramHashGeneratorFromString("foo")
    51  		require.Error(t, err)
    52  	})
    53  }
    54  
    55  func TestTLS(t *testing.T) {
    56  	t.Run("empty configuration", func(t *testing.T) {
    57  		conf, err := (&TLS{}).build()
    58  		require.Nil(t, conf)
    59  		require.ErrorContains(t, err, "invalid TLS configuration, either provide certificates or skip validation")
    60  	})
    61  	t.Run("can run with system cert pool", func(t *testing.T) {
    62  		conf, err := (&TLS{WithSystemCertPool: true}).build()
    63  		require.NoError(t, err)
    64  		require.NotNil(t, conf)
    65  	})
    66  	t.Run("it fails with invalid ca cert", func(t *testing.T) {
    67  		conf, err := (&TLS{CACertificate: []byte("foo")}).build()
    68  		require.Nil(t, conf)
    69  		require.ErrorContains(t, err, "could not append certs from PEM")
    70  	})
    71  	t.Run("it fails with invalid cert and key", func(t *testing.T) {
    72  		conf, err := (&TLS{Cert: []byte("foo"), Key: []byte("bar"), WithSystemCertPool: true}).build()
    73  		require.Nil(t, conf)
    74  		require.ErrorContains(t, err, "could not get TLS certificate")
    75  	})
    76  }
    77  
    78  func TestSASL(t *testing.T) {
    79  	t.Run("plain text", func(t *testing.T) {
    80  		mechanism, err := (&SASL{
    81  			ScramHashGen: ScramPlainText,
    82  			Username:     "foo",
    83  			Password:     "bar",
    84  		}).build()
    85  		require.NoError(t, err)
    86  		require.NotNil(t, mechanism)
    87  		require.IsType(t, plain.Mechanism{}, mechanism)
    88  	})
    89  	t.Run("sha256", func(t *testing.T) {
    90  		mechanism, err := (&SASL{
    91  			ScramHashGen: ScramSHA256,
    92  			Username:     "foo",
    93  			Password:     "bar",
    94  		}).build()
    95  		require.NoError(t, err)
    96  		require.NotNil(t, mechanism)
    97  		require.Equal(t, "SCRAM-SHA-256", mechanism.Name())
    98  	})
    99  	t.Run("sha512", func(t *testing.T) {
   100  		mechanism, err := (&SASL{
   101  			ScramHashGen: ScramSHA512,
   102  			Username:     "foo",
   103  			Password:     "bar",
   104  		}).build()
   105  		require.NoError(t, err)
   106  		require.NotNil(t, mechanism)
   107  		require.Equal(t, "SCRAM-SHA-512", mechanism.Name())
   108  	})
   109  	t.Run("error", func(t *testing.T) {
   110  		mechanism, err := (&SASL{
   111  			ScramHashGen: ScramHashGenerator(123),
   112  			Username:     "foo",
   113  			Password:     "bar",
   114  		}).build()
   115  		require.Nil(t, mechanism)
   116  		require.Error(t, err)
   117  	})
   118  }