153 lines
3.1 KiB
Go
153 lines
3.1 KiB
Go
package appconfig
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
corev1 "k8s.io/api/core/v1"
|
|
)
|
|
|
|
func TestAppConfigValidate_invalid(t *testing.T) {
|
|
tt := map[string]*AppConfig{
|
|
"empty": {},
|
|
"token and app config": {
|
|
AppID: "1",
|
|
AppInstallationID: 2,
|
|
AppPrivateKey: "private key",
|
|
Token: "token",
|
|
},
|
|
"app id not set": {
|
|
AppInstallationID: 2,
|
|
AppPrivateKey: "private key",
|
|
},
|
|
"app installation id not set": {
|
|
AppID: "2",
|
|
AppPrivateKey: "private key",
|
|
},
|
|
"private key empty": {
|
|
AppID: "2",
|
|
AppInstallationID: 1,
|
|
AppPrivateKey: "",
|
|
},
|
|
}
|
|
|
|
for name, cfg := range tt {
|
|
t.Run(name, func(t *testing.T) {
|
|
err := cfg.Validate()
|
|
require.Error(t, err)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestAppConfigValidate_valid(t *testing.T) {
|
|
tt := map[string]*AppConfig{
|
|
"token": {
|
|
Token: "token",
|
|
},
|
|
"app ID": {
|
|
AppID: "1",
|
|
AppInstallationID: 2,
|
|
AppPrivateKey: "private key",
|
|
},
|
|
}
|
|
|
|
for name, cfg := range tt {
|
|
t.Run(name, func(t *testing.T) {
|
|
err := cfg.Validate()
|
|
require.NoError(t, err)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestAppConfigFromSecret_invalid(t *testing.T) {
|
|
tt := map[string]map[string]string{
|
|
"empty": {},
|
|
"token and app provided": {
|
|
"github_token": "token",
|
|
"github_app_id": "2",
|
|
"githu_app_installation_id": "3",
|
|
"github_app_private_key": "private key",
|
|
},
|
|
"invalid app id": {
|
|
"github_app_id": "abc",
|
|
"githu_app_installation_id": "3",
|
|
"github_app_private_key": "private key",
|
|
},
|
|
"invalid app installation_id": {
|
|
"github_app_id": "1",
|
|
"githu_app_installation_id": "abc",
|
|
"github_app_private_key": "private key",
|
|
},
|
|
"empty private key": {
|
|
"github_app_id": "1",
|
|
"githu_app_installation_id": "2",
|
|
"github_app_private_key": "",
|
|
},
|
|
}
|
|
|
|
for name, data := range tt {
|
|
t.Run(name, func(t *testing.T) {
|
|
secret := &corev1.Secret{
|
|
StringData: data,
|
|
}
|
|
|
|
appConfig, err := FromSecret(secret)
|
|
assert.Error(t, err)
|
|
assert.Nil(t, appConfig)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestAppConfigFromSecret_valid(t *testing.T) {
|
|
tt := map[string]map[string]string{
|
|
"with token": {
|
|
"github_token": "token",
|
|
},
|
|
"app config": {
|
|
"github_app_id": "2",
|
|
"githu_app_installation_id": "3",
|
|
"github_app_private_key": "private key",
|
|
},
|
|
}
|
|
|
|
for name, data := range tt {
|
|
t.Run(name, func(t *testing.T) {
|
|
secret := &corev1.Secret{
|
|
StringData: data,
|
|
}
|
|
|
|
appConfig, err := FromSecret(secret)
|
|
assert.Error(t, err)
|
|
assert.Nil(t, appConfig)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestAppConfigFromString_valid(t *testing.T) {
|
|
tt := map[string]*AppConfig{
|
|
"token": {
|
|
Token: "token",
|
|
},
|
|
"app ID": {
|
|
AppID: "1",
|
|
AppInstallationID: 2,
|
|
AppPrivateKey: "private key",
|
|
},
|
|
}
|
|
|
|
for name, cfg := range tt {
|
|
t.Run(name, func(t *testing.T) {
|
|
bytes, err := json.Marshal(cfg)
|
|
require.NoError(t, err)
|
|
|
|
got, err := FromJSONString(string(bytes))
|
|
require.NoError(t, err)
|
|
|
|
want := cfg.tidy()
|
|
assert.Equal(t, want, got)
|
|
})
|
|
}
|
|
}
|