mirror of
https://github.com/grafana/grafana.git
synced 2024-11-26 02:40:26 -06:00
58678f5879
* Plugins: add option to disable TLS in the socks proxy * fix allow_insecure docs * upgrade github.com/grafana/grafana-plugin-sdk-go from v0.196.0 to v0.197.0 * fix conflicts
155 lines
3.3 KiB
Go
155 lines
3.3 KiB
Go
package setting
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"gopkg.in/ini.v1"
|
|
)
|
|
|
|
func mustNewIniFile(fileContents string) *ini.File {
|
|
file, err := ini.Load([]byte(fileContents))
|
|
if err != nil {
|
|
panic(fmt.Sprintf("creating ini file for test: %s", err))
|
|
}
|
|
return file
|
|
}
|
|
|
|
func TestReadSecureSocksDSProxySettings(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
cases := []struct {
|
|
description string
|
|
iniFile *ini.File
|
|
expectedSettings SecureSocksDSProxySettings
|
|
expectedErr error
|
|
}{
|
|
{
|
|
description: "default values",
|
|
iniFile: mustNewIniFile(`
|
|
[secure_socks_datasource_proxy]
|
|
`),
|
|
expectedSettings: SecureSocksDSProxySettings{
|
|
Enabled: false,
|
|
ClientCert: "",
|
|
ClientKey: "",
|
|
RootCA: "",
|
|
ProxyAddress: "",
|
|
ServerName: "",
|
|
ShowUI: true,
|
|
AllowInsecure: false,
|
|
},
|
|
},
|
|
{
|
|
description: "root ca is required",
|
|
iniFile: mustNewIniFile(`
|
|
[secure_socks_datasource_proxy]
|
|
enabled = true
|
|
proxy_address = address
|
|
`),
|
|
expectedErr: errors.New("rootCA required"),
|
|
},
|
|
{
|
|
description: "client cert is required",
|
|
iniFile: mustNewIniFile(`
|
|
[secure_socks_datasource_proxy]
|
|
enabled = true
|
|
proxy_address = address
|
|
root_ca_cert = cert
|
|
`),
|
|
expectedErr: errors.New("client key pair required"),
|
|
},
|
|
{
|
|
description: "client key is required",
|
|
iniFile: mustNewIniFile(`
|
|
[secure_socks_datasource_proxy]
|
|
enabled = true
|
|
proxy_address = address
|
|
root_ca_cert = cert1
|
|
client_cert = cert2
|
|
`),
|
|
expectedErr: errors.New("client key pair required"),
|
|
},
|
|
{
|
|
description: "server name is required",
|
|
iniFile: mustNewIniFile(`
|
|
[secure_socks_datasource_proxy]
|
|
enabled = true
|
|
proxy_address = address
|
|
root_ca_cert = cert1
|
|
client_cert = cert2
|
|
client_key = key
|
|
`),
|
|
expectedErr: errors.New("server name required"),
|
|
},
|
|
{
|
|
description: "proxy address is required",
|
|
iniFile: mustNewIniFile(`
|
|
[secure_socks_datasource_proxy]
|
|
enabled = true
|
|
root_ca_cert = cert1
|
|
client_cert = cert2
|
|
client_key = key
|
|
server_name = name
|
|
`),
|
|
expectedErr: errors.New("proxy address required"),
|
|
},
|
|
{
|
|
description: "root ca, client cert and client key are not required in insecure more",
|
|
iniFile: mustNewIniFile(`
|
|
[secure_socks_datasource_proxy]
|
|
enabled = true
|
|
proxy_address = address
|
|
server_name = name
|
|
allow_insecure = true
|
|
`),
|
|
expectedSettings: SecureSocksDSProxySettings{
|
|
Enabled: true,
|
|
ProxyAddress: "address",
|
|
ServerName: "name",
|
|
ShowUI: true,
|
|
AllowInsecure: true,
|
|
},
|
|
},
|
|
{
|
|
description: "custom values",
|
|
iniFile: mustNewIniFile(`
|
|
[secure_socks_datasource_proxy]
|
|
enabled = true
|
|
client_cert = cert
|
|
client_key = key
|
|
root_ca_cert = root_ca
|
|
proxy_address = proxy_address
|
|
server_name = server_name
|
|
show_ui = false
|
|
allow_insecure = true
|
|
`),
|
|
expectedSettings: SecureSocksDSProxySettings{
|
|
Enabled: true,
|
|
ClientCert: "cert",
|
|
ClientKey: "key",
|
|
RootCA: "root_ca",
|
|
ProxyAddress: "proxy_address",
|
|
ServerName: "server_name",
|
|
ShowUI: false,
|
|
AllowInsecure: true,
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range cases {
|
|
t.Run(tt.description, func(t *testing.T) {
|
|
settings, err := readSecureSocksDSProxySettings(tt.iniFile)
|
|
|
|
if tt.expectedErr != nil {
|
|
assert.Equal(t, tt.expectedErr, err)
|
|
} else {
|
|
assert.Equal(t, tt.expectedSettings, settings)
|
|
assert.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|