cloudflared-mirror/cmd/cloudflared/common_service_test.go

73 lines
2.3 KiB
Go

package main
import (
"flag"
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/urfave/cli/v2"
cfdflags "github.com/cloudflare/cloudflared/cmd/cloudflared/flags"
)
func TestBuildServiceFlagArgs(t *testing.T) {
cliCtx := newServiceTestContext(t)
require.NoError(t, cliCtx.Set(cfdflags.Region, "us"))
require.NoError(t, cliCtx.Set(cfdflags.EdgeIpVersion, "6"))
require.NoError(t, cliCtx.Set(cfdflags.Retries, "3"))
require.NoError(t, cliCtx.Set(cfdflags.GracePeriod, "10s"))
require.NoError(t, cliCtx.Set(cfdflags.PostQuantum, "true"))
require.Equal(t, []string{
"--region=us",
"--edge-ip-version=6",
"--retries=3",
"--grace-period=10s",
"--post-quantum=true",
}, buildServiceFlagArgs(cliCtx))
}
func TestBuildServiceRunArgsAppendsTunnelCommand(t *testing.T) {
cliCtx := newServiceTestContext(t)
require.NoError(t, cliCtx.Set(cfdflags.EdgeIpVersion, "6"))
require.NoError(t, cliCtx.Set(cfdflags.GracePeriod, "15s"))
require.NoError(t, cliCtx.Set(cfdflags.NoAutoUpdate, "true"))
require.NoError(t, cliCtx.Set(cfdflags.AutoUpdateFreq, "24h"))
got := buildServiceRunArgs(cliCtx, []string{"--config", "/etc/cloudflared/config.yml", "tunnel", "run"})
require.Equal(t, []string{
"--edge-ip-version=6",
"--grace-period=15s",
"--config", "/etc/cloudflared/config.yml", "tunnel", "run",
}, got)
}
func newServiceTestContext(t *testing.T) *cli.Context {
t.Helper()
flagSet := flag.NewFlagSet(t.Name(), flag.PanicOnError)
flagSet.String(cfdflags.Region, "", "")
flagSet.String(cfdflags.EdgeIpVersion, "", "")
flagSet.String(cfdflags.EdgeBindAddress, "", "")
flagSet.String(cfdflags.Protocol, "", "")
flagSet.Int(cfdflags.Retries, 0, "")
flagSet.String(cfdflags.LogLevel, "", "")
flagSet.String(cfdflags.TransportLogLevel, "", "")
flagSet.String(cfdflags.LogFile, "", "")
flagSet.String(cfdflags.LogDirectory, "", "")
flagSet.String(cfdflags.TraceOutput, "", "")
flagSet.String(cfdflags.Metrics, "", "")
flagSet.Duration(cfdflags.MetricsUpdateFreq, 0, "")
flagSet.Duration(cfdflags.GracePeriod, 0, "")
flagSet.Int(cfdflags.MaxActiveFlows, 0, "")
flagSet.Bool(cfdflags.PostQuantum, false, "")
flagSet.Bool(cfdflags.NoAutoUpdate, false, "")
flagSet.Duration(cfdflags.AutoUpdateFreq, 24*time.Hour, "")
return cli.NewContext(cli.NewApp(), flagSet, nil)
}