vaguerent/internal/server/singleprocess/service_config_test.go
2022-04-25 12:23:57 -05:00

127 lines
2.8 KiB
Go

package singleprocess
import (
"context"
"testing"
"github.com/stretchr/testify/require"
"github.com/hashicorp/go-hclog"
"github.com/hashicorp/vagrant/internal/server"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
"github.com/hashicorp/vagrant/internal/server/singleprocess/state"
"github.com/hashicorp/vagrant/internal/serverconfig"
)
func TestServiceConfig(t *testing.T) {
ctx := context.Background()
// Create our server
impl, err := New(WithDB(testDB(t)))
require.NoError(t, err)
client := server.TestServer(t, impl)
// Simplify writing tests
type (
SReq = vagrant_server.ConfigSetRequest
GReq = vagrant_server.ConfigGetRequest
)
Var := &vagrant_server.ConfigVar{
Scope: &vagrant_server.ConfigVar_Application{
Application: &vagrant_server.Ref_Application{
Application: "foo",
Project: "bar",
},
},
Name: "DATABASE_URL",
Value: "postgresql:///",
}
t.Run("set and get", func(t *testing.T) {
require := require.New(t)
// Create, should get an ID back
resp, err := client.SetConfig(ctx, &SReq{Variables: []*vagrant_server.ConfigVar{Var}})
require.NoError(err)
require.NotNil(resp)
// Let's write some data
grep, err := client.GetConfig(ctx, &GReq{
Scope: &vagrant_server.ConfigGetRequest_Application{
Application: &vagrant_server.Ref_Application{
Application: "foo",
Project: "bar",
},
},
})
require.NoError(err)
require.NotNil(grep)
require.Equal(1, len(grep.Variables))
require.Equal(Var.Name, grep.Variables[0].Name)
require.Equal(Var.Value, grep.Variables[0].Value)
})
}
func TestServerConfigWithStartupConfig(t *testing.T) {
cfg := &serverconfig.Config{
CEBConfig: &serverconfig.CEBConfig{
Addr: "myendpoint",
TLSEnabled: false,
TLSSkipVerify: true,
},
}
db := testDB(t)
// Create our server
impl, err := New(
WithDB(db),
WithConfig(cfg),
)
require.NoError(t, err)
_ = server.TestServer(t, impl)
st, err := state.New(hclog.L(), db)
require.NoError(t, err)
t.Run("Check config defaults are set", func(t *testing.T) {
require := require.New(t)
retCfg, err := st.ServerConfigGet()
require.NoError(err)
require.NotNil(retCfg)
addr := retCfg.AdvertiseAddrs[0]
require.Equal(cfg.CEBConfig.Addr, addr.Addr)
require.Equal(cfg.CEBConfig.TLSEnabled, addr.Tls)
require.Equal(cfg.CEBConfig.TLSSkipVerify, addr.TlsSkipVerify)
})
}
func TestServerConfigWithNoStartupConfig(t *testing.T) {
db := testDB(t)
// Create our server
impl, err := New(
WithDB(db),
)
require.NoError(t, err)
_ = server.TestServer(t, impl)
st, err := state.New(hclog.L(), db)
require.NoError(t, err)
t.Run("Check config defaults are not set", func(t *testing.T) {
require := require.New(t)
retCfg, err := st.ServerConfigGet()
require.NoError(err)
require.NotNil(retCfg)
require.Len(retCfg.AdvertiseAddrs, 0)
})
}