github.com/weaveworks/common@v0.0.0-20230728070032-dd9e68f319d5/server/tls_config_test.go (about)

     1  package server
     2  
     3  import (
     4  	"crypto/tls"
     5  	"testing"
     6  
     7  	"github.com/prometheus/exporter-toolkit/web"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func Test_stringToCipherSuites(t *testing.T) {
    12  	tests := []struct {
    13  		name    string
    14  		arg     string
    15  		want    []web.Cipher
    16  		wantErr bool
    17  	}{
    18  		{name: "blank", arg: "", want: nil},
    19  		{name: "bad", arg: "not-a-cipher", wantErr: true},
    20  		{name: "one", arg: "TLS_AES_256_GCM_SHA384", want: []web.Cipher{web.Cipher(tls.TLS_AES_256_GCM_SHA384)}},
    21  		{name: "two", arg: "TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256",
    22  			want: []web.Cipher{web.Cipher(tls.TLS_AES_256_GCM_SHA384), web.Cipher(tls.TLS_CHACHA20_POLY1305_SHA256)}},
    23  	}
    24  	for _, tt := range tests {
    25  		t.Run(tt.name, func(t *testing.T) {
    26  			got, err := stringToCipherSuites(tt.arg)
    27  			if tt.wantErr {
    28  				require.Error(t, err)
    29  			} else {
    30  				require.NoError(t, err)
    31  			}
    32  			require.Equal(t, tt.want, got)
    33  		})
    34  	}
    35  }
    36  
    37  func Test_stringToTLSVersion(t *testing.T) {
    38  	tests := []struct {
    39  		name    string
    40  		arg     string
    41  		want    web.TLSVersion
    42  		wantErr bool
    43  	}{
    44  		{name: "blank", arg: "", want: 0},
    45  		{name: "bad", arg: "not-a-version", wantErr: true},
    46  		{name: "VersionTLS12", arg: "VersionTLS12", want: tls.VersionTLS12},
    47  	}
    48  	for _, tt := range tests {
    49  		t.Run(tt.name, func(t *testing.T) {
    50  			got, err := stringToTLSVersion(tt.arg)
    51  			if tt.wantErr {
    52  				require.Error(t, err)
    53  			} else {
    54  				require.NoError(t, err)
    55  			}
    56  			require.Equal(t, tt.want, got)
    57  		})
    58  	}
    59  }