blob: 7a623573733e9a6340f31623dcff8e3371bb16c1 [file] [log] [blame]
// Copyright 2017 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package apidVerifyApiKey
import (
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/30x/apid-core"
"github.com/30x/apid-core/factory"
"io/ioutil"
"net/http"
"net/http/httptest"
"os"
"testing"
)
var (
testTempDir string
testServer *httptest.Server
)
var _ = BeforeSuite(func() {
apid.Initialize(factory.DefaultServicesFactory())
config := apid.Config()
var err error
testTempDir, err = ioutil.TempDir("", "api_test")
Expect(err).NotTo(HaveOccurred())
config.Set("data_path", testTempDir)
apid.InitializePlugins("")
db, err := apid.Data().DB()
Expect(err).NotTo(HaveOccurred())
setDB(db)
createTables(db)
createApidClusterTables(db)
addScopes(db)
testServer = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
if req.URL.Path == apiPath {
handleRequest(w, req)
}
}))
createTestData(db)
})
var _ = AfterSuite(func() {
apid.Events().Close()
if testServer != nil {
testServer.Close()
}
os.RemoveAll(testTempDir)
})
func TestVerifyAPIKey(t *testing.T) {
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 EDGEX_DATA_SCOPE").Scan(&count)
log.Info("Found ", count)
}