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)
 | |
| 		})
 | |
| 	}
 | |
| }
 |