Browse Source

added unit test for ssl and updated coverage

xoraes 11 years ago
parent
commit
07033ea10b
2 changed files with 53 additions and 2 deletions
  1. 51 0
      conn_test.go
  2. 2 2
      integration.sh

+ 51 - 0
conn_test.go

@@ -12,6 +12,9 @@ import (
 	"sync/atomic"
 	"testing"
 	"time"
+	"crypto/tls"
+	"crypto/x509"
+	"io/ioutil"
 )
 
 type TestServer struct {
@@ -36,6 +39,31 @@ func TestSimple(t *testing.T) {
 	}
 }
 
+func TestSSLSimple(t *testing.T) {
+	srv := NewSSLTestServer(t)
+	defer srv.Stop()
+
+	db, err := createTestSslCluster(srv.Address).CreateSession()
+	if err != nil {
+		t.Errorf("NewCluster: %v", err)
+	}
+
+	if err := db.Query("void").Exec(); err != nil {
+		t.Error(err)
+	}
+}
+
+func createTestSslCluster(hosts string) *ClusterConfig {
+	cluster := NewCluster(hosts)
+	cluster.SslOpts = &SslOptions{
+		CertPath:               "testdata/pki/gocql.crt",
+		KeyPath:                "testdata/pki/gocql.key",
+		CaPath:                 "testdata/pki/ca.crt",
+		EnableHostVerification: false,
+	}
+	return cluster
+}
+
 func TestClosed(t *testing.T) {
 	srv := NewTestServer(t)
 	defer srv.Stop()
@@ -211,6 +239,29 @@ func NewTestServer(t *testing.T) *TestServer {
 	return srv
 }
 
+func NewSSLTestServer(t *testing.T) *TestServer {
+	pem, err := ioutil.ReadFile("testdata/pki/ca.crt")
+	certPool := x509.NewCertPool()
+	if !certPool.AppendCertsFromPEM(pem) {
+		t.Errorf("Failed parsing or appending certs")
+	}
+	mycert, err := tls.LoadX509KeyPair("testdata/pki/cassandra.crt", "testdata/pki/cassandra.key")
+	if err != nil {
+		t.Errorf("could not load cert")
+	}
+	config := &tls.Config{
+		Certificates: []tls.Certificate{mycert},
+		RootCAs:      certPool,
+	}
+	listen, err := tls.Listen("tcp", "127.0.0.1:0", config)
+	if err != nil {
+		t.Fatal(err)
+	}
+	srv := &TestServer{Address: listen.Addr().String(), listen: listen, t: t}
+	go srv.serve()
+	return srv
+}
+
 func (srv *TestServer) serve() {
 	defer srv.listen.Close()
 	for {

+ 2 - 2
integration.sh

@@ -24,8 +24,8 @@ function run_tests() {
 
 	cat results
 	cover=`cat results | grep coverage: | grep -o "[0-9]\{1,3\}" | head -n 1`
-	if [[ $cover -lt "63" ]]; then
-		echo "--- FAIL: expected coverage of at least 63 %, but coverage was $cover %"
+	if [[ $cover -lt "64" ]]; then
+		echo "--- FAIL: expected coverage of at least 64 %, but coverage was $cover %"
 		exit 1
 	fi
 	ccm clear