[XAPID-1037] add more tests and fix test suite
diff --git a/verifyAPIKey_suite_test.go b/verifyAPIKey_suite_test.go
new file mode 100644
index 0000000..a7d9c9a
--- /dev/null
+++ b/verifyAPIKey_suite_test.go
@@ -0,0 +1,161 @@
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package apidVerifyApiKey
+
+import (
+	. "github.com/onsi/ginkgo"
+	. "github.com/onsi/gomega"
+
+	"github.com/30x/apid-core"
+	"github.com/30x/apid-core/factory"
+	"io/ioutil"
+	"net/http"
+	"net/http/httptest"
+	"os"
+	"sync"
+	"testing"
+)
+
+var (
+	testTempDir     string
+	testServer      *httptest.Server
+	testSyncHandler apigeeSyncHandler
+)
+
+var _ = BeforeSuite(func() {
+	var err error
+	testTempDir, err = ioutil.TempDir("", "api_test")
+	s := factory.DefaultServicesFactory()
+	apid.Initialize(s)
+	config := apid.Config()
+	config.Set("data_path", testTempDir)
+	config.Set("log_level", "DEBUG")
+	log = apid.Log()
+	Expect(err).NotTo(HaveOccurred())
+
+	apid.InitializePlugins("")
+
+	db, err := apid.Data().DB()
+	Expect(err).NotTo(HaveOccurred())
+
+	dbMan := &dbManager{
+		data:  s.Data(),
+		dbMux: sync.RWMutex{},
+	}
+	dbMan.initDb()
+	apiMan := apiManager{
+		dbMan:             dbMan,
+		verifiersEndpoint: apiPath,
+	}
+
+	testSyncHandler = apigeeSyncHandler{
+		dbMan:  dbMan,
+		apiMan: apiMan,
+	}
+
+	testSyncHandler.initListener(s)
+
+	createTables(db)
+	createApidClusterTables(db)
+	addScopes(db)
+	testServer = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
+		if req.URL.Path == apiPath {
+			apiMan.handleRequest(w, req)
+		}
+	}))
+
+	createTestData(db)
+})
+
+var _ = AfterSuite(func() {
+	apid.Events().Close()
+	if testServer != nil {
+		testServer.Close()
+	}
+	os.RemoveAll(testTempDir)
+})
+
+func TestVerifyAPIKey(t *testing.T) {
+	RegisterFailHandler(Fail)
+	RunSpecs(t, "VerifyAPIKey Suite")
+}
+
+func createTestData(db apid.DB) {
+	txn, err := db.Begin()
+	Expect(err).ShouldNot(HaveOccurred())
+	// api products
+	for i := 0; i < 10; i++ {
+		generateTestApiProduct(i, txn)
+	}
+	// developers
+	for i := 0; i < 10; i++ {
+		generateTestDeveloper(i, txn)
+	}
+
+	// application
+	var j, k int
+	for i := 0; i < 10; i++ {
+		for j = k; j < 10+k; j++ {
+			generateTestApp(j, i, txn)
+		}
+		k = j
+	}
+	// app credentials
+	for i := 0; i < 10; i++ {
+		generateTestAppCreds(i, txn)
+	}
+	// api product mapper
+	for i := 0; i < 10; i++ {
+		generateTestApiProductMapper(i, txn)
+	}
+
+	// Following are data for company
+	// api products
+	for i := 100; i < 110; i++ {
+		generateTestApiProduct(i, txn)
+	}
+
+	// companies
+	for i := 100; i < 110; i++ {
+		generateTestCompany(i, txn)
+	}
+
+	// company developers
+	for i := 100; i < 110; i++ {
+		generateTestCompanyDeveloper(i, txn)
+	}
+
+	// application
+	k = 100
+	for i := 100; i < 110; i++ {
+		for j = k; j < 100+k; j++ {
+			generateTestAppCompany(j, i, txn)
+		}
+		k = j
+	}
+	// app credentials
+	for i := 100; i < 110; i++ {
+		generateTestAppCreds(i, txn)
+	}
+	// api product mapper
+	for i := 100; i < 110; i++ {
+		generateTestApiProductMapper(i, txn)
+	}
+
+	txn.Commit()
+	var count int64
+	db.QueryRow("select count(*) from EDGEX_DATA_SCOPE").Scan(&count)
+	log.Info("Found ", count)
+}