diff --git a/api.go b/api.go
index 028436e..b0b6402 100644
--- a/api.go
+++ b/api.go
@@ -97,7 +97,7 @@
 
 	switch {
 	case error == sql.ErrNoRows:
-		log.Debug("verifyAPIKey: sql.ErrNoRows")
+		log.Error("verifyAPIKey: sql.ErrNoRows")
 		reason := "ENV Validation Failed"
 		errorCode := "ENV_VALIDATION_FAILED"
 		return errorResponse(reason, errorCode)
diff --git a/api_test.go b/api_test.go
index 2dbd431..0432193 100644
--- a/api_test.go
+++ b/api_test.go
@@ -2,6 +2,7 @@
 
 import (
 	"encoding/json"
+	"github.com/30x/apid-core"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
 	"io/ioutil"
@@ -98,5 +99,55 @@
 			Expect(respj.Type).Should(Equal("ErrorResult"))
 			Expect(respj.ErrInfo.ErrorCode).Should(Equal("REQ_ENTRY_NOT_FOUND"))
 		})
+
+		It("should report error for no scopes", func() {
+			v := url.Values{
+				"key":       []string{"credential_x"},
+				"uriPath":   []string{"/test"},
+				"scopeuuid": []string{"ABCDE"},
+				"action":    []string{"verify"},
+			}
+
+			clearDataScopeTable(getDB())
+			rsp, err := verifyAPIKey(v)
+			Expect(err).ShouldNot(HaveOccurred())
+
+			var respj kmsResponseFail
+			json.Unmarshal(rsp, &respj)
+			Expect(respj.Type).Should(Equal("ErrorResult"))
+			Expect(respj.ErrInfo.ErrorCode).Should(Equal("ENV_VALIDATION_FAILED"))
+
+		})
+
+		It("should report error for invalid requests", func() {
+			v := url.Values{
+				"key":       []string{"credential_x"},
+				"uriPath":   []string{"/test"},
+				"scopeuuid": []string{"ABCDE"},
+				"action":    []string{"verify"},
+			}
+
+			fields := []string{"key", "uriPath", "scopeuuid", "action"}
+			for _, field := range fields {
+				tmp := v.Get(field)
+				v.Del(field)
+
+				rsp, err := verifyAPIKey(v)
+				Expect(err).ShouldNot(HaveOccurred())
+				var respj kmsResponseFail
+				json.Unmarshal(rsp, &respj)
+				Expect(respj.Type).Should(Equal("ErrorResult"))
+				Expect(respj.ErrInfo.ErrorCode).Should(Equal("INCORRECT_USER_INPUT"))
+
+				v.Set(field, tmp)
+			}
+		})
 	})
 })
+
+func clearDataScopeTable(db apid.DB) {
+	txn, _ := db.Begin()
+	txn.Exec("DELETE FROM EDGEX_DATA_SCOPE")
+	log.Info("clear EDGEX_DATA_SCOPE for test")
+	txn.Commit()
+}
