diff --git a/apigeeSync_suite_test.go b/apigeeSync_suite_test.go
index 51a40b3..92ddecd 100644
--- a/apigeeSync_suite_test.go
+++ b/apigeeSync_suite_test.go
@@ -148,6 +148,10 @@
 var _ = BeforeEach(func() {
 	apid.Events().Close()
 
+	config.Set(configProxyServerBaseURI, testServer.URL)
+	config.Set(configSnapServerBaseURI, testServer.URL)
+	config.Set(configChangeServerBaseURI, testServer.URL)
+
 	token = ""
 	downloadDataSnapshot = false
 	downloadBootSnapshot = false
diff --git a/apigee_sync_test.go b/apigee_sync_test.go
index d6520be..8ae7837 100644
--- a/apigee_sync_test.go
+++ b/apigee_sync_test.go
@@ -5,6 +5,7 @@
 	"github.com/apigee-labs/transicator/common"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
+	"time"
 )
 
 var _ = Describe("listener", func() {
@@ -26,4 +27,73 @@
 
 		bootstrap()
 	})
-})
+
+
+	It("should not panic when auth server when host lookup fails", func(done Done) {
+		defer GinkgoRecover()
+
+		Expect(func() {
+			config.Set(configProxyServerBaseURI, "http://lookup-failure-auth-url")
+			go getBearerToken()}).ToNot(Panic())
+
+		time.Sleep(200 * time.Millisecond)
+		close(done)
+	})
+	It("should not panic when auth server when url contains bad schema", func(done Done) {
+		defer GinkgoRecover()
+
+		Expect(func() {
+			config.Set(configProxyServerBaseURI, "bad-schema-auth-url")
+			go getBearerToken()}).ToNot(Panic())
+
+		time.Sleep(200 * time.Millisecond)
+		close(done)
+	})
+
+
+	It("should not panic when ss server when host lookup fails", func(done Done) {
+		defer GinkgoRecover()
+
+		Expect(func() {
+			config.Set(configSnapServerBaseURI, "http://lookup-failure-ss-url")
+			go downloadSnapshot()}).ToNot(Panic())
+
+		time.Sleep(200 * time.Millisecond)
+		close(done)
+	})
+	It("should not panic when ss server when url contains bad schema", func(done Done) {
+		defer GinkgoRecover()
+
+		Expect(func() {
+			config.Set(configSnapServerBaseURI, "bad-schema-ss-url")
+			go downloadSnapshot()}).ToNot(Panic())
+
+		time.Sleep(200 * time.Millisecond)
+		close(done)
+	})
+
+	It("should not panic when change server host lookup fails", func(done Done) {
+		defer GinkgoRecover()
+
+		Expect(func() {
+			config.Set(configChangeServerBaseURI, "http://lookup-failure-cs-url")
+			downloadDataSnapshot = true;
+			token = "prevent acces token call"
+			go updatePeriodicChanges()}).ToNot(Panic())
+
+		time.Sleep(200 * time.Millisecond)
+		close(done)
+	})
+	It("should not panic when change server url contains bad schema", func(done Done) {
+		defer GinkgoRecover()
+
+		Expect(func() {
+			config.Set(configChangeServerBaseURI, "bad-schema-cs-url")
+			downloadDataSnapshot = true;
+			token = "prevent getBearerToken call"
+			go updatePeriodicChanges()}).ToNot(Panic())
+
+		time.Sleep(200 * time.Millisecond)
+		close(done)
+	})
+})
\ No newline at end of file
