You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/api/proxy/option_test.go

112 lines
3.3 KiB

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package proxy
import (
"net"
"net/netip"
"testing"
"time"
"github.com/hashicorp/boundary/api"
"github.com/hashicorp/boundary/api/targets"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func Test_GetOpts(t *testing.T) {
t.Parallel()
t.Run("nil", func(t *testing.T) {
opts, err := getOpts(nil)
require.NoError(t, err)
assert.NotNil(t, opts)
})
t.Run("with-listener", func(t *testing.T) {
assert := assert.New(t)
opts, err := getOpts()
require.NoError(t, err)
assert.Nil(opts.WithListener)
_, err = getOpts(WithListener(nil))
require.Error(t, err)
l := &net.TCPListener{}
opts, err = getOpts(WithListener(l))
require.NoError(t, err)
assert.Equal(l, opts.WithListener)
})
t.Run("with-listen-addr-port", func(t *testing.T) {
assert := assert.New(t)
opts, err := getOpts()
require.NoError(t, err)
assert.EqualValues(netip.MustParseAddrPort("127.0.0.1:0"), opts.WithListenAddrPort)
_, err = getOpts(WithListenAddrPort(netip.AddrPort{}))
require.Error(t, err)
l := netip.AddrPortFrom(netip.IPv6LinkLocalAllNodes(), 22)
opts, err = getOpts(WithListenAddrPort(l))
require.NoError(t, err)
assert.Equal(l, opts.WithListenAddrPort)
})
t.Run("with-connections-left-ch", func(t *testing.T) {
assert := assert.New(t)
opts, err := getOpts()
require.NoError(t, err)
assert.Nil(opts.WithConnectionsLeftCh)
_, err = getOpts(WithConnectionsLeftCh(nil))
require.Error(t, err)
l := make(chan int32)
opts, err = getOpts(WithConnectionsLeftCh(l))
require.NoError(t, err)
assert.Equal(l, opts.WithConnectionsLeftCh)
})
t.Run("with-worker-host", func(t *testing.T) {
assert := assert.New(t)
opts, err := getOpts()
require.NoError(t, err)
assert.Empty(opts.WithWorkerHost)
opts, err = getOpts(WithWorkerHost("foo"))
require.NoError(t, err)
assert.Equal("foo", opts.WithWorkerHost)
})
t.Run("with-session-authorization-data", func(t *testing.T) {
assert := assert.New(t)
opts, err := getOpts()
require.NoError(t, err)
assert.Nil(opts.WithSessionAuthorizationData)
_, err = getOpts(WithSessionAuthorizationData(nil))
require.Error(t, err)
l := &targets.SessionAuthorizationData{}
opts, err = getOpts(WithSessionAuthorizationData(l))
require.NoError(t, err)
assert.Equal(l, opts.WithSessionAuthorizationData)
})
t.Run("with-skip-session-teardown", func(t *testing.T) {
assert := assert.New(t)
opts, err := getOpts()
require.NoError(t, err)
assert.Empty(opts.WithSkipSessionTeardown)
opts, err = getOpts(WithSkipSessionTeardown(true))
require.NoError(t, err)
assert.True(opts.WithSkipSessionTeardown)
})
t.Run("withSessionTeardownTimeout", func(t *testing.T) {
assert := assert.New(t)
opts, err := getOpts()
require.NoError(t, err)
assert.Empty(opts.withSessionTeardownTimeout)
opts, err = getOpts(WithSessionTeardownTimeout(3 * time.Millisecond))
require.NoError(t, err)
assert.Equal(3*time.Millisecond, opts.withSessionTeardownTimeout)
})
t.Run("withSessionsClient", func(t *testing.T) {
assert := assert.New(t)
opts, err := getOpts()
require.NoError(t, err)
assert.Nil(opts.withApiClient)
client, err := api.NewClient(nil)
require.NoError(t, err)
opts, err = getOpts(WithApiClient(client))
require.NoError(t, err)
assert.Equal(client, opts.withApiClient)
})
}