blob: cb283d76af2c0f9fc1ecf17917e30aa18953c60a [file] [log] [blame]
package apidVerifyApiKey
import (
"encoding/json"
"github.com/30x/apid"
. "github.com/30x/apidApigeeSync" // for direct access to Payload types
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("listener", func() {
It("should store data from ApigeeSync in the database", func(done Done) {
var event = ChangeSet{}
event.Changes = []ChangePayload{
{
Data: DataPayload{
EntityType: "apiproduct",
Operation: "create",
PldCont: Payload{
Organization: "test_org",
AppName: "Api_product_sync",
Resources: []string{"/**", "/test"},
Environments: []string{"Env_0", "Env_1"},
},
},
},
{
Data: DataPayload{
EntityType: "developer",
Operation: "create",
EntityIdentifier: "developer_id_sync",
PldCont: Payload{
Organization: "test_org",
Email: "person_sync@apigee.com",
Status: "Active",
UserName: "user_sync",
FirstName: "user_first_name_sync",
LastName: "user_last_name_sync",
},
},
},
{
Data: DataPayload{
EntityType: "app",
Operation: "create",
EntityIdentifier: "application_id_sync",
PldCont: Payload{
Organization: "test_org",
Email: "person_sync@apigee.com",
Status: "Approved",
AppName: "application_id_sync",
DeveloperId: "developer_id_sync",
CallbackUrl: "call_back_url",
},
},
},
{
Data: DataPayload{
EntityType: "credential",
Operation: "create",
EntityIdentifier: "credential_sync",
PldCont: Payload{
Organization: "test_org",
AppId: "application_id_sync",
Status: "Approved",
ConsumerSecret: "consumer_secret_sync",
IssuedAt: 349583485,
ApiProducts: []Apip{
{
ApiProduct: "Api_product_sync",
Status: "Approved",
},
},
},
},
},
}
h := &test_handler{
"checkDatabase",
func(e apid.Event) {
// ignore the first event, let standard listener process it
changeSet := e.(*ChangeSet)
if len(changeSet.Changes) > 0 {
return
}
rsp, err := verifyAPIKey("credential_sync", "/test", "Env_0", "test_org", "verify")
Expect(err).ShouldNot(HaveOccurred())
var respj kmsResponseSuccess
json.Unmarshal(rsp, &respj)
Expect(respj.Type).Should(Equal("APIKeyContext"))
Expect(respj.RspInfo.Key).Should(Equal("credential_sync"))
close(done)
},
}
apid.Events().Listen(ApigeeSyncEventSelector, h)
apid.Events().Emit(ApigeeSyncEventSelector, &event) // for standard listener
apid.Events().Emit(ApigeeSyncEventSelector, &ChangeSet{}) // for test listener
})
})
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)
}