use sqlite snapshots and operate on the assumption that changes have already been applied
diff --git a/api.go b/api.go
index 1020414..d026ed9 100644
--- a/api.go
+++ b/api.go
@@ -119,13 +119,13 @@
ad.id,
"developer" as ctype
FROM
- APP_CREDENTIAL AS c
- INNER JOIN APP AS a ON c.app_id = a.id
- INNER JOIN DEVELOPER AS ad
+ KMS_APP_CREDENTIAL AS c
+ INNER JOIN KMS_APP AS a ON c.app_id = a.id
+ INNER JOIN KMS_DEVELOPER AS ad
ON ad.id = a.developer_id
- INNER JOIN APP_CREDENTIAL_APIPRODUCT_MAPPER as mp
+ INNER JOIN KMS_APP_CREDENTIAL_APIPRODUCT_MAPPER as mp
ON mp.appcred_id = c.id
- INNER JOIN API_PRODUCT as ap ON ap.id = mp.apiprdt_id
+ INNER JOIN KMS_API_PRODUCT as ap ON ap.id = mp.apiprdt_id
WHERE (UPPER(ad.status) = 'ACTIVE'
AND mp.apiprdt_id = ap.id
AND mp.app_id = a.id
@@ -145,13 +145,13 @@
ad.id,
"company" as ctype
FROM
- APP_CREDENTIAL AS c
- INNER JOIN APP AS a ON c.app_id = a.id
- INNER JOIN COMPANY AS ad
+ KMS_APP_CREDENTIAL AS c
+ INNER JOIN KMS_APP AS a ON c.app_id = a.id
+ INNER JOIN KMS_COMPANY AS ad
ON ad.id = a.company_id
- INNER JOIN APP_CREDENTIAL_APIPRODUCT_MAPPER as mp
+ INNER JOIN KMS_APP_CREDENTIAL_APIPRODUCT_MAPPER as mp
ON mp.appcred_id = c.id
- INNER JOIN API_PRODUCT as ap ON ap.id = mp.apiprdt_id
+ INNER JOIN KMS_API_PRODUCT as ap ON ap.id = mp.apiprdt_id
WHERE (UPPER(ad.status) = 'ACTIVE'
AND mp.apiprdt_id = ap.id
AND mp.app_id = a.id
@@ -162,8 +162,12 @@
AND c.tenant_id = $2)
;`
- var status, redirectionURIs, appName, appId, resName, resEnv, cType string
- var issuedAt int64
+ /* these fields need to be nullable types for scanning. This is because when using json snapshots,
+ and therefore being responsible for inserts, we were able to default everything to be not null. With
+ sqlite snapshots, we are not necessarily guaranteed that
+ */
+ var status, redirectionURIs, appName, appId, resName, resEnv, cType sql.NullString
+ var issuedAt sql.NullInt64
err := db.QueryRow(sSql, key, tenantId).Scan(&resName, &resEnv, &issuedAt, &status,
&redirectionURIs, &appName, &appId, &cType)
switch {
@@ -182,18 +186,18 @@
* Perform all validations related to the Query made with the data
* we just retrieved
*/
- result := validatePath(resName, path)
+ result := validatePath(resName.String, path)
if result == false {
- reason := "Path Validation Failed (" + resName + " vs " + path + ")"
+ reason := "Path Validation Failed (" + resName.String + " vs " + path + ")"
errorCode := "PATH_VALIDATION_FAILED"
return errorResponse(reason, errorCode)
}
/* Verify if the ENV matches */
- result = validateEnv(resEnv, env)
+ result = validateEnv(resEnv.String, env)
if result == false {
- reason := "ENV Validation Failed (" + resEnv + " vs " + env + ")"
+ reason := "ENV Validation Failed (" + resEnv.String + " vs " + env + ")"
errorCode := "ENV_VALIDATION_FAILED"
return errorResponse(reason, errorCode)
}
@@ -204,12 +208,12 @@
RspInfo: sucResponseDetail{
Key: key,
ExpiresAt: expiresAt,
- IssuedAt: issuedAt,
- Status: status,
- RedirectionURIs: redirectionURIs,
- Type: cType,
- AppId: appId,
- AppName: appName},
+ IssuedAt: issuedAt.Int64,
+ Status: status.String,
+ RedirectionURIs: redirectionURIs.String,
+ Type: cType.String,
+ AppId: appId.String,
+ AppName: appName.String},
}
return json.Marshal(resp)
}
diff --git a/api_test.go b/api_test.go
index 7222341..ddb245e 100644
--- a/api_test.go
+++ b/api_test.go
@@ -2,7 +2,6 @@
import (
"encoding/json"
- "github.com/apigee-labs/transicator/common"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"io/ioutil"
@@ -16,98 +15,6 @@
Context("DB Inserts/Deletes verification", func() {
- It("Positive DB test for Insert operations", func() {
- db := getDB()
- txn, err := db.Begin()
- Expect(err).ShouldNot(HaveOccurred())
- // api products
- for i := 0; i < 10; i++ {
- row := generateTestApiProduct(i)
- res := insertAPIproducts([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
- // developers
- for i := 0; i < 10; i++ {
- row := generateTestDeveloper(i)
- res := insertDevelopers([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
-
- // application
- var j, k int
- for i := 0; i < 10; i++ {
- for j = k; j < 10+k; j++ {
- row := generateTestApp(j, i)
- res := insertApplications([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
- k = j
- }
- // app credentials
- for i := 0; i < 10; i++ {
- row := generateTestAppCreds(i)
- res := insertCredentials([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
- // api product mapper
- for i := 0; i < 10; i++ {
- row := generateTestApiProductMapper(i)
- res := insertAPIProductMappers([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
-
- // Following are data for company
- // api products
- for i := 100; i < 110; i++ {
- row := generateTestApiProduct(i)
- res := insertAPIproducts([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
-
- // companies
- for i := 100; i < 110; i++ {
- row := generateTestCompany(i)
- res := insertCompanies([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
-
- // company developers
- for i := 100; i < 110; i++ {
- row := generateTestCompanyDeveloper(i)
- res := insertCompanyDevelopers([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
-
- // application
- k = 100
- for i := 100; i < 110; i++ {
- for j = k; j < 100+k; j++ {
- row := generateTestAppCompany(j, i)
- res := insertApplications([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
- k = j
- }
- // app credentials
- for i := 100; i < 110; i++ {
- row := generateTestAppCreds(i)
- res := insertCredentials([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
- // api product mapper
- for i := 100; i < 110; i++ {
- row := generateTestApiProductMapper(i)
- res := insertAPIProductMappers([]common.Row{row}, txn)
- Expect(res).Should(BeTrue())
- }
-
- txn.Commit()
- var count int64
- db.QueryRow("select count(*) from data_scope").Scan(&count)
- log.Info("Found ", count)
-
- })
-
It("should reject a bad key", func() {
v := url.Values{
"key": []string{"credential_x"},
@@ -165,109 +72,6 @@
}
})
- It("Positive DB test for Delete operations", func() {
- db := getDB()
- txn, err := db.Begin()
- Expect(err).ShouldNot(HaveOccurred())
-
- for i := 0; i < 10; i++ {
- row := generateTestApiProductMapper(i)
- res := deleteAPIproductMapper(row, txn)
- Expect(res).Should(BeTrue())
- }
-
- for i := 0; i < 10; i++ {
- row := generateTestAppCreds(i)
- res := deleteObject("APP_CREDENTIAL", row, txn)
- Expect(res).Should(BeTrue())
- }
- for i := 0; i < 100; i++ {
- row := generateTestApp(i, 999) //TODO we use j in above insertions
- res := deleteObject("APP", row, txn)
- Expect(res).Should(BeTrue())
- }
-
- for i := 0; i < 10; i++ {
- row := generateTestDeveloper(i)
- res := deleteObject("DEVELOPER", row, txn)
- Expect(res).Should(BeTrue())
- }
-
- for i := 0; i < 10; i++ {
- row := generateTestApiProduct(i)
- res := deleteObject("API_PRODUCT", row, txn)
- Expect(res).Should(BeTrue())
- }
-
- for i := 100; i < 110; i++ {
- row := generateTestCompanyDeveloper(i)
- res := deleteCompanyDeveloper(row, txn)
- Expect(res).Should(BeTrue())
- }
-
- txn.Commit()
- })
-
- It("Negative cases for DB Deletes on KMS tables", func() {
- db := getDB()
- txn, err := db.Begin()
- Expect(err).ShouldNot(HaveOccurred())
-
- row := generateTestApiProductMapper(999)
-
- res := deleteAPIproductMapper(row, txn)
- Expect(res).Should(BeFalse())
-
- res = deleteObject("API_PRODUCT", row, txn)
- Expect(res).Should(BeFalse())
-
- res = deleteObject("APP_CREDENTIAL", row, txn)
- Expect(res).Should(BeFalse())
-
- res = deleteObject("DEVELOPER", row, txn)
- Expect(res).Should(BeFalse())
-
- res = deleteObject("APP", row, txn)
- Expect(res).Should(BeFalse())
-
- res = deleteObject("COMPANY", row, txn)
- Expect(res).Should(BeFalse())
-
- res = deleteCompanyDeveloper(row, txn)
- Expect(res).Should(BeFalse())
-
- txn.Rollback()
-
- })
-
- It("Negative cases for DB Inserts/updates on KMS tables", func() {
-
- db := getDB()
- txn, err := db.Begin()
- Expect(err).ShouldNot(HaveOccurred())
-
- row := generateTestApiProduct(999)
- row["id"] = nil
- res := insertAPIproducts([]common.Row{row}, txn)
- Expect(res).Should(BeFalse())
-
- res = insertApplications([]common.Row{row}, txn)
- Expect(res).Should(BeFalse())
-
- res = insertCredentials([]common.Row{row}, txn)
- Expect(res).Should(BeFalse())
-
- res = insertAPIProductMappers([]common.Row{row}, txn)
- Expect(res).Should(BeFalse())
-
- res = insertCompanies([]common.Row{row}, txn)
- Expect(res).Should(BeFalse())
-
- res = insertCompanyDevelopers([]common.Row{row}, txn)
- Expect(res).Should(BeFalse())
-
- })
-
It("should reject a bad key", func() {
uri, err := url.Parse(testServer.URL)
@@ -295,4 +99,4 @@
Expect(respj.ErrInfo.ErrorCode).Should(Equal("REQ_ENTRY_NOT_FOUND"))
})
})
-})
+})
\ No newline at end of file
diff --git a/init.go b/init.go
index 7a1ad38..19b729d 100644
--- a/init.go
+++ b/init.go
@@ -52,7 +52,7 @@
func createTables(db apid.DB) {
_, err := db.Exec(`
-CREATE TABLE IF NOT EXISTS api_product (
+CREATE TABLE IF NOT EXISTS kms_api_product (
id text,
tenant_id text,
name text,
@@ -71,7 +71,7 @@
updated_at int64,
updated_by text,
PRIMARY KEY (tenant_id, id));
-CREATE TABLE IF NOT EXISTS developer (
+CREATE TABLE IF NOT EXISTS kms_developer (
id text,
tenant_id text,
username text,
@@ -89,7 +89,7 @@
updated_by text,
PRIMARY KEY (tenant_id, id)
);
-CREATE TABLE IF NOT EXISTS company (
+CREATE TABLE IF NOT EXISTS kms_company (
id text,
tenant_id text,
name text,
@@ -102,7 +102,7 @@
_change_selector text,
PRIMARY KEY (tenant_id, id)
);
-CREATE TABLE IF NOT EXISTS company_developer (
+CREATE TABLE IF NOT EXISTS kms_company_developer (
tenant_id text,
company_id text,
developer_id text,
@@ -114,7 +114,7 @@
_change_selector text,
PRIMARY KEY (tenant_id, company_id,developer_id)
);
-CREATE TABLE IF NOT EXISTS app (
+CREATE TABLE IF NOT EXISTS kms_app (
id text,
tenant_id text,
name text,
@@ -134,7 +134,7 @@
_change_selector text,
PRIMARY KEY (tenant_id, id)
);
-CREATE TABLE IF NOT EXISTS app_credential (
+CREATE TABLE IF NOT EXISTS kms_app_credential (
id text,
tenant_id text,
consumer_secret text,
@@ -147,7 +147,7 @@
_change_selector text,
PRIMARY KEY (tenant_id, id)
);
-CREATE TABLE IF NOT EXISTS app_credential_apiproduct_mapper (
+CREATE TABLE IF NOT EXISTS kms_app_credential_apiproduct_mapper (
tenant_id text,
appcred_id text,
app_id text,
@@ -156,10 +156,10 @@
status text,
PRIMARY KEY (appcred_id, app_id, apiprdt_id,tenant_id)
);
-CREATE INDEX IF NOT EXISTS company_id ON company (id);
-CREATE INDEX IF NOT EXISTS developer_id ON developer (id);
-CREATE INDEX IF NOT EXISTS api_product_id ON api_product (id);
-CREATE INDEX IF NOT EXISTS app_id ON app (id);
+CREATE INDEX IF NOT EXISTS company_id ON kms_company (id);
+CREATE INDEX IF NOT EXISTS developer_id ON kms_developer (id);
+CREATE INDEX IF NOT EXISTS api_product_id ON kms_api_product (id);
+CREATE INDEX IF NOT EXISTS app_id ON kms_app (id);
`)
if err != nil {
log.Panic("Unable to initialize DB", err)
diff --git a/listener.go b/listener.go
index 3fae5c0..8eda4ed 100644
--- a/listener.go
+++ b/listener.go
@@ -1,8 +1,6 @@
package apidVerifyApiKey
import (
- "database/sql"
-
"github.com/30x/apid-core"
"github.com/apigee-labs/transicator/common"
)
@@ -19,13 +17,6 @@
snapData, ok := e.(*common.Snapshot)
if ok {
processSnapshot(snapData)
- } else {
- changeSet, ok := e.(*common.ChangeList)
- if ok {
- processChange(changeSet)
- } else {
- log.Debugf("Received Invalid event. Ignoring. %v", e)
- }
}
return
}
@@ -39,647 +30,6 @@
log.Panicf("Unable to access database: %v", err)
}
- createTables(db)
-
- if len(snapshot.Tables) > 0 {
- txn, err := db.Begin()
- if err != nil {
- log.Panicf("Unable to create transaction: %v", err)
- return
- }
-
- /*
- * Iterate the tables, and insert the rows,
- * Commit them in bulk.
- */
- ok := true
- for _, payload := range snapshot.Tables {
- switch payload.Name {
- case "kms.developer":
- ok = insertDevelopers(payload.Rows, txn)
- case "kms.app":
- ok = insertApplications(payload.Rows, txn)
- case "kms.app_credential":
- ok = insertCredentials(payload.Rows, txn)
- case "kms.api_product":
- ok = insertAPIproducts(payload.Rows, txn)
- case "kms.app_credential_apiproduct_mapper":
- ok = insertAPIProductMappers(payload.Rows, txn)
- case "kms.company":
- ok = insertCompanies(payload.Rows, txn)
- case "kms.company_developer":
- ok = insertCompanyDevelopers(payload.Rows, txn)
- }
- if !ok {
- log.Error("Error encountered in Downloading Snapshot for VerifyApiKey")
- txn.Rollback()
- return
- }
- }
- log.Debug("Downloading Snapshot for VerifyApiKey complete")
- txn.Commit()
- }
-
setDB(db)
return
-}
-
-/*
- * Performs bulk insert of credentials
- */
-func insertCredentials(rows []common.Row, txn *sql.Tx) bool {
-
- var scope, id, appId, consumerSecret, appstatus, status, tenantId string
- var issuedAt int64
-
- prep, err := txn.Prepare("INSERT INTO APP_CREDENTIAL (_change_selector, id, app_id, consumer_secret, app_status, status, issued_at, tenant_id)VALUES($1,$2,$3,$4,$5,$6,$7,$8);")
- if err != nil {
- log.Error("INSERT Cred Failed: ", err)
- return false
- }
- defer prep.Close()
- for _, ele := range rows {
- ele.Get("_change_selector", &scope)
- ele.Get("id", &id)
- ele.Get("app_id", &appId)
- ele.Get("consumer_secret", &consumerSecret)
- ele.Get("app_status", &appstatus)
- ele.Get("status", &status)
- ele.Get("issued_at", &issuedAt)
- ele.Get("tenant_id", &tenantId)
-
- /* Mandatory params check */
- if id == "" || scope == "" || tenantId == "" {
- log.Error("INSERT APP_CREDENTIAL: i/p args missing")
- return false
- }
- _, err = prep.Exec(
- scope,
- id,
- appId,
- consumerSecret,
- appstatus,
- status,
- issuedAt,
- tenantId)
-
- if err != nil {
- log.Error("INSERT CRED Failed: ", id, ", ", scope, ")", err)
- return false
- } else {
- log.Debug("INSERT CRED Success: (", id, ", ", scope, ")")
- }
- }
- return true
-}
-
-/*
- * Performs Bulk insert of Applications
- */
-func insertApplications(rows []common.Row, txn *sql.Tx) bool {
-
- var scope, EntityIdentifier, DeveloperId, CompanyId, ParentId, CallbackUrl, Status, AppName, AppFamily, tenantId, CreatedBy, LastModifiedBy string
- var CreatedAt, LastModifiedAt int64
-
- prep, err := txn.Prepare("INSERT INTO APP (_change_selector, id, developer_id, company_id, parent_id, callback_url,status, name, app_family, created_at, created_by,updated_at, updated_by,tenant_id) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14);")
- if err != nil {
- log.Error("INSERT APP Failed: ", err)
- return false
- }
-
- defer prep.Close()
- for _, ele := range rows {
-
- ele.Get("_change_selector", &scope)
- ele.Get("id", &EntityIdentifier)
- ele.Get("developer_id", &DeveloperId)
- ele.Get("company_id", &CompanyId)
- ele.Get("parent_id", &ParentId)
- ele.Get("callback_url", &CallbackUrl)
- ele.Get("status", &Status)
- ele.Get("name", &AppName)
- ele.Get("app_family", &AppFamily)
- ele.Get("created_at", &CreatedAt)
- ele.Get("created_by", &CreatedBy)
- ele.Get("updated_at", &LastModifiedAt)
- ele.Get("updated_by", &LastModifiedBy)
- ele.Get("tenant_id", &tenantId)
-
- /* Mandatory params check */
- if EntityIdentifier == "" || scope == "" || tenantId == "" {
- log.Error("INSERT APP: i/p args missing")
- return false
- }
- _, err = prep.Exec(
- scope,
- EntityIdentifier,
- DeveloperId,
- CompanyId,
- ParentId,
- CallbackUrl,
- Status,
- AppName,
- AppFamily,
- CreatedAt,
- CreatedBy,
- LastModifiedAt,
- LastModifiedBy,
- tenantId)
-
- if err != nil {
- log.Error("INSERT APP Failed: (", EntityIdentifier, ", ", tenantId, ")", err)
- return false
- } else {
- log.Debug("INSERT APP Success: (", EntityIdentifier, ", ", tenantId, ")")
- }
- }
- return true
-
-}
-
-/*
- * Performs bulk insert of Developers
- */
-func insertDevelopers(rows []common.Row, txn *sql.Tx) bool {
-
- var scope, EntityIdentifier, Email, Status, UserName, FirstName, LastName, tenantId, CreatedBy, LastModifiedBy, Username string
- var CreatedAt, LastModifiedAt int64
-
- prep, err := txn.Prepare("INSERT INTO DEVELOPER (_change_selector,email,id,tenant_id,status,username,first_name,last_name,created_at,created_by,updated_at,updated_by) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12);")
- if err != nil {
- log.Error("INSERT DEVELOPER Failed: ", err)
- return false
- }
-
- defer prep.Close()
- for _, ele := range rows {
-
- ele.Get("_change_selector", &scope)
- ele.Get("email", &Email)
- ele.Get("id", &EntityIdentifier)
- ele.Get("tenant_id", &tenantId)
- ele.Get("status", &Status)
- ele.Get("username", &Username)
- ele.Get("first_name", &FirstName)
- ele.Get("last_name", &LastName)
- ele.Get("created_at", &CreatedAt)
- ele.Get("created_by", &CreatedBy)
- ele.Get("updated_at", &LastModifiedAt)
- ele.Get("updated_by", &LastModifiedBy)
-
- /* Mandatory params check */
- if EntityIdentifier == "" || scope == "" || tenantId == "" {
- log.Error("INSERT DEVELOPER: i/p args missing")
- return false
- }
- _, err = prep.Exec(
- scope,
- Email,
- EntityIdentifier,
- tenantId,
- Status,
- UserName,
- FirstName,
- LastName,
- CreatedAt,
- CreatedBy,
- LastModifiedAt,
- LastModifiedBy)
-
- if err != nil {
- log.Error("INSERT DEVELOPER Failed: (", EntityIdentifier, ", ", scope, ")", err)
- return false
- } else {
- log.Debug("INSERT DEVELOPER Success: (", EntityIdentifier, ", ", scope, ")")
- }
- }
- return true
-}
-
-/*
- * Performs Bulk insert of Company Developers
- */
-func insertCompanyDevelopers(rows []common.Row, txn *sql.Tx) bool {
- var scope, CompanyId, DeveloperId, tenantId, CreatedBy, LastModifiedBy string
- var CreatedAt, LastModifiedAt int64
-
- prep, err := txn.Prepare("INSERT INTO COMPANY_DEVELOPER (_change_selector,company_id,tenant_id,developer_id,created_at,created_by,updated_at,updated_by) VALUES($1,$2,$3,$4,$5,$6,$7,$8);")
- if err != nil {
- log.Error("INSERT COMPANY_DEVELOPER Failed: ", err)
- return false
- }
- defer prep.Close()
- for _, ele := range rows {
-
- ele.Get("_change_selector", &scope)
- ele.Get("company_id", &CompanyId)
- ele.Get("tenant_id", &tenantId)
- ele.Get("developer_id", &DeveloperId)
- ele.Get("created_at", &CreatedAt)
- ele.Get("created_by", &CreatedBy)
- ele.Get("updated_at", &LastModifiedAt)
- ele.Get("updated_by", &LastModifiedBy)
-
- /* Mandatory params check */
- if scope == "" || tenantId == "" || CompanyId == "" || DeveloperId == "" {
- log.Error("INSERT COMPANY_DEVELOPER: i/p args missing")
- return false
- }
- _, err = prep.Exec(
- scope,
- CompanyId,
- tenantId,
- DeveloperId,
- CreatedAt,
- CreatedBy,
- LastModifiedAt,
- LastModifiedBy)
-
- if err != nil {
- log.Error("INSERT COMPANY_DEVELOPER Failed: (", DeveloperId, ", ", CompanyId, ", ", scope, ")", err)
- return false
- } else {
- log.Debug("INSERT COMPANY_DEVELOPER Success: (", DeveloperId, ", ", CompanyId, ", ", scope, ")")
- }
- }
- return true
-}
-
-/*
- * Performs Bulk insert of Companies
- */
-func insertCompanies(rows []common.Row, txn *sql.Tx) bool {
- var scope, EntityIdentifier, Name, DisplayName, Status, tenantId, CreatedBy, LastModifiedBy string
- var CreatedAt, LastModifiedAt int64
-
- prep, err := txn.Prepare("INSERT INTO COMPANY (_change_selector,id,tenant_id,status,name,display_name,created_at,created_by,updated_at,updated_by) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10);")
- if err != nil {
- log.Error("INSERT COMPANY Failed: ", err)
- return false
- }
- defer prep.Close()
- for _, ele := range rows {
-
- ele.Get("_change_selector", &scope)
- ele.Get("id", &EntityIdentifier)
- ele.Get("tenant_id", &tenantId)
- ele.Get("status", &Status)
- ele.Get("name", &Name)
- ele.Get("display_name", &DisplayName)
- ele.Get("created_at", &CreatedAt)
- ele.Get("created_by", &CreatedBy)
- ele.Get("updated_at", &LastModifiedAt)
- ele.Get("updated_by", &LastModifiedBy)
-
- /* Mandatory params check */
- if EntityIdentifier == "" || scope == "" || tenantId == "" {
- log.Error("INSERT COMPANY: i/p args missing")
- return false
- }
- _, err = prep.Exec(
- scope,
- EntityIdentifier,
- tenantId,
- Status,
- Name,
- DisplayName,
- CreatedAt,
- CreatedBy,
- LastModifiedAt,
- LastModifiedBy)
-
- if err != nil {
- log.Error("INSERT COMPANY Failed: (", EntityIdentifier, ", ", scope, ")", err)
- return false
- } else {
- log.Debug("INSERT COMPANY Success: (", EntityIdentifier, ", ", scope, ")")
- }
- }
- return true
-}
-
-/*
- * Performs Bulk insert of API products
- */
-func insertAPIproducts(rows []common.Row, txn *sql.Tx) bool {
-
- var scope, apiProduct, res, env, tenantId string
-
- prep, err := txn.Prepare("INSERT INTO API_PRODUCT (id, api_resources, environments, tenant_id,_change_selector) VALUES($1,$2,$3,$4,$5)")
- if err != nil {
- log.Error("INSERT API_PRODUCT Failed: ", err)
- return false
- }
-
- defer prep.Close()
- for _, ele := range rows {
-
- ele.Get("_change_selector", &scope)
- ele.Get("id", &apiProduct)
- ele.Get("api_resources", &res)
- ele.Get("environments", &env)
- ele.Get("tenant_id", &tenantId)
-
- /* Mandatory params check */
- if apiProduct == "" || scope == "" || tenantId == "" {
- log.Error("INSERT API_PRODUCT: i/p args missing")
- return false
- }
- _, err = prep.Exec(
- apiProduct,
- res,
- env,
- tenantId,
- scope)
-
- if err != nil {
- log.Error("INSERT API_PRODUCT Failed: (", apiProduct, ", ", tenantId, ")", err)
- return false
- } else {
- log.Debug("INSERT API_PRODUCT Success: (", apiProduct, ", ", tenantId, ")")
- }
- }
- return true
-}
-
-/*
- * Performs a bulk insert of all APP_CREDENTIAL_APIPRODUCT_MAPPER rows
- */
-func insertAPIProductMappers(rows []common.Row, txn *sql.Tx) bool {
-
- var ApiProduct, AppId, EntityIdentifier, tenantId, Scope, Status string
-
- prep, err := txn.Prepare("INSERT INTO APP_CREDENTIAL_APIPRODUCT_MAPPER(apiprdt_id, app_id, appcred_id, tenant_id, _change_selector, status) VALUES($1,$2,$3,$4,$5,$6);")
- if err != nil {
- log.Error("INSERT APP_CREDENTIAL_APIPRODUCT_MAPPER Failed: ", err)
- return false
- }
-
- defer prep.Close()
- for _, ele := range rows {
-
- ele.Get("apiprdt_id", &ApiProduct)
- ele.Get("app_id", &AppId)
- ele.Get("appcred_id", &EntityIdentifier)
- ele.Get("tenant_id", &tenantId)
- ele.Get("_change_selector", &Scope)
- ele.Get("status", &Status)
-
- /* Mandatory params check */
- if ApiProduct == "" || AppId == "" || EntityIdentifier == "" || tenantId == "" || Scope == "" {
- log.Error("INSERT APP_CREDENTIAL_APIPRODUCT_MAPPER : i/p args missing")
- return false
- }
-
- /*
- * If the credentials has been successfully inserted, insert the
- * mapping entries associated with the credential
- */
-
- _, err = prep.Exec(
- ApiProduct,
- AppId,
- EntityIdentifier,
- tenantId,
- Scope,
- Status)
-
- if err != nil {
- log.Error("INSERT APP_CREDENTIAL_APIPRODUCT_MAPPER Failed: (",
- ApiProduct, ", ",
- AppId, ", ",
- EntityIdentifier, ", ",
- tenantId, ", ",
- Scope, ", ",
- Status,
- ")",
- err)
-
- return false
- } else {
- log.Debug("INSERT APP_CREDENTIAL_APIPRODUCT_MAPPER Success: (",
- ApiProduct, ", ",
- AppId, ", ",
- EntityIdentifier, ", ",
- tenantId, ", ",
- Scope, ", ",
- Status,
- ")")
- }
- }
- return true
-}
-
-func processChange(changes *common.ChangeList) {
-
- db := getDB()
-
- txn, err := db.Begin()
- if err != nil {
- log.Error("Unable to create transaction")
- return
- }
- defer txn.Rollback()
-
- var rows []common.Row
- ok := true
-
- log.Debugf("apigeeSyncEvent: %d changes", len(changes.Changes))
- for _, payload := range changes.Changes {
- rows = nil
- switch payload.Table {
- case "kms.developer":
- switch payload.Operation {
- case common.Insert:
- rows = append(rows, payload.NewRow)
- ok = insertDevelopers(rows, txn)
-
- case common.Update:
- ok = deleteObject("DEVELOPER", payload.OldRow, txn)
- rows = append(rows, payload.NewRow)
- ok = insertDevelopers(rows, txn)
-
- case common.Delete:
- ok = deleteObject("DEVELOPER", payload.OldRow, txn)
- }
- case "kms.app":
- switch payload.Operation {
- case common.Insert:
- rows = append(rows, payload.NewRow)
- ok = insertApplications(rows, txn)
-
- case common.Update:
- ok = deleteObject("APP", payload.OldRow, txn)
- rows = append(rows, payload.NewRow)
- ok = insertApplications(rows, txn)
-
- case common.Delete:
- ok = deleteObject("APP", payload.OldRow, txn)
- }
- case "kms.company":
- switch payload.Operation {
- case common.Insert:
- rows = append(rows, payload.NewRow)
- ok = insertCompanies(rows, txn)
-
- case common.Update:
- ok = deleteObject("COMPANY", payload.OldRow, txn)
- rows = append(rows, payload.NewRow)
- ok = insertCompanies(rows, txn)
-
- case common.Delete:
- ok = deleteObject("COMPANY", payload.OldRow, txn)
- }
- case "kms.company_developer":
- switch payload.Operation {
- case common.Insert:
- rows = append(rows, payload.NewRow)
- ok = insertCompanyDevelopers(rows, txn)
-
- case common.Update:
- ok = deleteCompanyDeveloper(payload.OldRow, txn)
- rows = append(rows, payload.NewRow)
- ok = insertCompanyDevelopers(rows, txn)
-
- case common.Delete:
- ok = deleteCompanyDeveloper(payload.OldRow, txn)
- }
- case "kms.app_credential":
- switch payload.Operation {
- case common.Insert:
- rows = append(rows, payload.NewRow)
- ok = insertCredentials(rows, txn)
-
- case common.Update:
- ok = deleteObject("APP_CREDENTIAL", payload.OldRow, txn)
- rows = append(rows, payload.NewRow)
- ok = insertCredentials(rows, txn)
-
- case common.Delete:
- ok = deleteObject("APP_CREDENTIAL", payload.OldRow, txn)
- }
- case "kms.api_product":
- switch payload.Operation {
- case common.Insert:
- rows = append(rows, payload.NewRow)
- ok = insertAPIproducts(rows, txn)
-
- case common.Update:
- ok = deleteObject("API_PRODUCT", payload.OldRow, txn)
- rows = append(rows, payload.NewRow)
- ok = insertAPIproducts(rows, txn)
-
- case common.Delete:
- ok = deleteObject("API_PRODUCT", payload.OldRow, txn)
- }
-
- case "kms.app_credential_apiproduct_mapper":
- switch payload.Operation {
- case common.Insert:
- rows = append(rows, payload.NewRow)
- ok = insertAPIProductMappers(rows, txn)
-
- case common.Update:
- ok = deleteAPIproductMapper(payload.OldRow, txn)
- rows = append(rows, payload.NewRow)
- ok = insertAPIProductMappers(rows, txn)
-
- case common.Delete:
- ok = deleteAPIproductMapper(payload.OldRow, txn)
- }
- }
- if !ok {
- log.Error("Sql Operation error. Operation rollbacked")
- return
- }
- }
- txn.Commit()
- return
-}
-
-/*
- * DELETE OBJECT as passed in the input
- */
-func deleteObject(object string, ele common.Row, txn *sql.Tx) bool {
-
- var scope, objid string
- ssql := "DELETE FROM " + object + " WHERE id = $1 AND _change_selector = $2"
- prep, err := txn.Prepare(ssql)
- if err != nil {
- log.Error("DELETE ", object, " Failed: ", err)
- return false
- }
- defer prep.Close()
- ele.Get("_change_selector", &scope)
- ele.Get("id", &objid)
-
- res, err := prep.Exec(objid, scope)
- if err == nil {
- affect, err := res.RowsAffected()
- if err == nil && affect != 0 {
- log.Debugf("DELETE %s (%s, %s) success.", object, objid, scope)
- return true
- }
- }
- log.Errorf("DELETE %s (%s, %s) failed.", object, objid, scope)
- return false
-
-}
-
-/*
- * DELETE APIPRDT MAPPER
- */
-func deleteAPIproductMapper(ele common.Row, txn *sql.Tx) bool {
- var ApiProduct, AppId, EntityIdentifier, apid_scope string
-
- prep, err := txn.Prepare("DELETE FROM APP_CREDENTIAL_APIPRODUCT_MAPPER WHERE apiprdt_id=$1 AND app_id=$2 AND appcred_id=$3 AND _change_selector=$4;")
- if err != nil {
- log.Error("DELETE APP_CREDENTIAL_APIPRODUCT_MAPPER Failed: ", err)
- return false
- }
-
- defer prep.Close()
-
- ele.Get("apiprdt_id", &ApiProduct)
- ele.Get("app_id", &AppId)
- ele.Get("appcred_id", &EntityIdentifier)
- ele.Get("_change_selector", &apid_scope)
-
- res, err := prep.Exec(ApiProduct, AppId, EntityIdentifier, apid_scope)
- if err == nil {
- affect, err := res.RowsAffected()
- if err == nil && affect != 0 {
- log.Debugf("DELETE APP_CREDENTIAL_APIPRODUCT_MAPPER (%s, %s, %s, %s) success.", ApiProduct, AppId, EntityIdentifier, apid_scope)
- return true
- }
- }
- log.Errorf("DELETE APP_CREDENTIAL_APIPRODUCT_MAPPER (%s, %s, %s, %s) failed.", ApiProduct, AppId, EntityIdentifier, apid_scope, err)
- return false
-}
-
-func deleteCompanyDeveloper(ele common.Row, txn *sql.Tx) bool {
- prep, err := txn.Prepare(`
- DELETE FROM COMPANY_DEVELOPER
- WHERE tenant_id=$1 AND company_id=$2 AND developer_id=$3`)
- if err != nil {
- log.Errorf("DELETE COMPANY_DEVELOPER Failed: %v", err)
- return false
- }
- defer prep.Close()
-
- var tenantId, companyId, developerId string
- ele.Get("tenant_id", &tenantId)
- ele.Get("company_id", &companyId)
- ele.Get("developer_id", &developerId)
-
- res, err := prep.Exec(tenantId, companyId, developerId)
- if err == nil {
- affect, err := res.RowsAffected()
- if err == nil && affect != 0 {
- log.Debugf("DELETE COMPANY_DEVELOPER (%s, %s, %s) success.", tenantId, companyId, developerId)
- return true
- }
- }
- log.Errorf("DELETE COMPANY_DEVELOPER (%s, %s, %s) failed: %v", tenantId, companyId, developerId, err)
- return false
-}
+}
\ No newline at end of file
diff --git a/listener_test.go b/listener_test.go
index 195b2b9..1cc33da 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -1,1154 +1,41 @@
package apidVerifyApiKey
import (
- "encoding/json"
- "fmt"
"github.com/30x/apid-core"
"github.com/apigee-labs/transicator/common"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
- "io/ioutil"
- "net/http"
- "net/http/httptest"
- "net/url"
)
var _ = Describe("listener", func() {
Context("KMS create/updates verification via changes for Developer", func() {
- It("Create KMS tables via changes, and Verify via verifyApiKey", func(done Done) {
- server := mockKMSserver()
- var event = common.ChangeList{}
- closed := 0
- /* API Product */
- srvItems := common.Row{
- "id": {
- Value: "ch_api_product_2",
- },
- "api_resources": {
- Value: "{}",
- },
- "environments": {
- Value: "{Env_0, Env_1}",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
+
+ handler := handler{}
+
+ It("should set DB to appropriate version", func() {
+
+ saveDb := getDB()
+
+ s := &common.Snapshot{
+ SnapshotInfo: "test_snapshot",
+ Tables: []common.Table{},
}
- /* DEVELOPER */
- devItems := common.Row{
- "id": {
- Value: "ch_developer_id_2",
- },
- "status": {
- Value: "Active",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
+ handler.Handle(s)
- /* APP */
- appItems := common.Row{
- "id": {
- Value: "ch_application_id_2",
- },
- "developer_id": {
- Value: "ch_developer_id_2",
- },
- "status": {
- Value: "Approved",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "parent_id": {
- Value: "ch_developer_id_2",
- },
- }
+ expectedDB, err := data.DBVersion(s.SnapshotInfo)
+ Expect(err).NotTo(HaveOccurred())
- /* CRED */
- credItems := common.Row{
- "id": {
- Value: "ch_app_credential_2",
- },
- "app_id": {
- Value: "ch_application_id_2",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
+ Expect(getDB() == expectedDB).Should(BeTrue())
- /* APP_CRED_APIPRD_MAPPER */
- mpItems := common.Row{
- "apiprdt_id": {
- Value: "ch_api_product_2",
- },
- "app_id": {
- Value: "ch_application_id_2",
- },
- "appcred_id": {
- Value: "ch_app_credential_2",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- }
-
- event.Changes = []common.Change{
- {
- Table: "kms.api_product",
- NewRow: srvItems,
- Operation: 1,
- },
- {
- Table: "kms.developer",
- NewRow: devItems,
- Operation: 1,
- },
- {
- Table: "kms.app",
- NewRow: appItems,
- Operation: 1,
- },
- {
- Table: "kms.app_credential",
- NewRow: credItems,
- Operation: 1,
- },
- {
- Table: "kms.app_credential_apiproduct_mapper",
- NewRow: mpItems,
- Operation: 1,
- },
- }
-
- h := &test_handler{
- "checkDatabase post Insertion",
- func(e apid.Event) {
- defer GinkgoRecover()
-
- // ignore the first event, let standard listener process it
- changeSet := e.(*common.ChangeList)
- if len(changeSet.Changes) > 0 || closed == 1 {
- return
- }
-
- rsp, err := http.PostForm(
- fmt.Sprintf("%s/verifiers/apikey",
- server.URL),
- url.Values{"key": {"ch_app_credential_2"},
- "uriPath": {"/test"},
- "scopeuuid": {"XYZ"},
- "action": {"verify"}})
-
- Expect(err).Should(Succeed())
- defer rsp.Body.Close()
- body, readErr := ioutil.ReadAll(rsp.Body)
- Expect(readErr).Should(Succeed())
- var respj kmsResponseSuccess
- json.Unmarshal(body, &respj)
- Expect(respj.Type).Should(Equal("APIKeyContext"))
- Expect(rsp.StatusCode).To(Equal(http.StatusOK))
- Expect(respj.RspInfo.Key).Should(Equal("ch_app_credential_2"))
- Expect(respj.RspInfo.Type).Should(Equal("developer"))
- dataValue := rsp.Header.Get("Content-Type")
- Expect(dataValue).To(Equal("application/json"))
-
- rsp, err = http.PostForm(
- fmt.Sprintf("%s/verifiers/apikey",
- server.URL),
- url.Values{"key": {"ch_app_credential_2"},
- "uriPath": {"/test"},
- "scopeuuid": {"badscope"},
- "action": {"verify"}})
-
- Expect(err).Should(Succeed())
- defer rsp.Body.Close()
- body, readErr = ioutil.ReadAll(rsp.Body)
- Expect(readErr).Should(Succeed())
- var respe kmsResponseFail
- json.Unmarshal(body, &respe)
- Expect(rsp.StatusCode).To(Equal(http.StatusOK))
- dataValue = rsp.Header.Get("Content-Type")
- Expect(dataValue).To(Equal("application/json"))
- Expect(respe.Type).Should(Equal("ErrorResult"))
- Expect(respe.ErrInfo.ErrorCode).Should(Equal("ENV_VALIDATION_FAILED"))
-
- closed = 1
- close(done)
- },
- }
-
- apid.Events().Listen("ApigeeSync", h)
- apid.Events().Emit("ApigeeSync", &event)
- apid.Events().Emit("ApigeeSync", &common.ChangeList{})
+ //restore the db to the valid one
+ setDB(saveDb)
})
+
})
-
- Context("KMS create/updates verification via changes for Company", func() {
- It("Create KMS tables via changes, and Verify via verifyApiKey", func(done Done) {
- server := mockKMSserver()
- var event = common.ChangeList{}
- closed := 0
- /* API Product */
- srvItems := common.Row{
- "id": {
- Value: "ch_api_product_5",
- },
- "api_resources": {
- Value: "{}",
- },
- "environments": {
- Value: "{Env_0, Env_1}",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* COMPANY */
- companyItems := common.Row{
- "id": {
- Value: "ch_company_id_5",
- },
- "status": {
- Value: "Active",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "name": {
- Value: "test_company_name0",
- },
- "display_name": {
- Value: "test_company_display_name0",
- },
- }
- /* COMPANY_DEVELOPER */
- companyDeveloperItems := common.Row{
- "id": {
- Value: "ch_developer_id_5",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "company_id": {
- Value: "ch_company_id_5",
- },
- "developer_id": {
- Value: "ch_developer_id_5",
- },
- }
-
- /* APP */
- appItems := common.Row{
- "id": {
- Value: "ch_application_id_5",
- },
- "company_id": {
- Value: "ch_company_id_5",
- },
- "status": {
- Value: "Approved",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "parent_id": {
- Value: "ch_company_id_5",
- },
- }
-
- /* CRED */
- credItems := common.Row{
- "id": {
- Value: "ch_app_credential_5",
- },
- "app_id": {
- Value: "ch_application_id_5",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* APP_CRED_APIPRD_MAPPER */
- mpItems := common.Row{
- "apiprdt_id": {
- Value: "ch_api_product_5",
- },
- "app_id": {
- Value: "ch_application_id_5",
- },
- "appcred_id": {
- Value: "ch_app_credential_5",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- }
-
- event.Changes = []common.Change{
- {
- Table: "kms.api_product",
- NewRow: srvItems,
- Operation: 1,
- },
-
- {
- Table: "kms.app",
- NewRow: appItems,
- Operation: 1,
- },
- {
- Table: "kms.app_credential",
- NewRow: credItems,
- Operation: 1,
- },
- {
- Table: "kms.app_credential_apiproduct_mapper",
- NewRow: mpItems,
- Operation: 1,
- },
- {
- Table: "kms.company",
- NewRow: companyItems,
- Operation: 1,
- },
- {
- Table: "kms.company_developer",
- NewRow: companyDeveloperItems,
- Operation: 1,
- },
- }
-
- h := &test_handler{
- "checkDatabase post Insertion",
- func(e apid.Event) {
- defer GinkgoRecover()
-
- // ignore the first event, let standard listener process it
- changeSet := e.(*common.ChangeList)
- if len(changeSet.Changes) > 0 || closed == 1 {
- return
- }
-
- rsp, err := http.PostForm(
- fmt.Sprintf("%s/verifiers/apikey",
- server.URL),
- url.Values{"key": {"ch_app_credential_5"},
- "uriPath": {"/test"},
- "scopeuuid": {"XYZ"},
- "action": {"verify"}})
-
- Expect(err).Should(Succeed())
- defer rsp.Body.Close()
- body, readErr := ioutil.ReadAll(rsp.Body)
- Expect(readErr).Should(Succeed())
- var respj kmsResponseSuccess
- json.Unmarshal(body, &respj)
- Expect(rsp.StatusCode).To(Equal(http.StatusOK))
- Expect(respj.RspInfo.Type).Should(Equal("company"))
- Expect(respj.Type).Should(Equal("APIKeyContext"))
- Expect(respj.RspInfo.Key).Should(Equal("ch_app_credential_5"))
- dataValue := rsp.Header.Get("Content-Type")
- Expect(dataValue).To(Equal("application/json"))
-
- rsp, err = http.PostForm(
- fmt.Sprintf("%s/verifiers/apikey",
- server.URL),
- url.Values{"key": {"ch_app_credential_5"},
- "uriPath": {"/test"},
- "scopeuuid": {"badscope"},
- "action": {"verify"}})
-
- Expect(err).Should(Succeed())
- defer rsp.Body.Close()
- body, readErr = ioutil.ReadAll(rsp.Body)
- Expect(readErr).Should(Succeed())
- var respe kmsResponseFail
- json.Unmarshal(body, &respe)
- Expect(rsp.StatusCode).To(Equal(http.StatusOK))
- dataValue = rsp.Header.Get("Content-Type")
- Expect(dataValue).To(Equal("application/json"))
- Expect(respe.Type).Should(Equal("ErrorResult"))
- Expect(respe.ErrInfo.ErrorCode).Should(Equal("ENV_VALIDATION_FAILED"))
-
- closed = 1
- close(done)
- },
- }
-
- apid.Events().Listen("ApigeeSync", h)
- apid.Events().Emit("ApigeeSync", &event)
- apid.Events().Emit("ApigeeSync", &common.ChangeList{})
- })
- })
-
- It("Modify tables in KMS tables, and verify via verifyApiKey for Developer", func(done Done) {
- closed := 0
- var event = common.ChangeList{}
- var event2 = common.ChangeList{}
-
- /* Orig data */
- /* API Product */
- srvItemsOld := common.Row{
- "id": {
- Value: "ch_api_product_0",
- },
- "api_resources": {
- Value: "{}",
- },
- "environments": {
- Value: "{Env_0, Env_1}",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* DEVELOPER */
- devItemsOld := common.Row{
- "id": {
- Value: "ch_developer_id_0",
- },
- "status": {
- Value: "Active",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* APP */
- appItemsOld := common.Row{
- "id": {
- Value: "ch_application_id_0",
- },
- "developer_id": {
- Value: "ch_developer_id_0",
- },
- "status": {
- Value: "Approved",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "parent_id": {
- Value: "ch_developer_id_0",
- },
- }
-
- /* CRED */
- credItemsOld := common.Row{
- "id": {
- Value: "ch_app_credential_0",
- },
- "app_id": {
- Value: "ch_application_id_0",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* APP_CRED_APIPRD_MAPPER */
- mpItemsOld := common.Row{
- "apiprdt_id": {
- Value: "ch_api_product_0",
- },
- "app_id": {
- Value: "ch_application_id_0",
- },
- "appcred_id": {
- Value: "ch_app_credential_0",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- }
-
- /* New to be replaced data */
- /* API PRODUCT */
- srvItemsNew := common.Row{
- "id": {
- Value: "ch_api_product_1",
- },
- "api_resources": {
- Value: "{}",
- },
- "environments": {
- Value: "{Env_0, Env_1}",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* DEVELOPER */
- devItemsNew := common.Row{
- "id": {
- Value: "ch_developer_id_1",
- },
- "status": {
- Value: "Active",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* APP */
- appItemsNew := common.Row{
- "id": {
- Value: "ch_application_id_1",
- },
- "developer_id": {
- Value: "ch_developer_id_1",
- },
- "status": {
- Value: "Approved",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "parent_id": {
- Value: "ch_developer_id_1",
- },
- }
-
- /* CRED */
- credItemsNew := common.Row{
- "id": {
- Value: "ch_app_credential_1",
- },
- "app_id": {
- Value: "ch_application_id_1",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* APP_CRED_APIPRD_MAPPER */
- mpItemsNew := common.Row{
- "apiprdt_id": {
- Value: "ch_api_product_1",
- },
- "app_id": {
- Value: "ch_application_id_1",
- },
- "appcred_id": {
- Value: "ch_app_credential_1",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- }
-
- event.Changes = []common.Change{
- {
- Table: "kms.api_product",
- NewRow: srvItemsOld,
- Operation: 1,
- },
- {
- Table: "kms.developer",
- NewRow: devItemsOld,
- Operation: 1,
- },
-
- {
- Table: "kms.app",
- NewRow: appItemsOld,
- Operation: 1,
- },
- {
- Table: "kms.app_credential",
- NewRow: credItemsOld,
- Operation: 1,
- },
- {
- Table: "kms.app_credential_apiproduct_mapper",
- NewRow: mpItemsOld,
- Operation: 1,
- },
- }
-
- event2.Changes = []common.Change{
- {
- Table: "kms.api_product",
- OldRow: srvItemsOld,
- NewRow: srvItemsNew,
- Operation: 2,
- },
- {
- Table: "kms.developer",
- OldRow: devItemsOld,
- NewRow: devItemsNew,
- Operation: 2,
- },
- {
- Table: "kms.app",
- OldRow: appItemsOld,
- NewRow: appItemsNew,
- Operation: 2,
- },
- {
- Table: "kms.app_credential",
- OldRow: credItemsOld,
- NewRow: credItemsNew,
- Operation: 2,
- },
- {
- Table: "kms.app_credential_apiproduct_mapper",
- OldRow: mpItemsOld,
- NewRow: mpItemsNew,
- Operation: 2,
- },
- }
-
- h := &test_handler{
- "checkDatabase post Insertion",
- func(e apid.Event) {
- defer GinkgoRecover()
-
- // ignore the first event, let standard listener process it
- changeSet := e.(*common.ChangeList)
- if len(changeSet.Changes) > 0 || closed == 1 {
- return
- }
- v := url.Values{
- "key": []string{"ch_app_credential_1"},
- "uriPath": []string{"/test"},
- "scopeuuid": []string{"XYZ"},
- "action": []string{"verify"},
- }
- rsp, err := verifyAPIKey(v)
- Expect(err).ShouldNot(HaveOccurred())
- var respj kmsResponseSuccess
- json.Unmarshal(rsp, &respj)
- Expect(respj.Type).Should(Equal("APIKeyContext"))
- Expect(respj.RspInfo.Key).Should(Equal("ch_app_credential_1"))
- Expect(respj.RspInfo.Type).Should(Equal("developer"))
- closed = 1
- close(done)
- },
- }
-
- apid.Events().Listen("ApigeeSync", h)
- apid.Events().Emit("ApigeeSync", &event)
- apid.Events().Emit("ApigeeSync", &event2)
- apid.Events().Emit("ApigeeSync", &common.ChangeList{})
- })
-
- It("Modify tables in KMS tables, and verify via verifyApiKey for Company", func(done Done) {
- closed := 0
- var event = common.ChangeList{}
- var event2 = common.ChangeList{}
-
- /* Orig data */
- /* API Product */
- srvItemsOld := common.Row{
- "id": {
- Value: "ch_api_product_0",
- },
- "api_resources": {
- Value: "{}",
- },
- "environments": {
- Value: "{Env_0, Env_1}",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* DEVELOPER */
- devItemsOld := common.Row{
- "id": {
- Value: "ch_developer_id_0",
- },
- "status": {
- Value: "Active",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* APP */
- appItemsOld := common.Row{
- "id": {
- Value: "ch_application_id_0",
- },
- "company_id": {
- Value: "ch_company_id_0",
- },
- "status": {
- Value: "Approved",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "parent_id": {
- Value: "ch_company_id_0",
- },
- }
-
- /* COMPANY */
- companyItemsOld := common.Row{
- "id": {
- Value: "ch_company_id_0",
- },
- "status": {
- Value: "Active",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "name": {
- Value: "test_company_name0",
- },
- "display_name": {
- Value: "test_company_display_name0",
- },
- }
-
- /* COMPANY_DEVELOPER */
- companyDeveloperItemsOld := common.Row{
- "id": {
- Value: "ch_developer_id_0",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "company_id": {
- Value: "ch_company_id_0",
- },
- "developer_id": {
- Value: "ch_developer_id_0",
- },
- }
-
- /* CRED */
- credItemsOld := common.Row{
- "id": {
- Value: "ch_app_credential_0",
- },
- "app_id": {
- Value: "ch_application_id_0",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* APP_CRED_APIPRD_MAPPER */
- mpItemsOld := common.Row{
- "apiprdt_id": {
- Value: "ch_api_product_0",
- },
- "app_id": {
- Value: "ch_application_id_0",
- },
- "appcred_id": {
- Value: "ch_app_credential_0",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- }
-
- /* New to be replaced data */
- /* API PRODUCT */
- srvItemsNew := common.Row{
- "id": {
- Value: "ch_api_product_1",
- },
- "api_resources": {
- Value: "{}",
- },
- "environments": {
- Value: "{Env_0, Env_1}",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* DEVELOPER */
- devItemsNew := common.Row{
- "id": {
- Value: "ch_developer_id_1",
- },
- "status": {
- Value: "Active",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* COMPANY */
- companyItemsNew := common.Row{
- "id": {
- Value: "ch_company_id_1",
- },
- "status": {
- Value: "Active",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "name": {
- Value: "test_company_name0",
- },
- "display_name": {
- Value: "test_company_display_name0",
- },
- }
-
- /* COMPANY_DEVELOPER */
- companyDeveloperItemsNew := common.Row{
- "id": {
- Value: "ch_developer_id_1",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "company_id": {
- Value: "ch_company_id_1",
- },
- "developer_id": {
- Value: "ch_developer_id_1",
- },
- }
-
- /* APP */
- appItemsNew := common.Row{
- "id": {
- Value: "ch_application_id_1",
- },
- "company_id": {
- Value: "ch_company_id_1",
- },
- "status": {
- Value: "Approved",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "parent_id": {
- Value: "ch_company_id_1",
- },
- }
-
- /* CRED */
- credItemsNew := common.Row{
- "id": {
- Value: "ch_app_credential_1",
- },
- "app_id": {
- Value: "ch_application_id_1",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- }
-
- /* APP_CRED_APIPRD_MAPPER */
- mpItemsNew := common.Row{
- "apiprdt_id": {
- Value: "ch_api_product_1",
- },
- "app_id": {
- Value: "ch_application_id_1",
- },
- "appcred_id": {
- Value: "ch_app_credential_1",
- },
- "status": {
- Value: "Approved",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- }
-
- event.Changes = []common.Change{
- {
- Table: "kms.api_product",
- NewRow: srvItemsOld,
- Operation: 1,
- },
- {
- Table: "kms.developer",
- NewRow: devItemsOld,
- Operation: 1,
- },
- {
- Table: "kms.company",
- NewRow: companyItemsOld,
- Operation: 1,
- },
- {
- Table: "kms.company_developer",
- NewRow: companyDeveloperItemsOld,
- Operation: 1,
- },
- {
- Table: "kms.app",
- NewRow: appItemsOld,
- Operation: 1,
- },
- {
- Table: "kms.app_credential",
- NewRow: credItemsOld,
- Operation: 1,
- },
- {
- Table: "kms.app_credential_apiproduct_mapper",
- NewRow: mpItemsOld,
- Operation: 1,
- },
- }
-
- event2.Changes = []common.Change{
- {
- Table: "kms.api_product",
- OldRow: srvItemsOld,
- NewRow: srvItemsNew,
- Operation: 2,
- },
- {
- Table: "kms.developer",
- OldRow: devItemsOld,
- NewRow: devItemsNew,
- Operation: 2,
- },
- {
- Table: "kms.company",
- OldRow: companyItemsOld,
- NewRow: companyItemsNew,
- Operation: 2,
- },
- {
- Table: "kms.company_developer",
- OldRow: companyDeveloperItemsOld,
- NewRow: companyDeveloperItemsNew,
- Operation: 2,
- },
- {
- Table: "kms.app",
- OldRow: appItemsOld,
- NewRow: appItemsNew,
- Operation: 2,
- },
- {
- Table: "kms.app_credential",
- OldRow: credItemsOld,
- NewRow: credItemsNew,
- Operation: 2,
- },
- {
- Table: "kms.app_credential_apiproduct_mapper",
- OldRow: mpItemsOld,
- NewRow: mpItemsNew,
- Operation: 2,
- },
- }
-
- h := &test_handler{
- "checkDatabase post Insertion",
- func(e apid.Event) {
- defer GinkgoRecover()
-
- // ignore the first event, let standard listener process it
- changeSet := e.(*common.ChangeList)
- if len(changeSet.Changes) > 0 || closed == 1 {
- return
- }
- v := url.Values{
- "key": []string{"ch_app_credential_1"},
- "uriPath": []string{"/test"},
- "scopeuuid": []string{"XYZ"},
- "action": []string{"verify"},
- }
- rsp, err := verifyAPIKey(v)
- Expect(err).ShouldNot(HaveOccurred())
- var respj kmsResponseSuccess
- json.Unmarshal(rsp, &respj)
- Expect(respj.Type).Should(Equal("APIKeyContext"))
- Expect(respj.RspInfo.Key).Should(Equal("ch_app_credential_1"))
-
- closed = 1
- close(done)
- },
- }
-
- apid.Events().Listen("ApigeeSync", h)
- apid.Events().Emit("ApigeeSync", &event)
- apid.Events().Emit("ApigeeSync", &event2)
- apid.Events().Emit("ApigeeSync", &common.ChangeList{})
- })
-
})
-type test_handler struct {
- description string
- f func(event apid.Event)
-}
-
-func (t *test_handler) String() string {
- return t.description
-}
-
-func (t *test_handler) Handle(event apid.Event) {
- t.f(event)
-}
-
func addScopes(db apid.DB) {
txn, _ := db.Begin()
txn.Exec("INSERT INTO DATA_SCOPE (id, _change_selector, apid_cluster_id, scope, org, env) "+
@@ -1174,9 +61,3 @@
log.Info("Inserted DATA_SCOPE for test")
txn.Commit()
}
-
-func mockKMSserver() *httptest.Server {
- return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- handleRequest(w, r)
- }))
-}
diff --git a/sql/init_mock_db.sql b/sql/init_mock_db.sql
new file mode 100644
index 0000000..dc14fda
--- /dev/null
+++ b/sql/init_mock_db.sql
@@ -0,0 +1,246 @@
+PRAGMA foreign_keys=OFF;
+BEGIN TRANSACTION;
+CREATE TABLE _transicator_metadata
+(key varchar primary key,
+value varchar);
+INSERT INTO "_transicator_metadata" VALUES('snapshot','1142790:1142790:');
+CREATE TABLE _transicator_tables
+(tableName varchar not null,
+columnName varchar not null,
+typid integer,
+primaryKey bool);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','data_scope_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','name',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','uri',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','checksumtype',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','checksum',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','created',1114,0);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','created_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','updated',1114,0);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','updated_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_bundle_config','crc',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','bundle_config_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','apid_cluster_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','data_scope_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','bundle_config_name',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','bundle_config_json',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','config_json',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','created',1114,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','created_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','updated',1114,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','updated_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment','_change_selector',25,1);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','tenant_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','name',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','display_name',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','description',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','api_resources',1015,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','approval_type',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','scopes',1015,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','proxies',1015,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','environments',1015,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','quota',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','quota_time_unit',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','quota_interval',23,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','created_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','created_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','updated_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','updated_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_api_product','_change_selector',1043,0);
+INSERT INTO "_transicator_tables" VALUES('attributes','tenant_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('attributes','entity_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('attributes','cust_id',2950,0);
+INSERT INTO "_transicator_tables" VALUES('attributes','org_id',2950,0);
+INSERT INTO "_transicator_tables" VALUES('attributes','dev_id',2950,0);
+INSERT INTO "_transicator_tables" VALUES('attributes','comp_id',2950,0);
+INSERT INTO "_transicator_tables" VALUES('attributes','apiprdt_id',2950,0);
+INSERT INTO "_transicator_tables" VALUES('attributes','app_id',2950,0);
+INSERT INTO "_transicator_tables" VALUES('attributes','appcred_id',1043,0);
+INSERT INTO "_transicator_tables" VALUES('attributes','name',1043,1);
+INSERT INTO "_transicator_tables" VALUES('attributes','type',19701,1);
+INSERT INTO "_transicator_tables" VALUES('attributes','value',1043,0);
+INSERT INTO "_transicator_tables" VALUES('attributes','_change_selector',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company','id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_company','tenant_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_company','name',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_company','display_name',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company','status',19564,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company','created_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_company','created_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company','updated_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_company','updated_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company','_change_selector',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','name',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','display_name',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','type',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','tenant_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','customer_id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','description',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','created_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','created_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','updated_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','updated_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_organization','_change_selector',1043,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_apid_cluster','id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('edgex_apid_cluster','name',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_apid_cluster','description',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_apid_cluster','umbrella_org_app_name',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_apid_cluster','created',1114,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_apid_cluster','created_by',25,1);
+INSERT INTO "_transicator_tables" VALUES('edgex_apid_cluster','updated',1114,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_apid_cluster','updated_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_apid_cluster','_change_selector',25,1);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment_history','id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment_history','name',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment_history','ext_ref_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment_history','display_name',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment_history','description',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment_history','created_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment_history','created_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment_history','updated_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_deployment_history','updated_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('configuration','id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('configuration','body',25,0);
+INSERT INTO "_transicator_tables" VALUES('configuration','created',1114,0);
+INSERT INTO "_transicator_tables" VALUES('configuration','created_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('configuration','updated',1114,0);
+INSERT INTO "_transicator_tables" VALUES('configuration','updated_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_data_scope','id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('edgex_data_scope','apid_cluster_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('edgex_data_scope','scope',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_data_scope','org',25,1);
+INSERT INTO "_transicator_tables" VALUES('edgex_data_scope','env',25,1);
+INSERT INTO "_transicator_tables" VALUES('edgex_data_scope','created',1114,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_data_scope','created_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_data_scope','updated',1114,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_data_scope','updated_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_data_scope','_change_selector',25,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','tenant_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','consumer_secret',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','app_id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','method_type',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','status',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','issued_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','expires_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','app_status',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','scopes',1015,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','created_at',1114,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','created_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','updated_at',1114,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','updated_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential','_change_selector',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company_developer','tenant_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_company_developer','company_id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_company_developer','developer_id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_company_developer','roles',1015,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company_developer','created_at',1114,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company_developer','created_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company_developer','updated_at',1114,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company_developer','updated_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_company_developer','_change_selector',1043,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','deployment_id',1043,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','action',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','bundle_config_id',1043,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','apid_cluster_id',1043,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','data_scope_id',1043,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','bundle_config_json',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','config_json',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','created',1114,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','created_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','updated',1114,0);
+INSERT INTO "_transicator_tables" VALUES('edgex_deployment_history','updated_by',25,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app','id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app','tenant_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app','name',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app','display_name',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app','access_type',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app','callback_url',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app','status',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app','app_family',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app','company_id',2950,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app','developer_id',2950,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app','parent_id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app','type',19625,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app','created_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app','created_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app','updated_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app','updated_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app','_change_selector',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential_apiproduct_mapper','tenant_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential_apiproduct_mapper','appcred_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential_apiproduct_mapper','app_id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential_apiproduct_mapper','apiprdt_id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential_apiproduct_mapper','status',19670,0);
+INSERT INTO "_transicator_tables" VALUES('kms_app_credential_apiproduct_mapper','_change_selector',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','id',2950,1);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','tenant_id',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','username',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','first_name',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','last_name',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','password',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','email',1043,1);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','status',19564,0);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','encrypted_password',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','salt',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','created_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','created_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','updated_at',1114,1);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','updated_by',1043,0);
+INSERT INTO "_transicator_tables" VALUES('kms_developer','_change_selector',1043,0);
+CREATE TABLE "kms_deployment" (id text,bundle_config_id text,apid_cluster_id text,data_scope_id text,bundle_config_name text,bundle_config_json text,config_json text,created blob,created_by text,updated blob,updated_by text,_change_selector text, primary key (id,bundle_config_id,apid_cluster_id,data_scope_id,_change_selector));
+INSERT INTO "kms_deployment" VALUES('321e443b-9db9-4043-b987-1599e0cdd029','1b6a5e15-4bb8-4c8e-ae3d-63e6efb9ba85','bootstrap','dataScope1','gcp-test-bundle','{"id":"1b6a5e15-4bb8-4c8e-ae3d-63e6efb9ba85","created":"2017-02-27T07:40:57.810Z","createdBy":"fierrom@google.com","updated":"2017-02-27T07:40:57.810Z","updatedBy":"fierrom@google.com","name":"gcp-test-bundle","uri":"https://gist.github.com/mdobson/f9d537c5192a660f692affc294266df2/archive/234c7cbf227d769278bee9b06ace51d6062fe96b.zip","checksumType":"md5","checksum":"06fde116f0270b3734a48653d0cfb495"}','{}','2017-02-27 07:41:33.888+00:00','fierrom@google.com','2017-02-27 07:41:33.888+00:00','fierrom@google.com','bootstrap');
+CREATE TABLE "kms_api_product" (id text,tenant_id text,name text,display_name text,description text,api_resources text,approval_type text,scopes text,proxies text,environments text,quota text,quota_time_unit text,quota_interval integer,created_at blob,created_by text,updated_at blob,updated_by text,_change_selector text, primary key (id,tenant_id,created_at,updated_at));
+INSERT INTO "kms_api_product" VALUES('f5f07319-5104-471c-9df3-64b1842dbe00','43aef41d','test','test','','{/}','AUTO','{""}','{helloworld}','{test}','','',NULL,'2017-02-27 07:32:49.897+00:00','vbhangale@apigee.com','2017-02-27 07:32:49.897+00:00','vbhangale@apigee.com','43aef41d');
+INSERT INTO "kms_api_product" VALUES('87a4bfaa-b3c4-47cd-b6c5-378cdb68610c','43aef41d','GregProduct','Greg''s Product','A product for testing Greg','{/**}','AUTO','{""}','{}','{test}','','',NULL,'2017-03-01 22:50:41.75+00:00','greg@google.com','2017-03-01 22:50:41.75+00:00','greg@google.com','43aef41d');
+CREATE TABLE 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,tenant_id,entity_id,entity_id,name,type,type));
+INSERT INTO "attributes" VALUES('43aef41d','ff0b5496-c674-4531-9443-ace334504f59','','ff0b5496-c674-4531-9443-ace334504f59','','','','','','features.isSmbOrganization','ORGANIZATION','true','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','ff0b5496-c674-4531-9443-ace334504f59','','ff0b5496-c674-4531-9443-ace334504f59','','','','','','features.mgmtGroup','ORGANIZATION','management-edgex','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','ff0b5496-c674-4531-9443-ace334504f59','','ff0b5496-c674-4531-9443-ace334504f59','','','','','','features.isEdgexEnabled','ORGANIZATION','true','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','ff0b5496-c674-4531-9443-ace334504f59','','ff0b5496-c674-4531-9443-ace334504f59','','','','','','features.isCpsEnabled','ORGANIZATION','true','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','f5f07319-5104-471c-9df3-64b1842dbe00','','','','','f5f07319-5104-471c-9df3-64b1842dbe00','','','access','APIPRODUCT','internal','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','f5f07319-5104-471c-9df3-64b1842dbe00','','','','','f5f07319-5104-471c-9df3-64b1842dbe00','','','test','APIPRODUCT','v1','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','8f5c9b86-0783-439c-b8e6-7ab9549e30e8','','','','','','8f5c9b86-0783-439c-b8e6-7ab9549e30e8','','DisplayName','APP','MitchTestApp','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','8f5c9b86-0783-439c-b8e6-7ab9549e30e8','','','','','','8f5c9b86-0783-439c-b8e6-7ab9549e30e8','','Notes','APP','','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','87c20a31-a504-4ed5-89a5-700adfbb0142','','','','','','87c20a31-a504-4ed5-89a5-700adfbb0142','','DisplayName','APP','MitchTestApp2','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','87c20a31-a504-4ed5-89a5-700adfbb0142','','','','','','87c20a31-a504-4ed5-89a5-700adfbb0142','','Notes','APP','','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','87a4bfaa-b3c4-47cd-b6c5-378cdb68610c','','','','','87a4bfaa-b3c4-47cd-b6c5-378cdb68610c','','','access','APIPRODUCT','public','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','be902c0c-c54b-4a65-85d6-358ff8639586','','','','','','be902c0c-c54b-4a65-85d6-358ff8639586','','DisplayName','APP','Greg''s Test App','43aef41d');
+INSERT INTO "attributes" VALUES('43aef41d','be902c0c-c54b-4a65-85d6-358ff8639586','','','','','','be902c0c-c54b-4a65-85d6-358ff8639586','','Notes','APP','','43aef41d');
+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,tenant_id,name,created_at,updated_at));
+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,tenant_id,customer_id,created_at,updated_at));
+INSERT INTO "kms_organization" VALUES('ff0b5496-c674-4531-9443-ace334504f59','edgex_gcp1','edgex_gcp1','paid','43aef41d','307eadd7-c6d7-4ec1-b433-59bcd22cd06d','','2017-02-25 00:17:58.159+00:00','vbhangale@apigee.com','2017-02-25 00:18:14.729+00:00','vbhangale@apigee.com','43aef41d');
+CREATE TABLE "edgex_apid_cluster" (id text,name text,description text,umbrella_org_app_name text,created blob,created_by text,updated blob,updated_by text,_change_selector text, primary key (id,created_by,created_by,created_by,created_by,_change_selector));
+INSERT INTO "edgex_apid_cluster" VALUES('bootstrap','mitch-gcp-cluster','','X-5NF3iDkQLtQt6uPp4ELYhuOkzL5BbSMgf3Gx','2017-02-27 07:39:22.179+00:00','fierrom@google.com','2017-02-27 07:39:22.179+00:00','fierrom@google.com','bootstrap');
+CREATE TABLE "edgex_data_scope" (id text,apid_cluster_id text,scope text,org text,env text,created blob,created_by text,updated blob,updated_by text,_change_selector text, primary key (id,apid_cluster_id,apid_cluster_id,org,env,_change_selector));
+INSERT INTO "edgex_data_scope" VALUES('dataScope1','bootstrap','43aef41d','edgex_gcp1','test','2017-02-27 07:40:25.094+00:00','fierrom@google.com','2017-02-27 07:40:25.094+00:00','fierrom@google.com','bootstrap');
+INSERT INTO "edgex_data_scope" VALUES('dataScope2','bootstrap','43aef41d','edgex_gcp1','test','2017-02-27 07:40:25.094+00:00','fierrom@google.com','2017-02-27 07:40:25.094+00:00','sendtofierro@gmail.com','bootstrap');
+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,app_id,issued_at,expires_at));
+INSERT INTO "kms_app_credential" VALUES('xA9QylNTGQxKGYtHXwvmx8ldDaIJMAEx','43aef41d','lscGO3lfs3zh8iQ','87c20a31-a504-4ed5-89a5-700adfbb0142','','APPROVED','2017-02-27 07:45:22.774+00:00','','','{}','2017-02-27 07:45:22.774+00:00','-NA-','2017-02-27 07:45:22.877+00:00','-NA-','43aef41d');
+INSERT INTO "kms_app_credential" VALUES('ds986MejQqoWRSSeC0UTIPSJ3rtaG2xv','43aef41d','5EBOSSQrLOLO9siN','8f5c9b86-0783-439c-b8e6-7ab9549e30e8','','APPROVED','2017-02-27 07:43:23.263+00:00','','','{}','2017-02-27 07:43:23.263+00:00','-NA-','2017-02-27 07:48:16.717+00:00','-NA-','43aef41d');
+INSERT INTO "kms_app_credential" VALUES('DMh0uQOPA5rbhl4YTnGvBAzGzOGuMH3A','43aef41d','MTfK8xscShhnops','be902c0c-c54b-4a65-85d6-358ff8639586','','APPROVED','2017-03-01 22:52:28.019+00:00','','','{}','2017-03-01 22:52:28.019+00:00','-NA-','2017-03-01 22:52:28.022+00:00','-NA-','43aef41d');
+CREATE TABLE "kms_company_developer" (tenant_id text,company_id text,developer_id text,roles text,created_at blob,created_by text,updated_at blob,updated_by text,_change_selector text, primary key (tenant_id,company_id,developer_id));
+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,tenant_id,name,name,app_family,parent_id,created_at,updated_at));
+INSERT INTO "kms_app" VALUES('87c20a31-a504-4ed5-89a5-700adfbb0142','43aef41d','MitchTestApp2','','','','APPROVED','default','','8a350848-0aba-4dcc-aa60-97903efb42ef','8a350848-0aba-4dcc-aa60-97903efb42ef','DEVELOPER','2017-02-27 07:45:21.586+00:00','fierrom@google.com' ||
+ '','2017-02-27 07:45:21.586+00:00','fierrom@google.com' ||
+ '','43aef41d');
+INSERT INTO "kms_app" VALUES('8f5c9b86-0783-439c-b8e6-7ab9549e30e8','43aef41d','MitchTestApp','','','','APPROVED','default','','8a350848-0aba-4dcc-aa60-97903efb42ef','8a350848-0aba-4dcc-aa60-97903efb42ef','DEVELOPER','2017-02-27 07:43:22.301+00:00','fierrom@google.com' ||
+ '','2017-02-27 07:48:18.964+00:00','fierrom@google.com' ||
+ '','43aef41d');
+INSERT INTO "kms_app" VALUES('be902c0c-c54b-4a65-85d6-358ff8639586','43aef41d','GregTestApp','','','','APPROVED','default','','046974c2-9ae5-4452-a42f-bb6657e6cdbe','046974c2-9ae5-4452-a42f-bb6657e6cdbe','DEVELOPER','2017-03-01 22:52:27.615+00:00','greg@google.com','2017-03-01 22:52:27.615+00:00','greg@google.com','43aef41d');
+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));
+INSERT INTO "kms_app_credential_apiproduct_mapper" VALUES('43aef41d','ds986MejQqoWRSSeC0UTIPSJ3rtaG2xv','8f5c9b86-0783-439c-b8e6-7ab9549e30e8','f5f07319-5104-471c-9df3-64b1842dbe00','APPROVED','43aef41d');
+INSERT INTO "kms_app_credential_apiproduct_mapper" VALUES('43aef41d','xA9QylNTGQxKGYtHXwvmx8ldDaIJMAEx','87c20a31-a504-4ed5-89a5-700adfbb0142','f5f07319-5104-471c-9df3-64b1842dbe00','APPROVED','43aef41d');
+INSERT INTO "kms_app_credential_apiproduct_mapper" VALUES('43aef41d','DMh0uQOPA5rbhl4YTnGvBAzGzOGuMH3A','be902c0c-c54b-4a65-85d6-358ff8639586','87a4bfaa-b3c4-47cd-b6c5-378cdb68610c','APPROVED','43aef41d');
+CREATE TABLE "kms_developer" (id text,tenant_id text,username text,first_name text,last_name text,password text,email text,status text,encrypted_password text,salt text,created_at blob,created_by text,updated_at blob,updated_by text,_change_selector text, primary key (id,tenant_id,tenant_id,username,email,created_at,updated_at));
+INSERT INTO "kms_developer" VALUES('8a350848-0aba-4dcc-aa60-97903efb42ef','43aef41d','mitchfierro','Mitch','Fierro','','fierrom@google.com','ACTIVE','','','2017-02-27 07:43:00.281+00:00','fierrom@google.com' ||
+ '','2017-02-27 07:43:00.281+00:00','fierrom@google.com' ||
+ '','43aef41d');
+INSERT INTO "kms_developer" VALUES('6ab21170-6bac-481d-9be1-9fda02bdd1da','43aef41d','adikgcp','gcp','dev','','adikancherla@gcp.com','ACTIVE','','','2017-02-27 23:50:24.426+00:00','akancherla@apigee.com','2017-02-27 23:50:24.426+00:00','akancherla@apigee.com','43aef41d');
+INSERT INTO "kms_developer" VALUES('046974c2-9ae5-4452-a42f-bb6657e6cdbe','43aef41d','gregbrail','Greg','Brail','','gregbrail@google.com','ACTIVE','','','2017-03-01 22:51:40.602+00:00','greg@google.com','2017-03-01 22:51:40.602+00:00','greg@google.com','43aef41d');
+COMMIT;
\ No newline at end of file
diff --git a/test_helper.go b/test_helper.go
index 44a341b..08c5215 100644
--- a/test_helper.go
+++ b/test_helper.go
@@ -1,194 +1,87 @@
package apidVerifyApiKey
import (
- "github.com/apigee-labs/transicator/common"
"strconv"
+ "database/sql"
)
func convertSuffix(i int) string {
return strconv.FormatInt(int64(i), 10)
}
-func generateTestApiProduct(suffix int) common.Row {
- return common.Row{
- "id": {
- Value: "api_product_" + convertSuffix(suffix),
- },
- "api_resources": {
- Value: "{/**, /test}",
- },
- "environments": {
- Value: "{Env_0, Env_1}",
- },
- "tenant_id": {
- Value: "tenant_id_xxxx",
- },
- "_change_selector": {
- Value: "Org_0",
- },
+func generateTestApiProduct(suffix int, txn *sql.Tx) {
+
+ s, err := txn.Prepare("INSERT INTO kms_api_product (id, api_resources, environments, tenant_id, _change_selector) VALUES(?, ?, ?, ?, ?)")
+ if err != nil {
+ log.Panicf("WHAT THE FUCK: " + err.Error())
}
+ s.Exec("api_product_" + convertSuffix(suffix), "{/**, /test}", "{Env_0, Env_1}",
+ "tenant_id_xxxx", "Org_0")
}
-func generateTestDeveloper(suffix int) common.Row {
- return common.Row{
- "id": {
- Value: "developer_id_" + convertSuffix(suffix),
- },
- "status": {
- Value: "Active",
- },
- "email": {
- Value: "test@apigee.com",
- },
- "first_name": {
- Value: "Apigee",
- },
- "last_name": {
- Value: "Google",
- },
- "tenant_id": {
- Value: "tenant_id_xxxx",
- },
- "_change_selector": {
- Value: "Org_0",
- },
+func generateTestDeveloper(suffix int, txn *sql.Tx) {
+ s, err := txn.Prepare("INSERT INTO kms_developer (id, status, email, first_name, last_name, tenant_id, _change_selector)" +
+ "VALUES (?, ?, ?, ?, ?, ?, ?)")
+ if err != nil {
+ log.Panicf("This is a bug : " + err.Error())
}
+ s.Exec("developer_id_" + convertSuffix(suffix), "Active", "test@apigee.com", "Apigee", "Google", "tenant_id_xxxx", "Org_0")
}
-func generateTestCompany(suffix int) common.Row {
- return common.Row{
- "id": {
- Value: "company_id_" + convertSuffix(suffix),
- },
- "status": {
- Value: "Active",
- },
- "name": {
- Value: "Apigee Corporation",
- },
- "display_name": {
- Value: "Apigee",
- },
- "tenant_id": {
- Value: "tenant_id_xxxx",
- },
- "_change_selector": {
- Value: "Org_0",
- },
+func generateTestCompany(suffix int, txn *sql.Tx) {
+ s, err := txn.Prepare("INSERT INTO kms_company (id, status, name, display_name, tenant_id, _change_selector)" +
+ "VALUES (?, ?, ?, ?, ?, ?)")
+ if err != nil {
+ log.Panicf("This is a bug: " + err.Error())
}
+ s.Exec("company_id_" + convertSuffix(suffix), "Active", "Apigee Corporation", "Apigee", "tenant_id_xxxx", "Org_0")
}
-func generateTestCompanyDeveloper(suffix int) common.Row {
- return common.Row{
- "developer_id": {
- Value: "developer_id_" + convertSuffix(suffix),
- },
- "tenant_id": {
- Value: "tenant_id_0",
- },
- "_change_selector": {
- Value: "test_org0",
- },
- "company_id": {
- Value: "company_id_" + convertSuffix(suffix),
- },
+func generateTestCompanyDeveloper(suffix int, txn *sql.Tx) {
+ s, err := txn.Prepare("INSERT INTO kms_company_developer (developer_id, tenant_id, _change_selector, company_id)" +
+ "VALUES (?, ?, ?, ?)")
+ if err != nil {
+ log.Panicf("This is a bug: " + err.Error())
}
+ s.Exec("developer_id_" + convertSuffix(suffix), "tenant_id_0", "test_org0", "company_id_" + convertSuffix(suffix))
}
-func generateTestApp(suffix1, suffix2 int) common.Row {
- return common.Row{
- "id": {
- Value: "application_id_" + convertSuffix(suffix1),
- },
- "developer_id": {
- Value: "developer_id_" + convertSuffix(suffix2),
- },
- "status": {
- Value: "Approved",
- },
- "tenant_id": {
- Value: "tenant_id_xxxx",
- },
- "callback_url": {
- Value: "http://apigee.com",
- },
- "_change_selector": {
- Value: "Org_0",
- },
- "parent_id": {
- Value: "developer_id_" + convertSuffix(suffix2),
- },
+func generateTestApp(suffix1, suffix2 int, txn *sql.Tx) {
+ s, err := txn.Prepare("INSERT INTO kms_app (id, developer_id, status, tenant_id, callback_url, _change_selector, parent_id)" +
+ " VALUES(?, ?, ?, ?, ?, ?, ?)")
+ if err != nil {
+ log.Panicf("This is a bug: " + err.Error())
}
+ s.Exec("application_id_" + convertSuffix(suffix1), "developer_id_" + convertSuffix(suffix2), "Approved", "tenant_id_xxxx",
+ "http://apigee.com", "Org_0", "developer_id_" + convertSuffix(suffix2))
+
}
-func generateTestAppCompany(suffix1, suffix2 int) common.Row {
- return common.Row{
- "id": {
- Value: "application_id_" + convertSuffix(suffix1),
- },
- "company_id": {
- Value: "company_id_" + convertSuffix(suffix2),
- },
- "status": {
- Value: "Approved",
- },
- "tenant_id": {
- Value: "tenant_id_xxxx",
- },
- "callback_url": {
- Value: "http://apigee.com",
- },
- "_change_selector": {
- Value: "Org_0",
- },
- "parent_id": {
- Value: "company_id_" + convertSuffix(suffix2),
- },
+func generateTestAppCompany(suffix1, suffix2 int, txn *sql.Tx) {
+ s, err := txn.Prepare("INSERT INTO kms_app (id, company_id, status, tenant_id, callback_url, _change_selector, parent_id)" +
+ " VALUES(?, ?, ?, ?, ?, ?, ?)")
+ if err != nil {
+ log.Panicf("This is a bug: " + err.Error())
}
+ s.Exec("application_id_" + convertSuffix(suffix1), "company_id_" + convertSuffix(suffix2), "Approved", "tenant_id_xxxx",
+ "http://apigee.com", "Org_0", "company_id_" + convertSuffix(suffix2))
+
}
-func generateTestAppCreds(suffix int) common.Row {
- return common.Row{
- "id": {
- Value: "app_credential_" + convertSuffix(suffix),
- },
- "app_id": {
- Value: "application_id_" + convertSuffix(suffix),
- },
- "status": {
- Value: "Approved",
- },
- "tenant_id": {
- Value: "tenant_id_xxxx",
- },
- "callback_url": {
- Value: "http://apigee.com",
- },
- "_change_selector": {
- Value: "Org_0",
- },
+func generateTestAppCreds(suffix int, txn *sql.Tx) {
+ s, err := txn.Prepare("INSERT INTO kms_app_credential (id, app_id, status, tenant_id, _change_selector) VALUES(?, ?, ?, ?, ?)")
+ if err != nil {
+ log.Panicf("This is a bug: " + err.Error())
}
+ s.Exec("app_credential_" + convertSuffix(suffix), "application_id_" + convertSuffix(suffix), "Approved",
+ "tenant_id_xxxx", "Org_0")
}
-func generateTestApiProductMapper(suffix int) common.Row {
- return common.Row{
- "apiprdt_id": {
- Value: "api_product_" + convertSuffix(suffix),
- },
- "status": {
- Value: "Approved",
- },
- "app_id": {
- Value: "application_id_" + convertSuffix(suffix),
- },
- "appcred_id": {
- Value: "app_credential_" + convertSuffix(suffix),
- },
- "tenant_id": {
- Value: "tenant_id_xxxx",
- },
- "_change_selector": {
- Value: "Org_0",
- },
+func generateTestApiProductMapper(suffix int, txn *sql.Tx) {
+ s, err := txn.Prepare("INSERT INTO kms_app_credential_apiproduct_mapper (apiprdt_id, status, app_id, appcred_id, tenant_id, _change_selector) VALUES(?, ?, ?, ?, ?, ?)")
+ if err != nil {
+ log.Panicf("This is a bug: " + err.Error())
}
-}
+ s.Exec("api_product_" + convertSuffix(suffix), "Approved", "application_id_" + convertSuffix(suffix),
+ "app_credential_" + convertSuffix(suffix), "tenant_id_xxxx", "Org_0")
+}
\ No newline at end of file
diff --git a/verifyAPIKey_suite_test.go b/verifyAPIKey_suite_test.go
index e9dd358..2a044e1 100644
--- a/verifyAPIKey_suite_test.go
+++ b/verifyAPIKey_suite_test.go
@@ -42,6 +42,8 @@
handleRequest(w, req)
}
}))
+
+ createTestData(db)
})
var _ = AfterSuite(func() {
@@ -56,3 +58,71 @@
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 data_scope").Scan(&count)
+ log.Info("Found ", count)
+}