aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-09-24 17:21:24 +0200
committerMichael Muré <batolettre@gmail.com>2018-09-24 17:21:24 +0200
commitc86e7231b223d532e26ab5449715c65b6b4e3fde (patch)
tree8d863617aad2dce304b266cd1e493d7ba5c4690f
parent2282cbb595ff5cc603d11645ddc833d70de9ad9d (diff)
downloadgit-bug-c86e7231b223d532e26ab5449715c65b6b4e3fde.tar.gz
bridge: validate config before use
-rw-r--r--bridge/core/bridge.go5
-rw-r--r--bridge/core/interfaces.go3
-rw-r--r--bridge/github/config.go16
3 files changed, 24 insertions, 0 deletions
diff --git a/bridge/core/bridge.go b/bridge/core/bridge.go
index d9d688ba..dd1f1337 100644
--- a/bridge/core/bridge.go
+++ b/bridge/core/bridge.go
@@ -200,6 +200,11 @@ func (b Bridge) loadConfig() (Configuration, error) {
result[key] = value
}
+ err = b.impl.ValidateConfig(result)
+ if err != nil {
+ return nil, errors.Wrap(err, "invalid configuration")
+ }
+
return result, nil
}
diff --git a/bridge/core/interfaces.go b/bridge/core/interfaces.go
index 5ead3c8f..79b75606 100644
--- a/bridge/core/interfaces.go
+++ b/bridge/core/interfaces.go
@@ -15,6 +15,9 @@ type BridgeImpl interface {
// for future use
Configure(repo repository.RepoCommon) (Configuration, error)
+ // ValidateConfig check the configuration for error
+ ValidateConfig(conf Configuration) error
+
// Importer return an Importer implementation if the import is supported
Importer() Importer
diff --git a/bridge/github/config.go b/bridge/github/config.go
index b8531dfe..79025cfb 100644
--- a/bridge/github/config.go
+++ b/bridge/github/config.go
@@ -93,6 +93,22 @@ func (*Github) Configure(repo repository.RepoCommon) (core.Configuration, error)
return nil, nil
}
+func (*Github) ValidateConfig(conf core.Configuration) error {
+ if _, ok := conf[keyToken]; !ok {
+ return fmt.Errorf("missing %s key", keyToken)
+ }
+
+ if _, ok := conf[keyUser]; !ok {
+ return fmt.Errorf("missing %s key", keyUser)
+ }
+
+ if _, ok := conf[keyProject]; !ok {
+ return fmt.Errorf("missing %s key", keyProject)
+ }
+
+ return nil
+}
+
func requestToken(note, username, password string) (*http.Response, error) {
return requestTokenWith2FA(note, username, password, "")
}