[XAPID-1037] add more tests and fix test suite
diff --git a/api.go b/api.go
index 220da6e..784ffcf 100644
--- a/api.go
+++ b/api.go
@@ -91,6 +91,7 @@
 
 	// 2. verify params
 	// TODO : make this method of verifyApiKeyReq struct
+	// TODO : move validation to verifyApiKey struct validate method
 	if verifyApiKeyReq.Action == "" || verifyApiKeyReq.ApiProxyName == "" || verifyApiKeyReq.OrganizationName == "" || verifyApiKeyReq.EnvironmentName == "" || verifyApiKeyReq.Key == "" {
 		// TODO : set correct missing fields in error response
 		errorResponse, _ := json.Marshal(errorResponse("Bad_REQUEST", "Missing element", http.StatusBadRequest))
@@ -232,7 +233,6 @@
 		errorCode = "oauth.v2.InvalidApiKeyForGivenResource"
 	}
 
-	// TODO : empty check
 	if verifyApiKeyReq.ValidateAgainstApiProxiesAndEnvs && (len(apiProductDetails.Apiproxies) > 0 && !contains(apiProductDetails.Apiproxies, verifyApiKeyReq.ApiProxyName)) {
 		reason = "Proxy Validation Failed (" + strings.Join(apiProductDetails.Apiproxies, ", ") + " vs " + verifyApiKeyReq.ApiProxyName + ")"
 		errorCode = "oauth.v2.InvalidApiKeyForGivenResource"
diff --git a/api_ShortListApiProduct_test.go b/api_ShortListApiProduct_test.go
index f41e118..72c999e 100644
--- a/api_ShortListApiProduct_test.go
+++ b/api_ShortListApiProduct_test.go
@@ -14,119 +14,153 @@
 
 package apidVerifyApiKey
 
-import "testing"
+import (
+	. "github.com/onsi/ginkgo"
+	. "github.com/onsi/gomega"
+)
 
-var shortListApiProductTestData = []struct {
-	testDesc                           string
-	req                                VerifyApiKeyRequest
-	dbData                             []ApiProductDetails
-	expectedResult                     string
-	expectedWhenValidateProxyEnvIsTrue string
-}{
-	{
-		testDesc:                           "single-product-happy-path",
-		req:                                VerifyApiKeyRequest{EnvironmentName: "test", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
-		dbData:                             []ApiProductDetails{ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}}},
-		expectedResult:                     "api-product-1",
-		expectedWhenValidateProxyEnvIsTrue: "api-product-1",
-	},
-	{
-		testDesc: "multi-product-custom-resource-happy-path",
-		req:      VerifyApiKeyRequest{EnvironmentName: "test", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
-		dbData: []ApiProductDetails{
-			ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
-			ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
-		},
-		expectedResult:                     "api-product-2",
-		expectedWhenValidateProxyEnvIsTrue: "api-product-2",
-	}, {
-		testDesc: "multi-product-only-one-matches-env",
-		req:      VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
-		dbData: []ApiProductDetails{
-			ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
-			ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
-			ApiProductDetails{Id: "api-product-3", Environments: []string{"test", "prod", "stage"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
-		},
-		expectedResult:                     "api-product-3",
-		expectedWhenValidateProxyEnvIsTrue: "api-product-3",
-	},
-	{
-		testDesc: "multi-product-match-with-no-env",
-		req:      VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
-		dbData: []ApiProductDetails{
-			ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
-			ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
-			ApiProductDetails{Id: "api-product-3", Environments: []string{}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
-		},
-		expectedResult:                     "api-product-3",
-		expectedWhenValidateProxyEnvIsTrue: "api-product-3",
-	},
-	{
-		testDesc: "multi-product-match-env",
-		req:      VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
-		dbData: []ApiProductDetails{
-			ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
-			ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod", "stage"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/this-is-my-path"}},
-			ApiProductDetails{Id: "api-product-3", Environments: []string{}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
-		},
+var _ = Describe("verifyApiKey_shortListApiProduct", func() {
 
-		expectedResult:                     "api-product-2",
-		expectedWhenValidateProxyEnvIsTrue: "api-product-2",
-	},
+	Context("shortListApiProduct tests", func() {
+		It("single-product-happy-path", func() {
+			td := shortListApiProductTestDataStruct{
+				req:            VerifyApiKeyRequest{EnvironmentName: "test", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
+				dbData:         []ApiProductDetails{ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}}},
+				expectedResult: "api-product-1",
+			}
 
-	{
-		testDesc: "multi-product-match-empty-res-env-proxy",
-		req:      VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
-		dbData: []ApiProductDetails{
-			ApiProductDetails{Id: "api-product-1"},
-			ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod", "stage"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/this-is-my-path"}},
-			ApiProductDetails{Id: "api-product-3", Environments: []string{}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
-		},
+			actual := shortListApiProduct(td.dbData, td.req)
+			Expect(actual.Id).Should(Equal(td.expectedResult))
+		})
+		It("multi-product-custom-resource-happy-path", func() {
+			td := shortListApiProductTestDataStruct{
 
-		expectedResult:                     "api-product-1",
-		expectedWhenValidateProxyEnvIsTrue: "api-product-1",
-	},
+				req: VerifyApiKeyRequest{EnvironmentName: "test", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
+				dbData: []ApiProductDetails{
+					ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
+					ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
+				},
+				expectedResult: "api-product-2",
+			}
 
-	{
-		testDesc: "multi-product-match-empty-res-env-proxy-second-indexed",
-		req:      VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
-		dbData: []ApiProductDetails{
-			ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
-			ApiProductDetails{Id: "api-product-2"},
-			ApiProductDetails{Id: "api-product-3", Environments: []string{}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
-		},
-		expectedResult:                     "api-product-2",
-		expectedWhenValidateProxyEnvIsTrue: "api-product-2",
-	},
-	{
-		testDesc: "multi-product-with-no-resource-match",
-		req:      VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
-		dbData: []ApiProductDetails{
-			ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
-			ApiProductDetails{Id: "api-product-2"},
-			ApiProductDetails{Id: "api-product-3", Environments: []string{}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/b/**"}},
-		},
-		expectedResult:                     "api-product-2",
-		expectedWhenValidateProxyEnvIsTrue: "api-product-2",
-	},
-	{
-		testDesc: "multi-product-non-existent-proxy",
-		req:      VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-non-exisitent-proxy", UriPath: "/this-is-my-path"},
-		dbData: []ApiProductDetails{
-			ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
-			ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
-			ApiProductDetails{Id: "api-product-3", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/b/**"}},
-		},
-		expectedResult:                     "api-product-2",
-		expectedWhenValidateProxyEnvIsTrue: "",
-	},
-}
+			actual := shortListApiProduct(td.dbData, td.req)
+			Expect(actual.Id).Should(Equal(td.expectedResult))
+		})
+		It("multi-product-only-one-matches-env", func() {
+			td := shortListApiProductTestDataStruct{
 
-func TestShortListApiProduct(t *testing.T) {
-	for _, td := range shortListApiProductTestData {
-		actual := shortListApiProduct(td.dbData, td.req)
-		if actual.Id != td.expectedResult {
-			t.Errorf("TestData (%s) ValidateProxyEnv (%t) : expected (%s), actual (%s)", td.testDesc, td.req.ValidateAgainstApiProxiesAndEnvs, td.expectedResult, actual.Id)
-		}
-	}
+				req: VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
+				dbData: []ApiProductDetails{
+					ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
+					ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
+					ApiProductDetails{Id: "api-product-3", Environments: []string{"test", "prod", "stage"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
+				},
+				expectedResult: "api-product-3",
+			}
+
+			actual := shortListApiProduct(td.dbData, td.req)
+			Expect(actual.Id).Should(Equal(td.expectedResult))
+		})
+		It("multi-product-match-with-no-env", func() {
+			td := shortListApiProductTestDataStruct{
+
+				req: VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
+				dbData: []ApiProductDetails{
+					ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
+					ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
+					ApiProductDetails{Id: "api-product-3", Environments: []string{}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
+				},
+				expectedResult: "api-product-3",
+			}
+
+			actual := shortListApiProduct(td.dbData, td.req)
+			Expect(actual.Id).Should(Equal(td.expectedResult))
+		})
+		It("multi-product-match-env", func() {
+			td := shortListApiProductTestDataStruct{
+
+				req: VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
+				dbData: []ApiProductDetails{
+					ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
+					ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod", "stage"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/this-is-my-path"}},
+					ApiProductDetails{Id: "api-product-3", Environments: []string{}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
+				},
+
+				expectedResult: "api-product-2",
+			}
+
+			actual := shortListApiProduct(td.dbData, td.req)
+			Expect(actual.Id).Should(Equal(td.expectedResult))
+		})
+
+		It("multi-product-match-empty-res-env-proxy", func() {
+			td := shortListApiProductTestDataStruct{
+
+				req: VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
+				dbData: []ApiProductDetails{
+					ApiProductDetails{Id: "api-product-1"},
+					ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod", "stage"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/this-is-my-path"}},
+					ApiProductDetails{Id: "api-product-3", Environments: []string{}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
+				},
+
+				expectedResult: "api-product-1",
+			}
+
+			actual := shortListApiProduct(td.dbData, td.req)
+			Expect(actual.Id).Should(Equal(td.expectedResult))
+		})
+
+		It("multi-product-match-empty-res-env-proxy-second-indexed", func() {
+			td := shortListApiProductTestDataStruct{
+
+				req: VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
+				dbData: []ApiProductDetails{
+					ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
+					ApiProductDetails{Id: "api-product-2"},
+					ApiProductDetails{Id: "api-product-3", Environments: []string{}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
+				},
+				expectedResult: "api-product-2",
+			}
+
+			actual := shortListApiProduct(td.dbData, td.req)
+			Expect(actual.Id).Should(Equal(td.expectedResult))
+		})
+		It("multi-product-with-no-resource-match", func() {
+			td := shortListApiProductTestDataStruct{
+
+				req: VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-proxy", UriPath: "/this-is-my-path"},
+				dbData: []ApiProductDetails{
+					ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
+					ApiProductDetails{Id: "api-product-2"},
+					ApiProductDetails{Id: "api-product-3", Environments: []string{}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/b/**"}},
+				},
+				expectedResult: "api-product-2",
+			}
+
+			actual := shortListApiProduct(td.dbData, td.req)
+			Expect(actual.Id).Should(Equal(td.expectedResult))
+		})
+		It("multi-product-non-existent-proxy", func() {
+			td := shortListApiProductTestDataStruct{
+
+				req: VerifyApiKeyRequest{EnvironmentName: "stage", ApiProxyName: "test-non-exisitent-proxy", UriPath: "/this-is-my-path"},
+				dbData: []ApiProductDetails{
+					ApiProductDetails{Id: "api-product-1", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/a/**"}},
+					ApiProductDetails{Id: "api-product-2", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/**"}},
+					ApiProductDetails{Id: "api-product-3", Environments: []string{"test", "prod"}, Apiproxies: []string{"test-proxy"}, Resources: []string{"/b/**"}},
+				},
+				expectedResult: "api-product-2",
+			}
+
+			actual := shortListApiProduct(td.dbData, td.req)
+			Expect(actual.Id).Should(Equal(td.expectedResult))
+		})
+	})
+
+})
+
+type shortListApiProductTestDataStruct struct {
+	req            VerifyApiKeyRequest
+	dbData         []ApiProductDetails
+	expectedResult string
 }
diff --git a/api_performValidations_test.go b/api_performValidations_test.go
index c6e015d..cb97eb0 100644
--- a/api_performValidations_test.go
+++ b/api_performValidations_test.go
@@ -18,339 +18,487 @@
 	"encoding/json"
 	"github.com/30x/apid-core"
 	"github.com/30x/apid-core/factory"
-	"testing"
+	. "github.com/onsi/ginkgo"
+	. "github.com/onsi/gomega"
 )
 
-var performValidationsTestData = []struct {
+type performValidationsTestDataStruct struct {
 	testDesc                           string
 	dataWrapper                        VerifyApiKeyRequestResponseDataWrapper
 	expectedResult                     string
 	expectedWhenValidateProxyEnvIsTrue string
-}{
-	{
-		testDesc:                           "happy-path",
-		expectedResult:                     "",
-		expectedWhenValidateProxyEnvIsTrue: "",
-		dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
-			verifyApiKeyRequest: VerifyApiKeyRequest{
-				Key:              "test-key",
-				OrganizationName: "test-org",
-				UriPath:          "/test",
-				ApiProxyName:     "test-proxy-name",
-				EnvironmentName:  "test-env-name",
-			},
-			tempDeveloperDetails: DeveloperDetails{
-				Status: "ACTIVE",
-			},
-			verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
-				ApiProduct: ApiProductDetails{
-					Id:           "test-api-product",
-					Resources:    []string{"/**"},
-					Apiproxies:   []string{"test-proxy-name"},
-					Environments: []string{"test-env-name"},
-					Status:       "APPROVED",
-				},
-				App: AppDetails{
-					Status: "APPROVED",
-				},
-				ClientId: ClientIdDetails{
-					Status: "APPROVED",
-				},
-			},
-		},
-	}, {
-		testDesc:                           "Inactive Developer",
-		expectedResult:                     "{\"response_code\":\"keymanagement.service.DeveloperStatusNotActive\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
-		expectedWhenValidateProxyEnvIsTrue: "{\"response_code\":\"keymanagement.service.DeveloperStatusNotActive\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
-		dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
-			verifyApiKeyRequest: VerifyApiKeyRequest{
-				Key:              "test-key",
-				OrganizationName: "test-org",
-				UriPath:          "/test",
-				ApiProxyName:     "test-proxy-name",
-				EnvironmentName:  "test-env-name",
-			},
-			tempDeveloperDetails: DeveloperDetails{
-				Status: "INACTIVE",
-			},
-			verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
-				ApiProduct: ApiProductDetails{
-					Id:           "test-api-product",
-					Resources:    []string{"/**"},
-					Apiproxies:   []string{"test-proxy-name"},
-					Environments: []string{"test-env-name"},
-					Status:       "APPROVED",
-				},
-				App: AppDetails{
-					Status: "APPROVED",
-				},
-				ClientId: ClientIdDetails{
-					Status: "APPROVED",
-				},
-			},
-		},
-	},
-	{
-		testDesc:                           "Revoked Client Id",
-		expectedResult:                     "{\"response_code\":\"oauth.v2.ApiKeyNotApproved\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
-		expectedWhenValidateProxyEnvIsTrue: "{\"response_code\":\"oauth.v2.ApiKeyNotApproved\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
-		dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
-			verifyApiKeyRequest: VerifyApiKeyRequest{
-				Key:              "test-key",
-				OrganizationName: "test-org",
-				UriPath:          "/test",
-				ApiProxyName:     "test-proxy-name",
-				EnvironmentName:  "test-env-name",
-			},
-			tempDeveloperDetails: DeveloperDetails{
-				Status: "ACTIVE",
-			},
-			verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
-				ApiProduct: ApiProductDetails{
-					Id:           "test-api-product",
-					Resources:    []string{"/**"},
-					Apiproxies:   []string{"test-proxy-name"},
-					Environments: []string{"test-env-name"},
-					Status:       "APPROVED",
-				},
-				App: AppDetails{
-					Status: "APPROVED",
-				},
-				ClientId: ClientIdDetails{
-					Status: "REVOKED",
-				},
-			},
-		},
-	},
-	{
-		testDesc:                           "Revoked App",
-		expectedResult:                     "{\"response_code\":\"keymanagement.service.invalid_client-app_not_approved\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
-		expectedWhenValidateProxyEnvIsTrue: "{\"response_code\":\"keymanagement.service.invalid_client-app_not_approved\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
-		dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
-			verifyApiKeyRequest: VerifyApiKeyRequest{
-				Key:              "test-key",
-				OrganizationName: "test-org",
-				UriPath:          "/test",
-				ApiProxyName:     "test-proxy-name",
-				EnvironmentName:  "test-env-name",
-			},
-			tempDeveloperDetails: DeveloperDetails{
-				Status: "ACTIVE",
-			},
-			verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
-				ApiProduct: ApiProductDetails{
-					Id:           "test-api-product",
-					Resources:    []string{"/**"},
-					Apiproxies:   []string{"test-proxy-name"},
-					Environments: []string{"test-env-name"},
-					Status:       "APPROVED",
-				},
-				App: AppDetails{
-					Status: "REVOKED",
-				},
-				ClientId: ClientIdDetails{
-					Status: "APPROVED",
-				},
-			},
-		},
-	},
-	{
-		testDesc:                           "Company Inactive",
-		expectedResult:                     "{\"response_code\":\"keymanagement.service.CompanyStatusNotActive\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
-		expectedWhenValidateProxyEnvIsTrue: "{\"response_code\":\"keymanagement.service.CompanyStatusNotActive\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
-		dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
-			ctype: "company",
-			verifyApiKeyRequest: VerifyApiKeyRequest{
-				Key:              "test-key",
-				OrganizationName: "test-org",
-				UriPath:          "/test",
-				ApiProxyName:     "test-proxy-name",
-				EnvironmentName:  "test-env-name",
-			},
-			tempDeveloperDetails: DeveloperDetails{
-				Status: "INACTIVE",
-			},
-			verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
-				ApiProduct: ApiProductDetails{
-					Id:           "test-api-product",
-					Resources:    []string{"/**"},
-					Apiproxies:   []string{"test-proxy-name"},
-					Environments: []string{"test-env-name"},
-					Status:       "APPROVED",
-				},
-				App: AppDetails{
-					Status: "APPROVED",
-				},
-				ClientId: ClientIdDetails{
-					Status: "APPROVED",
-				},
-			},
-		},
-	},
-	{
-		testDesc:                           "Product not resolved",
-		expectedResult:                     "{\"response_code\":\"oauth.v2.InvalidApiKeyForGivenResource\",\"response_message\":\"Path Validation Failed. Product not resolved\"}",
-		expectedWhenValidateProxyEnvIsTrue: "{\"response_code\":\"oauth.v2.InvalidApiKeyForGivenResource\",\"response_message\":\"Path Validation Failed. Product not resolved\"}",
-		dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
-			verifyApiKeyRequest: VerifyApiKeyRequest{
-				Key:              "test-key",
-				OrganizationName: "test-org",
-				UriPath:          "/test",
-				ApiProxyName:     "test-proxy-name",
-				EnvironmentName:  "test-env-name",
-			},
-			tempDeveloperDetails: DeveloperDetails{
-				Status: "ACTIVE",
-			},
-			verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
-				ApiProduct: ApiProductDetails{},
-				App: AppDetails{
-					Status: "APPROVED",
-				},
-				ClientId: ClientIdDetails{
-					Status: "APPROVED",
-				},
-			},
-		},
-	},
-	{
-		testDesc:                           "resources not configured in db",
-		expectedResult:                     "",
-		expectedWhenValidateProxyEnvIsTrue: "",
-		dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
-			verifyApiKeyRequest: VerifyApiKeyRequest{
-				Key:              "test-key",
-				OrganizationName: "test-org",
-				UriPath:          "/test",
-				ApiProxyName:     "test-proxy-name",
-				EnvironmentName:  "test-env-name",
-			},
-			tempDeveloperDetails: DeveloperDetails{
-				Status: "ACTIVE",
-			},
-			verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
-				ApiProduct: ApiProductDetails{
-					Id:           "test-api-product",
-					Resources:    []string{},
-					Apiproxies:   []string{"test-proxy-name"},
-					Environments: []string{"test-env-name"},
-					Status:       "APPROVED",
-				},
-				App: AppDetails{
-					Status: "APPROVED",
-				},
-				ClientId: ClientIdDetails{
-					Status: "APPROVED",
-				},
-			},
-		},
-	},
-	{
-		testDesc:                           "proxies not configured in db",
-		expectedResult:                     "",
-		expectedWhenValidateProxyEnvIsTrue: "",
-		dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
-			verifyApiKeyRequest: VerifyApiKeyRequest{
-				Key:              "test-key",
-				OrganizationName: "test-org",
-				UriPath:          "/test",
-				ApiProxyName:     "test-proxy-name",
-				EnvironmentName:  "test-env-name",
-			},
-			tempDeveloperDetails: DeveloperDetails{
-				Status: "ACTIVE",
-			},
-			verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
-				ApiProduct: ApiProductDetails{
-					Id:           "test-api-product",
-					Resources:    []string{"/test"},
-					Apiproxies:   []string{},
-					Environments: []string{"test-env-name"},
-					Status:       "APPROVED",
-				},
-				App: AppDetails{
-					Status: "APPROVED",
-				},
-				ClientId: ClientIdDetails{
-					Status: "APPROVED",
-				},
-			},
-		},
-	},
-	{
-		testDesc:                           "environments not configured in db",
-		expectedResult:                     "",
-		expectedWhenValidateProxyEnvIsTrue: "",
-		dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
-			verifyApiKeyRequest: VerifyApiKeyRequest{
-				Key:              "test-key",
-				OrganizationName: "test-org",
-				UriPath:          "/test",
-				ApiProxyName:     "test-proxy-name",
-				EnvironmentName:  "test-env-name",
-			},
-			tempDeveloperDetails: DeveloperDetails{
-				Status: "ACTIVE",
-			},
-			verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
-				ApiProduct: ApiProductDetails{
-					Id:           "test-api-product",
-					Resources:    []string{"/test"},
-					Apiproxies:   []string{"test-proxy-name"},
-					Environments: []string{},
-					Status:       "APPROVED",
-				},
-				App: AppDetails{
-					Status: "APPROVED",
-				},
-				ClientId: ClientIdDetails{
-					Status: "APPROVED",
-				},
-			},
-		},
-	},
 }
 
-func TestPerformValidation(t *testing.T) {
+var _ = Describe("performValidationsTest", func() {
 
-	// tODO : what is the right way to get this ?
 	apid.Initialize(factory.DefaultServicesFactory())
 	log = factory.DefaultServicesFactory().Log()
 	a := apiManager{}
-	for _, td := range performValidationsTestData {
-		actualObject := a.performValidations(td.dataWrapper)
-		var actual string
-		if actualObject != nil {
-			a, _ := json.Marshal(&actualObject)
-			actual = string(a)
-		} else {
-			actual = ""
-		}
-		if string(actual) != td.expectedResult {
-			t.Errorf("TestData (%s) ValidateProxyEnv (%t) : expected (%s), actual (%s)", td.testDesc, td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs, td.expectedResult, actual)
-		}
-	}
-}
 
-func TestPerformValidationValidateProxyEnv(t *testing.T) {
+	Context("performValidationsTest tests", func() {
+		It("happy-path", func() {
+			td := performValidationsTestDataStruct{
+				expectedResult:                     "",
+				expectedWhenValidateProxyEnvIsTrue: "",
+				dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
+					verifyApiKeyRequest: VerifyApiKeyRequest{
+						Key:              "test-key",
+						OrganizationName: "test-org",
+						UriPath:          "/test",
+						ApiProxyName:     "test-proxy-name",
+						EnvironmentName:  "test-env-name",
+					},
+					tempDeveloperDetails: DeveloperDetails{
+						Status: "ACTIVE",
+					},
+					verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
+						ApiProduct: ApiProductDetails{
+							Id:           "test-api-product",
+							Resources:    []string{"/**"},
+							Apiproxies:   []string{"test-proxy-name"},
+							Environments: []string{"test-env-name"},
+							Status:       "APPROVED",
+						},
+						App: AppDetails{
+							Status: "APPROVED",
+						},
+						ClientId: ClientIdDetails{
+							Status: "APPROVED",
+						},
+					},
+				},
+			}
+			actualObject := a.performValidations(td.dataWrapper)
+			var actual string
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
 
-	// tODO : what is the right way to get this ?
-	apid.Initialize(factory.DefaultServicesFactory())
-	log = factory.DefaultServicesFactory().Log()
-	a := apiManager{}
-	for _, td := range performValidationsTestData {
-		td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs = true
-		actualObject := a.performValidations(td.dataWrapper)
-		var actual string
-		if actualObject != nil {
-			a, _ := json.Marshal(&actualObject)
-			actual = string(a)
-		} else {
-			actual = ""
-		}
-		if string(actual) != td.expectedWhenValidateProxyEnvIsTrue {
+			td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs = true
+			actualObject = a.performValidations(td.dataWrapper)
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+		})
+		It("Inactive Developer", func() {
+			td := performValidationsTestDataStruct{
+				expectedResult:                     "{\"response_code\":\"keymanagement.service.DeveloperStatusNotActive\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
+				expectedWhenValidateProxyEnvIsTrue: "{\"response_code\":\"keymanagement.service.DeveloperStatusNotActive\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
+				dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
+					verifyApiKeyRequest: VerifyApiKeyRequest{
+						Key:              "test-key",
+						OrganizationName: "test-org",
+						UriPath:          "/test",
+						ApiProxyName:     "test-proxy-name",
+						EnvironmentName:  "test-env-name",
+					},
+					tempDeveloperDetails: DeveloperDetails{
+						Status: "INACTIVE",
+					},
+					verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
+						ApiProduct: ApiProductDetails{
+							Id:           "test-api-product",
+							Resources:    []string{"/**"},
+							Apiproxies:   []string{"test-proxy-name"},
+							Environments: []string{"test-env-name"},
+							Status:       "APPROVED",
+						},
+						App: AppDetails{
+							Status: "APPROVED",
+						},
+						ClientId: ClientIdDetails{
+							Status: "APPROVED",
+						},
+					},
+				},
+			}
+			actualObject := a.performValidations(td.dataWrapper)
+			var actual string
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
 
-			t.Errorf("TestData (%s) ValidateProxyEnv (%t) : expected (%s), actual (%s)", td.testDesc, td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs, td.expectedWhenValidateProxyEnvIsTrue, actual)
-		}
-	}
-}
+			td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs = true
+			actualObject = a.performValidations(td.dataWrapper)
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+		})
+		It("Revoked Client Id", func() {
+			td := performValidationsTestDataStruct{
+				expectedResult:                     "{\"response_code\":\"oauth.v2.ApiKeyNotApproved\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
+				expectedWhenValidateProxyEnvIsTrue: "{\"response_code\":\"oauth.v2.ApiKeyNotApproved\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
+				dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
+					verifyApiKeyRequest: VerifyApiKeyRequest{
+						Key:              "test-key",
+						OrganizationName: "test-org",
+						UriPath:          "/test",
+						ApiProxyName:     "test-proxy-name",
+						EnvironmentName:  "test-env-name",
+					},
+					tempDeveloperDetails: DeveloperDetails{
+						Status: "ACTIVE",
+					},
+					verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
+						ApiProduct: ApiProductDetails{
+							Id:           "test-api-product",
+							Resources:    []string{"/**"},
+							Apiproxies:   []string{"test-proxy-name"},
+							Environments: []string{"test-env-name"},
+							Status:       "APPROVED",
+						},
+						App: AppDetails{
+							Status: "APPROVED",
+						},
+						ClientId: ClientIdDetails{
+							Status: "REVOKED",
+						},
+					},
+				},
+			}
+			actualObject := a.performValidations(td.dataWrapper)
+			var actual string
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+
+			td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs = true
+			actualObject = a.performValidations(td.dataWrapper)
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+		})
+		It("Revoked App", func() {
+			td := performValidationsTestDataStruct{
+				expectedResult:                     "{\"response_code\":\"keymanagement.service.invalid_client-app_not_approved\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
+				expectedWhenValidateProxyEnvIsTrue: "{\"response_code\":\"keymanagement.service.invalid_client-app_not_approved\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
+				dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
+					verifyApiKeyRequest: VerifyApiKeyRequest{
+						Key:              "test-key",
+						OrganizationName: "test-org",
+						UriPath:          "/test",
+						ApiProxyName:     "test-proxy-name",
+						EnvironmentName:  "test-env-name",
+					},
+					tempDeveloperDetails: DeveloperDetails{
+						Status: "ACTIVE",
+					},
+					verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
+						ApiProduct: ApiProductDetails{
+							Id:           "test-api-product",
+							Resources:    []string{"/**"},
+							Apiproxies:   []string{"test-proxy-name"},
+							Environments: []string{"test-env-name"},
+							Status:       "APPROVED",
+						},
+						App: AppDetails{
+							Status: "REVOKED",
+						},
+						ClientId: ClientIdDetails{
+							Status: "APPROVED",
+						},
+					},
+				},
+			}
+			actualObject := a.performValidations(td.dataWrapper)
+			var actual string
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+
+			td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs = true
+			actualObject = a.performValidations(td.dataWrapper)
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+		})
+		It("Company Inactive", func() {
+			td := performValidationsTestDataStruct{
+				expectedResult:                     "{\"response_code\":\"keymanagement.service.CompanyStatusNotActive\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
+				expectedWhenValidateProxyEnvIsTrue: "{\"response_code\":\"keymanagement.service.CompanyStatusNotActive\",\"response_message\":\"API Key verify failed for (test-key, test-org)\"}",
+				dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
+					ctype: "company",
+					verifyApiKeyRequest: VerifyApiKeyRequest{
+						Key:              "test-key",
+						OrganizationName: "test-org",
+						UriPath:          "/test",
+						ApiProxyName:     "test-proxy-name",
+						EnvironmentName:  "test-env-name",
+					},
+					tempDeveloperDetails: DeveloperDetails{
+						Status: "INACTIVE",
+					},
+					verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
+						ApiProduct: ApiProductDetails{
+							Id:           "test-api-product",
+							Resources:    []string{"/**"},
+							Apiproxies:   []string{"test-proxy-name"},
+							Environments: []string{"test-env-name"},
+							Status:       "APPROVED",
+						},
+						App: AppDetails{
+							Status: "APPROVED",
+						},
+						ClientId: ClientIdDetails{
+							Status: "APPROVED",
+						},
+					},
+				},
+			}
+			actualObject := a.performValidations(td.dataWrapper)
+			var actual string
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+
+			td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs = true
+			actualObject = a.performValidations(td.dataWrapper)
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+		})
+		It("Product not resolved", func() {
+			td := performValidationsTestDataStruct{
+				expectedResult:                     "{\"response_code\":\"oauth.v2.InvalidApiKeyForGivenResource\",\"response_message\":\"Path Validation Failed. Product not resolved\"}",
+				expectedWhenValidateProxyEnvIsTrue: "{\"response_code\":\"oauth.v2.InvalidApiKeyForGivenResource\",\"response_message\":\"Path Validation Failed. Product not resolved\"}",
+				dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
+					verifyApiKeyRequest: VerifyApiKeyRequest{
+						Key:              "test-key",
+						OrganizationName: "test-org",
+						UriPath:          "/test",
+						ApiProxyName:     "test-proxy-name",
+						EnvironmentName:  "test-env-name",
+					},
+					tempDeveloperDetails: DeveloperDetails{
+						Status: "ACTIVE",
+					},
+					verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
+						ApiProduct: ApiProductDetails{},
+						App: AppDetails{
+							Status: "APPROVED",
+						},
+						ClientId: ClientIdDetails{
+							Status: "APPROVED",
+						},
+					},
+				},
+			}
+			actualObject := a.performValidations(td.dataWrapper)
+			var actual string
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+
+			td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs = true
+			actualObject = a.performValidations(td.dataWrapper)
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+		})
+		It("resources not configured in db", func() {
+			td := performValidationsTestDataStruct{
+				expectedResult:                     "",
+				expectedWhenValidateProxyEnvIsTrue: "",
+				dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
+					verifyApiKeyRequest: VerifyApiKeyRequest{
+						Key:              "test-key",
+						OrganizationName: "test-org",
+						UriPath:          "/test",
+						ApiProxyName:     "test-proxy-name",
+						EnvironmentName:  "test-env-name",
+					},
+					tempDeveloperDetails: DeveloperDetails{
+						Status: "ACTIVE",
+					},
+					verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
+						ApiProduct: ApiProductDetails{
+							Id:           "test-api-product",
+							Resources:    []string{},
+							Apiproxies:   []string{"test-proxy-name"},
+							Environments: []string{"test-env-name"},
+							Status:       "APPROVED",
+						},
+						App: AppDetails{
+							Status: "APPROVED",
+						},
+						ClientId: ClientIdDetails{
+							Status: "APPROVED",
+						},
+					},
+				},
+			}
+			actualObject := a.performValidations(td.dataWrapper)
+			var actual string
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+
+			td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs = true
+			actualObject = a.performValidations(td.dataWrapper)
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+		})
+		It("proxies not configured in db", func() {
+			td := performValidationsTestDataStruct{
+				expectedResult:                     "",
+				expectedWhenValidateProxyEnvIsTrue: "",
+				dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
+					verifyApiKeyRequest: VerifyApiKeyRequest{
+						Key:              "test-key",
+						OrganizationName: "test-org",
+						UriPath:          "/test",
+						ApiProxyName:     "test-proxy-name",
+						EnvironmentName:  "test-env-name",
+					},
+					tempDeveloperDetails: DeveloperDetails{
+						Status: "ACTIVE",
+					},
+					verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
+						ApiProduct: ApiProductDetails{
+							Id:           "test-api-product",
+							Resources:    []string{"/test"},
+							Apiproxies:   []string{},
+							Environments: []string{"test-env-name"},
+							Status:       "APPROVED",
+						},
+						App: AppDetails{
+							Status: "APPROVED",
+						},
+						ClientId: ClientIdDetails{
+							Status: "APPROVED",
+						},
+					},
+				},
+			}
+			actualObject := a.performValidations(td.dataWrapper)
+			var actual string
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+
+			td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs = true
+			actualObject = a.performValidations(td.dataWrapper)
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+		})
+		It("environments not configured in db", func() {
+			td := performValidationsTestDataStruct{
+				expectedResult:                     "",
+				expectedWhenValidateProxyEnvIsTrue: "",
+				dataWrapper: VerifyApiKeyRequestResponseDataWrapper{
+					verifyApiKeyRequest: VerifyApiKeyRequest{
+						Key:              "test-key",
+						OrganizationName: "test-org",
+						UriPath:          "/test",
+						ApiProxyName:     "test-proxy-name",
+						EnvironmentName:  "test-env-name",
+					},
+					tempDeveloperDetails: DeveloperDetails{
+						Status: "ACTIVE",
+					},
+					verifyApiKeySuccessResponse: VerifyApiKeySuccessResponse{
+						ApiProduct: ApiProductDetails{
+							Id:           "test-api-product",
+							Resources:    []string{"/test"},
+							Apiproxies:   []string{"test-proxy-name"},
+							Environments: []string{},
+							Status:       "APPROVED",
+						},
+						App: AppDetails{
+							Status: "APPROVED",
+						},
+						ClientId: ClientIdDetails{
+							Status: "APPROVED",
+						},
+					},
+				},
+			}
+			actualObject := a.performValidations(td.dataWrapper)
+			var actual string
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+
+			td.dataWrapper.verifyApiKeyRequest.ValidateAgainstApiProxiesAndEnvs = true
+			actualObject = a.performValidations(td.dataWrapper)
+			if actualObject != nil {
+				a, _ := json.Marshal(&actualObject)
+				actual = string(a)
+			} else {
+				actual = ""
+			}
+			Expect(actual).Should(Equal(td.expectedResult))
+		})
+
+	})
+})
diff --git a/api_test.go b/api_test.go
new file mode 100644
index 0000000..5b1df1d
--- /dev/null
+++ b/api_test.go
@@ -0,0 +1,20 @@
+// 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
+
+// TODO: end to end IT tests
+// 1. happy path for developer
+// 2. happy path for company
+// 3. error case for developer / company
+// 4. input request validation error case
diff --git a/data.go b/data.go
index 6270b43..dc9ea93 100644
--- a/data.go
+++ b/data.go
@@ -22,9 +22,10 @@
 )
 
 type dbManager struct {
-	data  apid.DataService
-	db    apid.DB
-	dbMux sync.RWMutex
+	data      apid.DataService
+	db        apid.DB
+	dbMux     sync.RWMutex
+	dbVersion string
 }
 
 func (dbc *dbManager) setDbVersion(version string) {
@@ -35,6 +36,8 @@
 	dbc.dbMux.Lock()
 	dbc.db = db
 	dbc.dbMux.Unlock()
+	dbc.dbVersion = version
+	// TODO : check if we need to release old db here...
 }
 
 func (dbc *dbManager) getDb() apid.DB {
@@ -51,10 +54,15 @@
 	return nil
 }
 
+func (dbc *dbManager) getDbVersion() string {
+	return dbc.dbVersion
+}
+
 type dbManagerInterface interface {
 	setDbVersion(string)
 	initDb() error
 	getDb() apid.DB
+	getDbVersion() string
 	getKmsAttributes(tenantId string, entities ...string) map[string][]Attribute
 	getApiKeyDetails(dataWrapper *VerifyApiKeyRequestResponseDataWrapper) error
 }
@@ -94,7 +102,7 @@
 
 	db := dbc.db
 
-	err := db.QueryRow(sql_GET_API_KEY_DETAILS_SQL , dataWrapper.verifyApiKeyRequest.Key, dataWrapper.verifyApiKeyRequest.OrganizationName).
+	err := db.QueryRow(sql_GET_API_KEY_DETAILS_SQL, dataWrapper.verifyApiKeyRequest.Key, dataWrapper.verifyApiKeyRequest.OrganizationName).
 		Scan(
 			&dataWrapper.ctype,
 			&dataWrapper.tenant_id,
diff --git a/data_test.go b/data_test.go
new file mode 100644
index 0000000..1d20e31
--- /dev/null
+++ b/data_test.go
@@ -0,0 +1,67 @@
+// 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/30x/apid-core"
+	. "github.com/onsi/gomega"
+)
+
+// TODO: sql tests
+// 1. get api key sql test.. verify all fields, json to array conversions
+// 2. get api - no row should return proper error
+// 3. get attributes query tests
+// 4. get attributes with all empty results returned
+// 5. get product with no results
+// 6. get product with status != approved
+// 7. get products happy path
+
+//initialize DB for tests
+func initTestDb(db apid.DB) {
+	_, err := db.Exec(`CREATE TABLE kms_organization (id text,name text,display_name text,type text,tenant_id text,customer_id text,description text,created_at blob,created_by text,updated_at blob,updated_by text,_change_selector text, primary key (id,tenant_id));`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`INSERT INTO "kms_organization" VALUES('85629786-37c5-4e8c-bb45-208f3360d005','apigee-mcrosrvc-client0001','apigee-mcrosrvc-client0001','trial','bc811169','2277ba6c-8991-4a38-a5fc-12d8d36e5812','','2017-07-03 19:21:09.388+00:00','defaultUser','2017-07-05 16:24:35.413+00:00','rajanish@apigee.com','bc811169');`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`CREATE TABLE kms_company (id text,tenant_id text,name text,display_name text,status text,created_at blob,created_by text,updated_at blob,updated_by text,_change_selector text, primary key (id,tenant_id));`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`INSERT INTO "kms_company" VALUES('7834c683-9453-4389-b816-34ca24dfccd9','bc811169','DevCompany','East India Company','ACTIVE','2017-08-05 19:54:12.359+00:00','defaultUser','2017-08-05 19:54:12.359+00:00','defaultUser','bc811169');`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(``)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`CREATE TABLE kms_app (id text,tenant_id text,name text,display_name text,access_type text,callback_url text,status text,app_family text,company_id text,developer_id text,parent_id text,type text,created_at blob,created_by text,updated_at blob,updated_by text,_change_selector text, primary key (id,tenant_id));`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`INSERT INTO "kms_app" VALUES('d371f05a-7c04-430c-b12d-26cf4e4d5d65','bc811169','CompApp2','','READ','www.apple.com','APPROVED','default','7834c683-9453-4389-b816-34ca24dfccd9','','7834c683-9453-4389-b816-34ca24dfccd9','COMPANY','2017-08-07 17:00:54.25+00:00','defaultUser','2017-08-07 17:09:08.259+00:00','defaultUser','bc811169');`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(``)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`CREATE TABLE kms_app_credential (id text,tenant_id text,consumer_secret text,app_id text,method_type text,status text,issued_at blob,expires_at blob,app_status text,scopes text,created_at blob,created_by text,updated_at blob,updated_by text,_change_selector text, primary key (id,tenant_id));`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`INSERT INTO "kms_app_credential" VALUES('63tHSNLKJkcc6GENVWGT1Zw5gek7kVJ0','bc811169','Ui8dcyGW3lA04YdX','d371f05a-7c04-430c-b12d-26cf4e4d5d65','','APPROVED','2017-08-07 17:00:54.258+00:00','','','{DELETE}','2017-08-07 17:00:54.258+00:00','-NA-','2017-08-07 17:06:06.242+00:00','-NA-','bc811169');`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(``)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`CREATE TABLE kms_app_credential_apiproduct_mapper (tenant_id text,appcred_id text,app_id text,apiprdt_id text,status text,_change_selector text, primary key (tenant_id,appcred_id,app_id,apiprdt_id));`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`INSERT INTO "kms_app_credential_apiproduct_mapper" VALUES('bc811169','63tHSNLKJkcc6GENVWGT1Zw5gek7kVJ0','d371f05a-7c04-430c-b12d-26cf4e4d5d65','b6c9fa49-35d6-48b2-b5f5-99dd3953bd18','APPROVED','bc811169');`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(``)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`CREATE TABLE kms_attributes (tenant_id text,entity_id text,cust_id text,org_id text,dev_id text,comp_id text,apiprdt_id text,app_id text,appcred_id text,name text,type text,value text,_change_selector text, primary key (tenant_id,entity_id,name,type));`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`INSERT INTO "kms_attributes" VALUES('bc811169','d371f05a-7c04-430c-b12d-26cf4e4d5d65','','','','','','d371f05a-7c04-430c-b12d-26cf4e4d5d65','','Company','APP','Apple','bc811169');`)
+	Expect(err).Should(Succeed())
+	_, err = db.Exec(`INSERT INTO "kms_attributes" VALUES('bc811169','7834c683-9453-4389-b816-34ca24dfccd9','','','','7834c683-9453-4389-b816-34ca24dfccd9','','','','country','COMPANY','england','bc811169');`)
+	Expect(err).Should(Succeed())
+
+}
diff --git a/listener.go b/listener.go
index 416c557..2d2077e 100644
--- a/listener.go
+++ b/listener.go
@@ -26,7 +26,6 @@
 type apigeeSyncHandler struct {
 	dbMan  dbManagerInterface
 	apiMan apiManager
-	closed bool
 }
 
 func (h *apigeeSyncHandler) initListener(services apid.Services) {
diff --git a/listener_test.go b/listener_test.go
index dc3cd34..78ea736 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -16,63 +16,75 @@
 
 import (
 	"github.com/30x/apid-core"
+	"github.com/30x/apid-core/factory"
 	"github.com/apigee-labs/transicator/common"
 	. "github.com/onsi/ginkgo"
-	//. "github.com/onsi/gomega"
-	//"github.com/30x/apid-core/data"
+	. "github.com/onsi/gomega"
+	"io/ioutil"
+	"os"
+	"sync"
 )
 
 var _ = Describe("listener", func() {
 
-	Context("KMS create/updates verification via changes for Developer", func() {
+	var listnerTestSyncHandler apigeeSyncHandler
+	var listnerTestTempDir string
+	var _ = BeforeEach(func() {
+		var err error
+		listnerTestTempDir, err = ioutil.TempDir("", "listner_test")
+		s := factory.DefaultServicesFactory()
+		apid.Initialize(s)
+		config := apid.Config()
+		config.Set("data_path", listnerTestTempDir)
+		Expect(err).NotTo(HaveOccurred())
 
-		handler := apigeeSyncHandler{}
+		apid.InitializePlugins("")
+
+		db, err := apid.Data().DB()
+		Expect(err).NotTo(HaveOccurred())
+
+		dbMan := &dbManager{
+			data:  s.Data(),
+			dbMux: sync.RWMutex{},
+			db:    db,
+		}
+		dbMan.initDb()
+
+		listnerTestSyncHandler = apigeeSyncHandler{
+			dbMan:  dbMan,
+			apiMan: apiManager{},
+		}
+
+		listnerTestSyncHandler.initListener(s)
+	})
+
+	var _ = AfterEach(func() {
+		os.RemoveAll(listnerTestTempDir)
+	})
+
+	Context("Apigee Sync Event Processing", func() {
 
 		It("should set DB to appropriate version", func() {
-
-			//saveDb := handler.dbMan.getDb()
-
 			s := &common.Snapshot{
 				SnapshotInfo: "test_snapshot",
 				Tables:       []common.Table{},
 			}
+			listnerTestSyncHandler.Handle(s)
+			Expect(listnerTestSyncHandler.dbMan.getDbVersion()).Should(BeEquivalentTo(s.SnapshotInfo))
 
-			handler.Handle(s)
+		})
 
-			//expectedDB, err := handler.dbMan.data.DBVersion(s.SnapshotInfo)
-			//Expect(err).NotTo(HaveOccurred())
-			//
-			//Expect(getDB() == expectedDB).Should(BeTrue())
-			//
-			////restore the db to the valid one
-			//setDB(saveDb)
+		It("should not change version for chang event", func() {
+
+			version := listnerTestSyncHandler.dbMan.getDbVersion()
+			s := &common.Change{
+				ChangeSequence: 12321,
+				Table:          "",
+			}
+			testSyncHandler.Handle(s)
+			Expect(listnerTestSyncHandler.dbMan.getDbVersion() == version).Should(BeTrue())
+
 		})
 
 	})
 })
-
-func addScopes(db apid.DB) {
-	txn, _ := db.Begin()
-	txn.Exec("INSERT INTO EDGEX_DATA_SCOPE (id, _change_selector, apid_cluster_id, scope, org, env) "+
-		"VALUES"+
-		"($1,$2,$3,$4,$5,$6)",
-		"ABCDE",
-		"some_cluster_id",
-		"some_cluster_id",
-		"tenant_id_xxxx",
-		"test_org0",
-		"Env_0",
-	)
-	txn.Exec("INSERT INTO EDGEX_DATA_SCOPE (id, _change_selector, apid_cluster_id, scope, org, env) "+
-		"VALUES"+
-		"($1,$2,$3,$4,$5,$6)",
-		"XYZ",
-		"test_org0",
-		"somecluster_id",
-		"tenant_id_0",
-		"test_org0",
-		"Env_0",
-	)
-	log.Info("Inserted EDGEX_DATA_SCOPE for test")
-	txn.Commit()
-}
diff --git a/sqlQueries.go b/sqlQueries.go
index 609c3b3..3d121b0 100644
--- a/sqlQueries.go
+++ b/sqlQueries.go
@@ -109,7 +109,6 @@
 				AND o.name = $2)
 		;`
 
-
 const sql_GET_API_PRODUCTS_FOR_KEY_SQL = `
 			SELECT
 				COALESCE(ap.id,"") as prod_id,
@@ -131,12 +130,13 @@
 					ON mp.appcred_id = c.id
 				INNER JOIN KMS_API_PRODUCT as ap
 					ON ap.id = mp.apiprdt_id
-			WHERE 	(mp.apiprdt_id = ap.id
+			WHERE 	(
+				mp.apiprdt_id = ap.id
 				AND mp.appcred_id = c.id
+				AND mp.status = 'APPROVED'
 				AND c.id = $1
 				AND ap.tenant_id = $2
-				AND mp.status = 'APPROVED')
+				)
 		;`
 
-
 const sql_GET_KMS_ATTRIBUTES_FOR_TENANT = "select entity_id, name, value from kms_attributes where tenant_id = $1"
diff --git a/test_helper.go b/test_helper.go
index de2db79..4c1a026 100644
--- a/test_helper.go
+++ b/test_helper.go
@@ -252,3 +252,29 @@
 		log.Panic("Unable to initialize DB", err)
 	}
 }
+
+func addScopes(db apid.DB) {
+	txn, _ := db.Begin()
+	txn.Exec("INSERT INTO EDGEX_DATA_SCOPE (id, _change_selector, apid_cluster_id, scope, org, env) "+
+		"VALUES"+
+		"($1,$2,$3,$4,$5,$6)",
+		"ABCDE",
+		"some_cluster_id",
+		"some_cluster_id",
+		"tenant_id_xxxx",
+		"test_org0",
+		"Env_0",
+	)
+	txn.Exec("INSERT INTO EDGEX_DATA_SCOPE (id, _change_selector, apid_cluster_id, scope, org, env) "+
+		"VALUES"+
+		"($1,$2,$3,$4,$5,$6)",
+		"XYZ",
+		"test_org0",
+		"somecluster_id",
+		"tenant_id_0",
+		"test_org0",
+		"Env_0",
+	)
+	log.Info("Inserted EDGEX_DATA_SCOPE for test")
+	txn.Commit()
+}
diff --git a/validate_env_test.go b/validate_env_test.go
deleted file mode 100644
index 024e26b..0000000
--- a/validate_env_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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"
-)
-
-var _ = Describe("Validate Env", func() {
-
-	It("validation1", func() {
-		s := contains([]string{"foo", "bar"}, "foo")
-		Expect(s).Should(BeTrue())
-	})
-	It("validation2", func() {
-		s := contains([]string{"foo", "bar"}, "bar")
-		Expect(s).Should(BeTrue())
-	})
-	It("validation3", func() {
-		s := contains([]string{"foo", "bar"}, "xxx")
-		Expect(s).Should(BeFalse())
-	})
-	It("validation4", func() {
-		s := contains([]string{}, "xxx")
-		Expect(s).Should(BeFalse())
-	})
-})
diff --git a/verifyApiKeyUtil.go b/verifyApiKeyUtil.go
index 16d0936..a7d2451 100644
--- a/verifyApiKeyUtil.go
+++ b/verifyApiKeyUtil.go
@@ -58,7 +58,7 @@
 
 func jsonToStringArray(fjson string) []string {
 	var array []string
-	if err := json.Unmarshal([]byte(fjson), array); err == nil {
+	if err := json.Unmarshal([]byte(fjson), &array); err == nil {
 		return array
 	}
 	s := strings.TrimPrefix(fjson, "{")
diff --git a/verifyApiKeyUtil_test.go b/verifyApiKeyUtil_test.go
new file mode 100644
index 0000000..4e17289
--- /dev/null
+++ b/verifyApiKeyUtil_test.go
@@ -0,0 +1,70 @@
+// 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"
+	"reflect"
+)
+
+var _ = Describe("Validate Env", func() {
+
+	It("validation1", func() {
+		s := contains([]string{"foo", "bar"}, "foo")
+		Expect(s).Should(BeTrue())
+	})
+	It("validation2", func() {
+		s := contains([]string{"foo", "bar"}, "bar")
+		Expect(s).Should(BeTrue())
+	})
+	It("validation3", func() {
+		s := contains([]string{"foo", "bar"}, "xxx")
+		Expect(s).Should(BeFalse())
+	})
+	It("validation4", func() {
+		s := contains([]string{}, "xxx")
+		Expect(s).Should(BeFalse())
+	})
+})
+
+var _ = Describe("Validate jsonToStringArray", func() {
+
+	It("should tranform simple valid json", func() {
+		array := jsonToStringArray("[\"test-1\", \"test-2\"]")
+		Expect(reflect.DeepEqual(array, []string{"test-1", "test-2"})).Should(BeTrue())
+	})
+	It("should tranform simple single valid json", func() {
+		array := jsonToStringArray("[\"test-1\"]")
+		Expect(reflect.DeepEqual(array, []string{"test-1"})).Should(BeTrue())
+	})
+	It("should tranform simple fake json", func() {
+		s := jsonToStringArray("{test-1,test-2}")
+		Expect(reflect.DeepEqual(s, []string{"test-1", "test-2"})).Should(BeTrue())
+	})
+	It("should tranform simple single valued fake json", func() {
+		s := jsonToStringArray("{test-1}")
+		Expect(reflect.DeepEqual(s, []string{"test-1"})).Should(BeTrue())
+	})
+	It("space between fields considered as valid char", func() {
+		s := jsonToStringArray("{test-1, test-2}")
+		Expect(reflect.DeepEqual(s, []string{"test-1", " test-2"})).Should(BeTrue())
+	})
+	It("remove only last braces", func() {
+		s := jsonToStringArray("{test-1,test-2}}")
+		Expect(reflect.DeepEqual(s, []string{"test-1", "test-2}"})).Should(BeTrue())
+	})
+
+})
diff --git a/validate_path_test.go b/verifyApiKeyUtil_validate_path_test.go
similarity index 78%
rename from validate_path_test.go
rename to verifyApiKeyUtil_validate_path_test.go
index 563b52c..eb91d8f 100644
--- a/validate_path_test.go
+++ b/verifyApiKeyUtil_validate_path_test.go
@@ -54,7 +54,7 @@
 		Expect(s).Should(BeTrue())
 	})
 	It("validation9", func() {
-		s := validatePath([]string{"{/foo/**"}, "/foo/bar")
+		s := validatePath([]string{"/foo/**"}, "/foo/bar")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation10", func() {
@@ -62,7 +62,7 @@
 		Expect(s).Should(BeFalse())
 	})
 	It("validation11", func() {
-		s := validatePath([]string{"{/foo/bar/**"}, "/foo/bar/xx/yy")
+		s := validatePath([]string{"/foo/bar/**"}, "/foo/bar/xx/yy")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation12", func() {
@@ -70,39 +70,39 @@
 		Expect(s).Should(BeTrue())
 	})
 	It("validation13", func() {
-		s := validatePath([]string{"{/foo/bar/*/"}, "/foo/bar/xxx")
+		s := validatePath([]string{"/foo/bar/*/"}, "/foo/bar/xxx")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation14", func() {
-		s := validatePath([]string{"{/foo/bar/**"}, "/foo/bar/xx/yy")
+		s := validatePath([]string{"/foo/bar/**"}, "/foo/bar/xx/yy")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation15", func() {
-		s := validatePath([]string{"{/foo/*/**/"}, "/foo/bar")
+		s := validatePath([]string{"/foo/*/**/"}, "/foo/bar")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation16", func() {
-		s := validatePath([]string{"{/foo/bar/*/xxx"}, "/foo/bar/yyy/xxx")
+		s := validatePath([]string{"/foo/bar/*/xxx"}, "/foo/bar/yyy/xxx")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation17", func() {
-		s := validatePath([]string{"{/foo/bar/*/xxx/"}, "/foo/bar/yyy/xxx")
+		s := validatePath([]string{"/foo/bar/*/xxx/"}, "/foo/bar/yyy/xxx")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation18", func() {
-		s := validatePath([]string{"{/foo/bar/**/xxx/"}, "/foo/bar/aaa/bbb/xxx/")
+		s := validatePath([]string{"/foo/bar/**/xxx/"}, "/foo/bar/aaa/bbb/xxx/")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation19", func() {
-		s := validatePath([]string{"{/foo/bar/***/xxx/"}, "/foo/bar/aaa/bbb/xxx/")
+		s := validatePath([]string{"/foo/bar/***/xxx/"}, "/foo/bar/aaa/bbb/xxx/")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation20", func() {
-		s := validatePath([]string{"{/foo/, /bar/"}, "/foo/")
+		s := validatePath([]string{"/foo/", "/bar/"}, "/foo/")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation21", func() {
-		s := validatePath([]string{"{/foo/bar/yy*/xxx"}, "/foo/bar/yyy/xxx")
+		s := validatePath([]string{"/foo/bar/yy*/xxx"}, "/foo/bar/yyy/xxx")
 		Expect(s).Should(BeTrue())
 	})
 })