add mock auth server
diff --git a/change_test.go b/change_test.go
index 4a1981b..09ef3dd 100644
--- a/change_test.go
+++ b/change_test.go
@@ -166,7 +166,7 @@
return nil
}
-func (t *dummyTokenManager) getToken() *oauthToken {
+func (t *dummyTokenManager) getToken() *OauthToken {
return nil
}
diff --git a/data.go b/data.go
index 8e7cca6..3bd5591 100644
--- a/data.go
+++ b/data.go
@@ -453,7 +453,7 @@
// first start - no row, generate a UUID and store it
err = nil
newInstanceID = true
- info.InstanceID = generateUUID()
+ info.InstanceID = GenerateUUID()
log.Debugf("Inserting new apid instance id %s", info.InstanceID)
db.Exec("INSERT INTO APID (instance_id, apid_cluster_id, last_snapshot_info) VALUES (?,?,?)",
@@ -463,7 +463,7 @@
log.Debug("Detected apid cluster id change in config. Apid will start clean")
err = nil
newInstanceID = true
- info.InstanceID = generateUUID()
+ info.InstanceID = GenerateUUID()
db.Exec("REPLACE INTO APID (instance_id, apid_cluster_id, last_snapshot_info) VALUES (?,?,?)",
info.InstanceID, info.ClusterID, "")
@@ -501,7 +501,7 @@
*/
//TODO: Change to https://tools.ietf.org/html/rfc4122 based implementation such as https://github.com/google/uuid
-func generateUUID() string {
+func GenerateUUID() string {
buff := make([]byte, 16)
numRead, err := rand.Read(buff)
diff --git a/dockertests/docker_test.go b/dockertests/docker_test.go
index af4a111..7092e1a 100644
--- a/dockertests/docker_test.go
+++ b/dockertests/docker_test.go
@@ -1,13 +1,16 @@
package dockertests
import (
- "github.com/30x/apidApigeeSync"
+ _ "github.com/30x/apidApigeeSync"
"github.com/30x/apid-core"
. "github.com/onsi/ginkgo"
- "net/http/httptest"
+ . "github.com/onsi/gomega"
"os"
"github.com/30x/apid-core/factory"
- "github.com/Sirupsen/logrus"
+ "testing"
+ "fmt"
+ "time"
+ "net/http/httptest"
)
const (
@@ -43,39 +46,34 @@
* This test suite acts like a dummy plugin. It listens to events emitted by
* apidApigeeSync and runs tests.
*/
+var _ = BeforeSuite(func() {
+ hostname := os.Getenv("APIGEE_SYNC_DOCKER_IP")
+ os.Setenv("APID_CONFIG_FILE", "./apid_config.yaml")
+
+ fmt.Println("Run BeforeSuite")
+
+ apid.Initialize(factory.DefaultServicesFactory())
+ config = apid.Config()
+
+ // Auth Server
+ config.Set(configName, "dockerIT")
+ config.Set(configConsumerKey, "dummyKey")
+ config.Set(configConsumerSecret, "dummySecret")
+ config.Set(configApidClusterId, "testClusterId")
+ //testServer := initDummyAuthServer()
+
+ // Setup dependencies
+ config.Set(configChangeServerBaseURI, hostname+":"+dockerCsPort)
+ config.Set(configSnapServerBaseURI, hostname+":"+dockerSsPort)
+ //config.Set(configProxyServerBaseURI, testServer.URL)
+
+ // init plugin
+ apid.RegisterPlugin(initPlugin)
+ apid.InitializePlugins("dockerTest")
+})
var _ = Describe("dockerIT", func() {
-
-
- BeforeSuite(func() {
- hostname := os.Getenv("APIGEE_SYNC_DOCKER_IP")
-
- apid.Initialize(factory.DefaultServicesFactory())
- config = apid.Config()
-
- // Set log level
- config.Set(configLogLevel, logrus.DebugLevel.String())
-
- // Auth Server
- config.Set(configName, "dockerIT")
- config.Set(configConsumerKey, "dummyKey")
- config.Set(configConsumerSecret, "dummySecret")
- config.Set(configApidClusterId, "testClusterId")
- testServer := initDummyAuthServer()
-
- // Setup dependencies
- config.Set(configChangeServerBaseURI, hostname+":"+dockerCsPort)
- config.Set(configSnapServerBaseURI, hostname+":"+dockerSsPort)
- config.Set(configProxyServerBaseURI, testServer.URL)
-
- // init plugin
- apid.RegisterPlugin(initPlugin)
- apid.InitializePlugins("dockerTest")
- })
-
-
-
Context("Generic Replication", func() {
var _ = BeforeEach(func() {
@@ -85,24 +83,18 @@
log.Debug("CS: " + config.GetString(configChangeServerBaseURI))
log.Debug("SS: " + config.GetString(configSnapServerBaseURI))
log.Debug("Auth: " + config.GetString(configProxyServerBaseURI))
- })
+
+ time.Sleep(5 * time.Second)
+ Expect(1).To(Equal(1))
+ }, 30)
})
})
func initDummyAuthServer() (testServer *httptest.Server) {
testRouter := apid.API().Router()
testServer = httptest.NewServer(testRouter)
- // set up mock server
- mockParms := apidApigeeSync.MockParms{
- ReliableAPI: true,
- ClusterID: config.GetString(configApidClusterId),
- TokenKey: config.GetString(configConsumerKey),
- TokenSecret: config.GetString(configConsumerSecret),
- Scope: "dockerTest",
- Organization: "dockerTest",
- Environment: "prod",
- }
- apidApigeeSync.Mock(mockParms, testRouter)
+ mockAuthServer := &MockAuthServer{}
+ mockAuthServer.Start(testRouter)
return
}
@@ -122,4 +114,9 @@
log.Info(pluginName + " initialized.")
return pluginData, nil
+}
+
+func TestDockerApigeeSync(t *testing.T) {
+ RegisterFailHandler(Fail)
+ RunSpecs(t, "ApigeeSync Docker Suite")
}
\ No newline at end of file
diff --git a/dockertests/mockAuthServer.go b/dockertests/mockAuthServer.go
new file mode 100644
index 0000000..9d79fd6
--- /dev/null
+++ b/dockertests/mockAuthServer.go
@@ -0,0 +1,33 @@
+package dockertests
+
+
+import (
+ "github.com/30x/apidApigeeSync"
+ "github.com/30x/apid-core"
+ "encoding/json"
+ "net/http"
+)
+
+const oauthExpiresIn = 2 * 60
+
+type MockAuthServer struct {
+
+}
+
+func (m *MockAuthServer) sendToken (w http.ResponseWriter, req *http.Request) {
+ oauthToken := apidApigeeSync.GenerateUUID()
+ res := apidApigeeSync.OauthToken{
+ AccessToken: oauthToken,
+ ExpiresIn: oauthExpiresIn,
+ }
+ body, err := json.Marshal(res)
+ if err != nil {
+ panic(err)
+ }
+ w.Write(body)
+}
+
+func (m *MockAuthServer) Start (router apid.Router) {
+ router.HandleFunc("/accesstoken", m.sendToken).Methods("POST")
+}
+
diff --git a/managerInterfaces.go b/managerInterfaces.go
index ae80cec..5022bdd 100644
--- a/managerInterfaces.go
+++ b/managerInterfaces.go
@@ -22,7 +22,7 @@
type tokenManager interface {
getBearerToken() string
invalidateToken() error
- getToken() *oauthToken
+ getToken() *OauthToken
close()
getRetrieveNewTokenClosure(*url.URL) func(chan bool) error
start()
diff --git a/mock_server.go b/mock_server.go
index 4ce28bf..94a0651 100644
--- a/mock_server.go
+++ b/mock_server.go
@@ -248,8 +248,8 @@
err = json.Unmarshal(plInfo, &plugInfo)
Expect(err).NotTo(HaveOccurred())
- m.oauthToken = generateUUID()
- res := oauthToken{
+ m.oauthToken = GenerateUUID()
+ res := OauthToken{
AccessToken: m.oauthToken,
ExpiresIn: oauthExpiresIn,
}
@@ -266,7 +266,7 @@
Expect(scopes).To(ContainElement(m.params.ClusterID))
- w.Header().Set("Transicator-Snapshot-TXID", generateUUID())
+ w.Header().Set("Transicator-Snapshot-TXID", GenerateUUID())
if len(scopes) == 1 {
//send bootstrap db
@@ -405,7 +405,7 @@
func (m *MockServer) createDeployment() tableRowMap {
deploymentID := m.nextDeploymentID()
- bundleID := generateUUID()
+ bundleID := GenerateUUID()
listen := apid.Config().GetString("api_listen")
_, port, err := net.SplitHostPort(listen)
diff --git a/token.go b/token.go
index 0b7521e..1612025 100644
--- a/token.go
+++ b/token.go
@@ -47,7 +47,7 @@
closed: make(chan bool),
getTokenChan: make(chan bool),
invalidateTokenChan: make(chan bool),
- returnTokenChan: make(chan *oauthToken),
+ returnTokenChan: make(chan *OauthToken),
invalidateDone: make(chan bool),
isClosed: &isClosedInt,
}
@@ -55,14 +55,14 @@
}
type simpleTokenManager struct {
- token *oauthToken
+ token *OauthToken
isClosed *int32
quitPollingForToken chan bool
closed chan bool
getTokenChan chan bool
invalidateTokenChan chan bool
refreshTimer <-chan time.Time
- returnTokenChan chan *oauthToken
+ returnTokenChan chan *OauthToken
invalidateDone chan bool
}
@@ -109,7 +109,7 @@
return nil
}
-func (t *simpleTokenManager) getToken() *oauthToken {
+func (t *simpleTokenManager) getToken() *OauthToken {
//has been closed
if atomic.LoadInt32(t.isClosed) == int32(1) {
log.Debug("TokenManager: getToken() called on closed tokenManager")
@@ -190,7 +190,7 @@
return expected200Error{}
}
- var token oauthToken
+ var token OauthToken
err = json.Unmarshal(body, &token)
if err != nil {
log.Errorf("unable to unmarshal JSON response '%s': %v", string(body), err)
@@ -222,7 +222,7 @@
}
}
-type oauthToken struct {
+type OauthToken struct {
IssuedAt int64 `json:"issuedAt"`
AppName string `json:"applicationName"`
Scope string `json:"scope"`
@@ -241,21 +241,21 @@
var noTime time.Time
-func (t *oauthToken) isValid() bool {
+func (t *OauthToken) isValid() bool {
if t == nil || t.AccessToken == "" {
return false
}
return t.AccessToken != "" && time.Now().Before(t.ExpiresAt)
}
-func (t *oauthToken) refreshIn() time.Duration {
+func (t *OauthToken) refreshIn() time.Duration {
if t == nil || t.ExpiresAt == noTime {
return time.Duration(0)
}
return t.ExpiresAt.Sub(time.Now()) - refreshFloatTime
}
-func (t *oauthToken) needsRefresh() bool {
+func (t *OauthToken) needsRefresh() bool {
if t == nil || t.ExpiresAt == noTime {
return true
}
diff --git a/token_test.go b/token_test.go
index 472f790..85b71c7 100644
--- a/token_test.go
+++ b/token_test.go
@@ -36,7 +36,7 @@
It("should calculate valid token", func() {
log.Info("Starting token tests...")
- t := &oauthToken{
+ t := &OauthToken{
AccessToken: "x",
ExpiresIn: 120,
ExpiresAt: time.Now().Add(2 * time.Minute),
@@ -48,7 +48,7 @@
It("should calculate expired token", func() {
- t := &oauthToken{
+ t := &OauthToken{
AccessToken: "x",
ExpiresIn: 0,
ExpiresAt: time.Now(),
@@ -60,7 +60,7 @@
It("should calculate token needing refresh", func() {
- t := &oauthToken{
+ t := &OauthToken{
AccessToken: "x",
ExpiresIn: 59,
ExpiresAt: time.Now().Add(time.Minute - time.Second),
@@ -72,7 +72,7 @@
It("should calculate on empty token", func() {
- t := &oauthToken{}
+ t := &OauthToken{}
Expect(t.refreshIn().Seconds()).To(BeNumerically("<=", 0))
Expect(t.needsRefresh()).To(BeTrue())
Expect(t.isValid()).To(BeFalse())
@@ -85,7 +85,7 @@
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer GinkgoRecover()
- res := oauthToken{
+ res := OauthToken{
AccessToken: "ABCD",
ExpiresIn: 1,
}
@@ -113,8 +113,8 @@
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer GinkgoRecover()
- res := oauthToken{
- AccessToken: generateUUID(),
+ res := OauthToken{
+ AccessToken: GenerateUUID(),
ExpiresIn: 1,
}
body, err := json.Marshal(res)
@@ -153,7 +153,7 @@
finished <- true
}
- res := oauthToken{
+ res := OauthToken{
AccessToken: string(count),
ExpiresIn: 1,
}
@@ -194,7 +194,7 @@
Expect(r.Header.Get("updated_at_apid")).NotTo(BeEmpty())
finished <- true
}
- res := oauthToken{
+ res := OauthToken{
AccessToken: string(count),
ExpiresIn: 200,
}