go-proxy/tls_runtime_test.go

49 lines
1.7 KiB
Go
Raw Normal View History

package proxy
import (
"crypto/tls"
"testing"
)
func TestTLSRuntime_buildTLSConfig_Good(t *testing.T) {
config := buildTLSConfig(TLSConfig{
Ciphers: "ECDHE-RSA-AES128-GCM-SHA256:TLS_AES_128_GCM_SHA256",
Protocols: "TLSv1.2,TLSv1.3",
})
if config.MinVersion != tls.VersionTLS12 {
t.Fatalf("expected min version TLS1.2, got %d", config.MinVersion)
}
if config.MaxVersion != tls.VersionTLS13 {
t.Fatalf("expected max version TLS1.3, got %d", config.MaxVersion)
}
if len(config.CipherSuites) != 2 || config.CipherSuites[0] != tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 || config.CipherSuites[1] != tls.TLS_AES_128_GCM_SHA256 {
t.Fatalf("unexpected cipher suites: %#v", config.CipherSuites)
}
}
func TestTLSRuntime_buildTLSConfig_Bad(t *testing.T) {
config := buildTLSConfig(TLSConfig{Protocols: "bogus", Ciphers: "bogus"})
if config.MinVersion != 0 || config.MaxVersion != 0 {
t.Fatalf("expected default versions for invalid input, got min=%d max=%d", config.MinVersion, config.MaxVersion)
}
if len(config.CipherSuites) != 0 {
t.Fatalf("expected no cipher suites for invalid input, got %#v", config.CipherSuites)
}
}
func TestTLSRuntime_buildTLSConfig_Ugly(t *testing.T) {
config := buildTLSConfig(TLSConfig{Protocols: "1.1:1.2:1.3", Ciphers: "AES128-GCM-SHA256,unknown"})
if config.MinVersion != tls.VersionTLS11 {
t.Fatalf("expected min version TLS1.1, got %d", config.MinVersion)
}
if config.MaxVersion != tls.VersionTLS13 {
t.Fatalf("expected max version TLS1.3, got %d", config.MaxVersion)
}
if len(config.CipherSuites) != 1 || config.CipherSuites[0] != tls.TLS_RSA_WITH_AES_128_GCM_SHA256 {
t.Fatalf("unexpected cipher suites: %#v", config.CipherSuites)
}
}