fix validations
This commit is contained in:
parent
25b32797ea
commit
c42b4fb2d2
|
|
@ -21,19 +21,23 @@ func (pc *ProxyConfig) Validate() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if pc.HTTP != nil {
|
if pc.HTTP != nil {
|
||||||
_, err := url.Parse(pc.HTTP.URL)
|
_, err := url.ParseRequestURI(pc.HTTP.URL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("proxy http set with invalid url: %v", err)
|
return fmt.Errorf("proxy http set with invalid url: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if pc.HTTPS != nil {
|
if pc.HTTPS != nil {
|
||||||
_, err := url.Parse(pc.HTTPS.URL)
|
_, err := url.ParseRequestURI(pc.HTTPS.URL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("proxy https set with invalid url: %v", err)
|
return fmt.Errorf("proxy https set with invalid url: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: maybe validate noproxy?
|
for _, u := range pc.NoProxy {
|
||||||
|
if _, err := url.ParseRequestURI(u); err != nil {
|
||||||
|
return fmt.Errorf("proxy no_proxy set with invalid url: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,14 +32,18 @@ func (c *Config) Validate() error {
|
||||||
if c.ClientID == "" {
|
if c.ClientID == "" {
|
||||||
return errors.New("client_id is not set")
|
return errors.New("client_id is not set")
|
||||||
}
|
}
|
||||||
if _, err := url.Parse(c.URL); err != nil {
|
if _, err := url.ParseRequestURI(c.URL); err != nil {
|
||||||
return fmt.Errorf("failed to parse url: %v", err)
|
return fmt.Errorf("failed to parse url: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.CertPath != "" {
|
if c.CertPath == "" {
|
||||||
return errors.New("cert path must be provided")
|
return errors.New("cert path must be provided")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if _, err := os.Stat(c.CertPath); err != nil {
|
||||||
|
return fmt.Errorf("cert path %q does not exist: %v", c.CertPath, err)
|
||||||
|
}
|
||||||
|
|
||||||
if err := c.Proxy.Validate(); err != nil {
|
if err := c.Proxy.Validate(); err != nil {
|
||||||
return fmt.Errorf("proxy validation failed: %v", err)
|
return fmt.Errorf("proxy validation failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package azurekeyvault
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/actions/actions-runner-controller/proxyconfig"
|
"github.com/actions/actions-runner-controller/proxyconfig"
|
||||||
|
|
@ -98,16 +99,6 @@ func TestValidate_valid(t *testing.T) {
|
||||||
clientID := "clientID"
|
clientID := "clientID"
|
||||||
url := "https://example.com"
|
url := "https://example.com"
|
||||||
|
|
||||||
cp, err := os.CreateTemp("", "")
|
|
||||||
require.NoError(t, err)
|
|
||||||
err = cp.Close()
|
|
||||||
require.NoError(t, err)
|
|
||||||
certPath := cp.Name()
|
|
||||||
|
|
||||||
t.Cleanup(func() {
|
|
||||||
os.Remove(certPath)
|
|
||||||
})
|
|
||||||
|
|
||||||
proxy := &proxyconfig.ProxyConfig{
|
proxy := &proxyconfig.ProxyConfig{
|
||||||
HTTP: &proxyconfig.ProxyServerConfig{
|
HTTP: &proxyconfig.ProxyServerConfig{
|
||||||
URL: "http://httpconfig.com",
|
URL: "http://httpconfig.com",
|
||||||
|
|
@ -124,15 +115,10 @@ func TestValidate_valid(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
certPath, err := filepath.Abs("testdata/server.crt")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
tt := map[string]*Config{
|
tt := map[string]*Config{
|
||||||
"with jwt": {
|
|
||||||
TenantID: tenantID,
|
|
||||||
ClientID: clientID,
|
|
||||||
URL: url,
|
|
||||||
CertPath: "",
|
|
||||||
CertPassword: "",
|
|
||||||
Proxy: proxy,
|
|
||||||
},
|
|
||||||
"with cert": {
|
"with cert": {
|
||||||
TenantID: tenantID,
|
TenantID: tenantID,
|
||||||
ClientID: clientID,
|
ClientID: clientID,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDOjCCAiKgAwIBAgIUQr7R8yN5+2and6ucUOPF6oIbD48wDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFzEVMBMGA1UEAwwMVGVzdCBSb290IENBMB4XDTI1MDIyODEyMDEzMFoXDTI2
|
||||||
|
MDcxMzEyMDEzMFowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0B
|
||||||
|
AQEFAAOCAQ8AMIIBCgKCAQEA4oL2hAPQlDVaNJru5fIstkpoVSuam0vpswC7ciRc
|
||||||
|
XQRjF3q8kjtIA7+jdySsKJqOLGnybDX3awvRyKMEjq11IfnZLjZc+FzTlA+x4z0h
|
||||||
|
MHb0GiBFXKNzrExGI9F0KEPtFxcMIqZ119LY2ReexxWkZBQYlgTepaevp71za4c2
|
||||||
|
n4Zy1+0iS5+uklZ4ANKMTBGlN76Qgt530VnpNiIeUbiUzY58Vx4q7kFcUv/oSz8p
|
||||||
|
rbXr+/GGpAjrOc6/JsezRE8YK2po60dvV80TJ2Jt6pduvF7OSQnq/v4mJl1xuXKl
|
||||||
|
Byo9HLbeu3BuVRWQs2/EwEzx5kX3Ugysl9Bm44K2yKe9/QIDAQABo4GAMH4wHwYD
|
||||||
|
VR0jBBgwFoAUfd/q0BY4fkVBV3X+HWzXH0toW08wCQYDVR0TBAIwADALBgNVHQ8E
|
||||||
|
BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0RBAgwBocEfwAAATAdBgNV
|
||||||
|
HQ4EFgQUe0rTTfWjho3hgeLTnajTCpddo2MwDQYJKoZIhvcNAQELBQADggEBAIR2
|
||||||
|
5zkA7rPnddxCunsz8Jjq3wyhR/KiAFz+RGeFeiXDkF2fWr7QIQ9KbFbv8tpfXR7P
|
||||||
|
B75bY0sXwutHMB2sZDi92cH5sthNBfp19fI35cxcU4oTPxp4UZJKEiA3Qx8y73CX
|
||||||
|
NJu1009nPdOJNlIboDGAFdZ5SH6RCh+YcQZ68kjHPWBIpXxLbs9FN3QmpbAvtLh1
|
||||||
|
PoPaSy7IjKmxm1u+Lf6tyIn2IiB3MiynaB3OKvbkLCseM/5SZKMk6WKSDWopOCJr
|
||||||
|
xciPOc+yeLz5I2Omn0uViOIIciqjlgxncWAyNtDgvJcecwqB2cPiIhk6GY0QZ1uM
|
||||||
|
e7KoqGzWXvWLqJ13a9U=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
package vault_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/actions/actions-runner-controller/vault"
|
|
||||||
"github.com/actions/actions-runner-controller/vault/azurekeyvault"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestInitAll_AzureKeyVault(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_TENANT_ID", "tenantID")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_CLIENT_ID", "clientID")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_URL", "https://example.com")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_CERT_PATH", "/path/to/cert")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_CERT_PASSWORD", "password")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_PROXY_HTTP_URL", "http://proxy.example.com")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_PROXY_HTTP_USERNAME", "username")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_PROXY_HTTP_PASSWORD", "password")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_PROXY_HTTPS_URL", "https://proxy.example.com")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_PROXY_HTTPS_USERNAME", "username")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_PROXY_HTTPS_PASSWORD", "password")
|
|
||||||
os.Setenv("LISTENER_AZURE_KEY_VAULT_PROXY_NO_PROXY", "temp.com")
|
|
||||||
|
|
||||||
vaults, err := vault.InitAll("LISTENER_")
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.Len(t, vaults, 1)
|
|
||||||
require.Contains(t, vaults, vault.VaultTypeAzureKeyVault)
|
|
||||||
akv, ok := vaults[vault.VaultTypeAzureKeyVault].(*azurekeyvault.AzureKeyVault)
|
|
||||||
require.True(t, ok)
|
|
||||||
require.NotNil(t, akv)
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue