Merge pull request #23 from appleboy/check_config

Fix #22 Add check android and ios conf.
This commit is contained in:
Bo-Yi Wu 2016-04-03 00:16:12 +08:00
commit 425cea8346
4 changed files with 79 additions and 30 deletions

View File

@ -36,37 +36,12 @@ func main() {
}
}
if !gopush.PushConf.Ios.Enabled && !gopush.PushConf.Android.Enabled {
log.Printf("Note: Please enable iOS or Android config in yaml config")
return
if *certificateKeyPath != "" {
gopush.PushConf.Ios.PemKeyPath = *certificateKeyPath
}
if gopush.PushConf.Ios.Enabled {
if *certificateKeyPath != "" {
gopush.PushConf.Ios.PemKeyPath = *certificateKeyPath
}
if gopush.PushConf.Ios.PemKeyPath == "" {
log.Println("iOS certificate path not define")
return
}
}
// check andorid api key exist
if gopush.PushConf.Android.Enabled {
if *apiKey != "" {
gopush.PushConf.Android.ApiKey = *apiKey
}
if gopush.PushConf.Android.ApiKey == "" {
log.Println("Android API Key not define")
return
}
if *apiKey != "" {
gopush.PushConf.Android.ApiKey = *apiKey
}
// overwrite server port
@ -74,6 +49,12 @@ func main() {
gopush.PushConf.Core.Port = *port
}
if err = gopush.CheckPushConf(); err != nil {
log.Printf("Check Conf Error: '%v'", err)
return
}
gopush.InitAPNSClient()
gopush.RunHTTPServer()
}

View File

@ -55,8 +55,8 @@ func BuildDefaultPushConf() ConfYaml {
conf.Api.StatGoUri = "/api/status"
// Android
conf.Android.ApiKey = ""
conf.Android.Enabled = false
conf.Android.ApiKey = ""
// iOS
conf.Ios.Enabled = false

View File

@ -6,6 +6,7 @@ import (
"github.com/sideshow/apns2/certificate"
"github.com/sideshow/apns2/payload"
"log"
"errors"
)
type ExtendJSON struct {
@ -71,6 +72,26 @@ type RequestPushNotification struct {
IDs []uint64 `json:"seq_id,omitempty"`
}
func CheckPushConf() error {
if !PushConf.Ios.Enabled && !PushConf.Android.Enabled {
return errors.New("Please enable iOS or Android config in yaml config")
}
if PushConf.Ios.Enabled {
if PushConf.Ios.PemKeyPath == "" {
return errors.New("Missing iOS certificate path")
}
}
if PushConf.Android.Enabled {
if PushConf.Android.ApiKey == "" {
return errors.New("Missing Android API Key")
}
}
return nil
}
func InitAPNSClient() error {
if PushConf.Ios.Enabled {
var err error

View File

@ -9,6 +9,53 @@ import (
"testing"
)
func TestDisabledAndroidIosConf(t *testing.T) {
PushConf = BuildDefaultPushConf()
err := CheckPushConf()
assert.Error(t, err)
assert.Equal(t, "Please enable iOS or Android config in yaml config", err.Error())
}
func TestMissingIOSCertificate(t *testing.T) {
PushConf = BuildDefaultPushConf()
PushConf.Ios.Enabled = true
PushConf.Ios.PemKeyPath = ""
err := CheckPushConf()
assert.Error(t, err)
assert.Equal(t, "Missing iOS certificate path", err.Error())
}
func TestMissingAndroidAPIKey(t *testing.T) {
PushConf = BuildDefaultPushConf()
PushConf.Android.Enabled = true
PushConf.Android.ApiKey = ""
err := CheckPushConf()
assert.Error(t, err)
assert.Equal(t, "Missing Android API Key", err.Error())
}
func TestCorrectConf(t *testing.T) {
PushConf = BuildDefaultPushConf()
PushConf.Android.Enabled = true
PushConf.Android.ApiKey = "xxxxx"
PushConf.Ios.Enabled = true
PushConf.Ios.PemKeyPath = "xxxxx"
err := CheckPushConf()
assert.NoError(t, err)
}
func TestIOSNotificationStructure(t *testing.T) {
var dat map[string]interface{}