[ISSUE-67901957] address comments
diff --git a/accessEntity/accessEntity_suite_test.go b/accessEntity/accessEntity_suite_test.go index 6b56049..7ffc503 100644 --- a/accessEntity/accessEntity_suite_test.go +++ b/accessEntity/accessEntity_suite_test.go
@@ -20,16 +20,13 @@ "github.com/apid/apid-core" "github.com/apid/apid-core/factory" "github.com/apid/apidVerifyApiKey/common" + "io/ioutil" "os" "testing" "time" ) -const testTempDirBase = "./tmp/" - -var ( - testTempDir string -) +var testTempDirBase string func initSetup(s apid.Services) (apid.PluginData, error) { SetApidServices(s, apid.Log()) @@ -39,7 +36,9 @@ var _ = BeforeSuite(func() { apid.RegisterPlugin(initSetup, common.PluginData) - _ = os.MkdirAll(testTempDirBase, os.ModePerm) + var err error + testTempDirBase, err = ioutil.TempDir("", "verify_apikey_") + Expect(err).Should(Succeed()) apid.Initialize(factory.DefaultServicesFactory()) apid.InitializePlugins("0.0.0") go services.API().Listen() @@ -48,7 +47,7 @@ var _ = AfterSuite(func() { apid.Events().Close() - os.RemoveAll(testTempDirBase) + Expect(os.RemoveAll(testTempDirBase)).Should(Succeed()) }) func TestVerifyAPIKey(t *testing.T) {
diff --git a/accessEntity/api.go b/accessEntity/api.go index 520224c..008f00d 100644 --- a/accessEntity/api.go +++ b/accessEntity/api.go
@@ -77,7 +77,7 @@ ErrInvalidPar = &common.ErrorResponse{ ResponseCode: strconv.Itoa(INVALID_PARAMETERS), - ResponseMessage: "invalid identifiers", + ResponseMessage: "Invalid Identifiers", StatusCode: http.StatusBadRequest, } @@ -121,8 +121,11 @@ const ( INVALID_PARAMETERS = iota + // Server DB Error DB_ERROR + // Invalid/Wrong Data in DB data. This probably means something wrong happened in upstream PG/Transicator. DATA_ERROR + // 404 NOT_FOUND ) @@ -146,12 +149,28 @@ log.Debug("API endpoints initialized") } -func (a *ApiManager) HandleApps(w http.ResponseWriter, r *http.Request) { +func (a *ApiManager) handelEndpoint(endpoint string, w http.ResponseWriter, r *http.Request) { ids, org, err := extractIdentifiers(r.URL.Query()) if err != nil { common.WriteError(w, err.Error(), INVALID_PARAMETERS, http.StatusBadRequest) } - res, errRes := a.getApp(org, ids) + var res interface{} + var errRes *common.ErrorResponse + switch endpoint { + case EndpointApp: + res, errRes = a.getApp(org, ids) + case EndpointApiProduct: + res, errRes = a.getApiProduct(org, ids) + case EndpointCompany: + res, errRes = a.getCompany(org, ids) + case EndpointCompanyDeveloper: + res, errRes = a.getCompanyDeveloper(org, ids) + case EndpointDeveloper: + res, errRes = a.getDeveloper(org, ids) + case EndpointAppCredentials: + res, errRes = a.getAppCredential(org, ids) + } + if errRes != nil { w.WriteHeader(errRes.StatusCode) writeJson(errRes, w, r) @@ -160,73 +179,27 @@ writeJson(res, w, r) } +func (a *ApiManager) HandleApps(w http.ResponseWriter, r *http.Request) { + a.handelEndpoint(EndpointApp, w, r) +} + func (a *ApiManager) HandleApiProducts(w http.ResponseWriter, r *http.Request) { - ids, org, err := extractIdentifiers(r.URL.Query()) - if err != nil { - common.WriteError(w, err.Error(), INVALID_PARAMETERS, http.StatusBadRequest) - } - details, errRes := a.getApiProduct(org, ids) - if errRes != nil { - w.WriteHeader(errRes.StatusCode) - writeJson(errRes, w, r) - return - } - writeJson(details, w, r) + a.handelEndpoint(EndpointApiProduct, w, r) } func (a *ApiManager) HandleCompanies(w http.ResponseWriter, r *http.Request) { - ids, org, err := extractIdentifiers(r.URL.Query()) - if err != nil { - common.WriteError(w, err.Error(), INVALID_PARAMETERS, http.StatusBadRequest) - } - details, errRes := a.getCompany(org, ids) - if errRes != nil { - w.WriteHeader(errRes.StatusCode) - writeJson(errRes, w, r) - return - } - writeJson(details, w, r) + a.handelEndpoint(EndpointCompany, w, r) } func (a *ApiManager) HandleCompanyDevelopers(w http.ResponseWriter, r *http.Request) { - ids, org, err := extractIdentifiers(r.URL.Query()) - if err != nil { - common.WriteError(w, err.Error(), INVALID_PARAMETERS, http.StatusBadRequest) - } - details, errRes := a.getCompanyDeveloper(org, ids) - if errRes != nil { - w.WriteHeader(errRes.StatusCode) - writeJson(errRes, w, r) - return - } - writeJson(details, w, r) + a.handelEndpoint(EndpointCompanyDeveloper, w, r) } func (a *ApiManager) HandleDevelopers(w http.ResponseWriter, r *http.Request) { - ids, org, err := extractIdentifiers(r.URL.Query()) - if err != nil { - common.WriteError(w, err.Error(), INVALID_PARAMETERS, http.StatusBadRequest) - } - details, errRes := a.getDeveloper(org, ids) - if errRes != nil { - w.WriteHeader(errRes.StatusCode) - writeJson(errRes, w, r) - return - } - writeJson(details, w, r) + a.handelEndpoint(EndpointDeveloper, w, r) } func (a *ApiManager) HandleAppCredentials(w http.ResponseWriter, r *http.Request) { - ids, org, err := extractIdentifiers(r.URL.Query()) - if err != nil { - common.WriteError(w, err.Error(), INVALID_PARAMETERS, http.StatusBadRequest) - } - details, errRes := a.getAppCredential(org, ids) - if errRes != nil { - w.WriteHeader(errRes.StatusCode) - writeJson(errRes, w, r) - return - } - writeJson(details, w, r) + a.handelEndpoint(EndpointAppCredentials, w, r) } func extractIdentifiers(pars map[string][]string) (map[string]string, string, error) { @@ -254,9 +227,9 @@ if !valid { return nil, ErrInvalidPar } - priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] + priKey, priVal := keyVals[0], keyVals[1] - devs, err := a.DbMan.GetCompanyDevelopers(org, priKey, priVal, secKey, secVal) + devs, err := a.DbMan.GetCompanyDevelopers(org, priKey, priVal, "", "") if err != nil { log.Errorf("getCompanyDeveloper: %v", err) return nil, newDbError(err) @@ -294,9 +267,9 @@ if !valid { return nil, ErrInvalidPar } - priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] + priKey, priVal := keyVals[0], keyVals[1] - devs, err := a.DbMan.GetDevelopers(org, priKey, priVal, secKey, secVal) + devs, err := a.DbMan.GetDevelopers(org, priKey, priVal, "", "") if err != nil { log.Errorf("getDeveloper: %v", err) return nil, newDbError(err) @@ -332,9 +305,9 @@ if !valid { return nil, ErrInvalidPar } - priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] + priKey, priVal := keyVals[0], keyVals[1] - coms, err := a.DbMan.GetCompanies(org, priKey, priVal, secKey, secVal) + coms, err := a.DbMan.GetCompanies(org, priKey, priVal, "", "") if err != nil { log.Errorf("getCompany: %v", err) return nil, newDbError(err) @@ -365,8 +338,10 @@ if !valid { return nil, ErrInvalidPar } - priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] - + priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], "", "" + if len(keyVals) > 2 { + secKey, secVal = keyVals[2], keyVals[3] + } prods, err := a.DbMan.GetApiProducts(org, priKey, priVal, secKey, secVal) if err != nil { log.Errorf("getApiProduct: %v", err) @@ -399,9 +374,9 @@ if !valid { return nil, ErrInvalidPar } - priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] + priKey, priVal := keyVals[0], keyVals[1] - appCreds, err := a.DbMan.GetAppCredentials(org, priKey, priVal, secKey, secVal) + appCreds, err := a.DbMan.GetAppCredentials(org, priKey, priVal, "", "") if err != nil { log.Errorf("getAppCredential: %v", err) return nil, newDbError(err) @@ -453,7 +428,10 @@ if !valid { return nil, ErrInvalidPar } - priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] + priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], "", "" + if len(keyVals) > 2 { + secKey, secVal = keyVals[2], keyVals[3] + } apps, err := a.DbMan.GetApps(org, priKey, priVal, secKey, secVal) if err != nil { @@ -708,7 +686,6 @@ if len(ids) == 2 { return false, nil } - keyVals = append(keyVals, "", "") return true, keyVals } }
diff --git a/accessEntity/data.go b/accessEntity/data.go index 0039c1f..233e7c5 100644 --- a/accessEntity/data.go +++ b/accessEntity/data.go
@@ -733,7 +733,7 @@ var prods []common.ApiProduct for _, prod := range apiProducts { resources := common.JsonToStringArray(prod.ApiResources) - if InSlice(resources, resource) { + if Contains(resources, resource) { prods = append(prods, prod) } } @@ -741,7 +741,7 @@ return prods } -func InSlice(sl []string, str string) bool { +func Contains(sl []string, str string) bool { for _, s := range sl { if s == str { return true
diff --git a/common/pluginData.go b/common/pluginData.go index 8b68f3c..89a7c11 100644 --- a/common/pluginData.go +++ b/common/pluginData.go
@@ -18,8 +18,8 @@ var PluginData = apid.PluginData{ Name: "apidVerifyAPIKey", - Version: "0.0.4", + Version: "0.1.0", ExtraData: map[string]interface{}{ - "schemaVersion": "0.0.3", + "schemaVersion": "0.1.0", }, }
diff --git a/verifyApiKey/api_test.go b/verifyApiKey/api_test.go index 86760e7..97e226f 100644 --- a/verifyApiKey/api_test.go +++ b/verifyApiKey/api_test.go
@@ -291,6 +291,9 @@ httpReq, err := http.NewRequest("POST", uri.String(), strings.NewReader(string(jsonBody))) httpReq.Header.Set("Content-Type", "application/json") res, err := client.Do(httpReq) + if err != nil { + return nil, err + } defer res.Body.Close() responseBody, err := ioutil.ReadAll(res.Body)
diff --git a/verifyApiKey/verifyAPIKey_suite_test.go b/verifyApiKey/verifyAPIKey_suite_test.go index 15f739d..67873e7 100644 --- a/verifyApiKey/verifyAPIKey_suite_test.go +++ b/verifyApiKey/verifyAPIKey_suite_test.go
@@ -19,18 +19,21 @@ . "github.com/onsi/gomega" "github.com/apid/apid-core" + "io/ioutil" "os" "testing" ) -const testTempDirBase = "./tmp/" +var testTempDirBase string var ( testTempDir string ) var _ = BeforeSuite(func() { - _ = os.MkdirAll(testTempDirBase, os.ModePerm) + var err error + testTempDirBase, err = ioutil.TempDir("", "verify_apikey_") + Expect(err).Should(Succeed()) }) var _ = AfterSuite(func() { @@ -38,8 +41,7 @@ if testServer != nil { testServer.Close() } - os.RemoveAll(testTempDirBase) - + Expect(os.RemoveAll(testTempDirBase)).Should(Succeed()) }) func TestVerifyAPIKey(t *testing.T) {