123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- package basic
- import (
- "fmt"
- "github.com/onsi/ginkgo/v2"
- "github.com/fatedier/frp/test/e2e/framework"
- "github.com/fatedier/frp/test/e2e/framework/consts"
- "github.com/fatedier/frp/test/e2e/pkg/port"
- )
- var _ = ginkgo.Describe("[Feature: Config]", func() {
- f := framework.NewDefaultFramework()
- ginkgo.Describe("Template", func() {
- ginkgo.It("render by env", func() {
- serverConf := consts.DefaultServerConfig
- clientConf := consts.DefaultClientConfig
- portName := port.GenName("TCP")
- serverConf += fmt.Sprintf(`
- auth.token = "{{ %s{{ .Envs.FRP_TOKEN }}%s }}"
- `, "`", "`")
- clientConf += fmt.Sprintf(`
- auth.token = "{{ %s{{ .Envs.FRP_TOKEN }}%s }}"
- [[proxies]]
- name = "tcp"
- type = "tcp"
- localPort = {{ .%s }}
- remotePort = {{ .%s }}
- `, "`", "`", framework.TCPEchoServerPort, portName)
- f.SetEnvs([]string{"FRP_TOKEN=123"})
- f.RunProcesses([]string{serverConf}, []string{clientConf})
- framework.NewRequestExpect(f).PortName(portName).Ensure()
- })
- })
- ginkgo.Describe("Includes", func() {
- ginkgo.It("split tcp proxies into different files", func() {
- serverPort := f.AllocPort()
- serverConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
- bindAddr = "0.0.0.0"
- bindPort = %d
- `, serverPort))
- remotePort := f.AllocPort()
- proxyConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
- [[proxies]]
- name = "tcp"
- type = "tcp"
- localPort = %d
- remotePort = %d
- `, f.PortByName(framework.TCPEchoServerPort), remotePort))
- remotePort2 := f.AllocPort()
- proxyConfigPath2 := f.GenerateConfigFile(fmt.Sprintf(`
- [[proxies]]
- name = "tcp2"
- type = "tcp"
- localPort = %d
- remotePort = %d
- `, f.PortByName(framework.TCPEchoServerPort), remotePort2))
- clientConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
- serverPort = %d
- includes = ["%s","%s"]
- `, serverPort, proxyConfigPath, proxyConfigPath2))
- _, _, err := f.RunFrps("-c", serverConfigPath)
- framework.ExpectNoError(err)
- _, _, err = f.RunFrpc("-c", clientConfigPath)
- framework.ExpectNoError(err)
- framework.NewRequestExpect(f).Port(remotePort).Ensure()
- framework.NewRequestExpect(f).Port(remotePort2).Ensure()
- })
- })
- ginkgo.Describe("Support Formats", func() {
- ginkgo.It("YAML", func() {
- serverConf := fmt.Sprintf(`
- bindPort: {{ .%s }}
- log:
- level: trace
- `, port.GenName("Server"))
- remotePort := f.AllocPort()
- clientConf := fmt.Sprintf(`
- serverPort: {{ .%s }}
- log:
- level: trace
- proxies:
- - name: tcp
- type: tcp
- localPort: {{ .%s }}
- remotePort: %d
- `, port.GenName("Server"), framework.TCPEchoServerPort, remotePort)
- f.RunProcesses([]string{serverConf}, []string{clientConf})
- framework.NewRequestExpect(f).Port(remotePort).Ensure()
- })
- ginkgo.It("JSON", func() {
- serverConf := fmt.Sprintf(`{"bindPort": {{ .%s }}, "log": {"level": "trace"}}`, port.GenName("Server"))
- remotePort := f.AllocPort()
- clientConf := fmt.Sprintf(`{"serverPort": {{ .%s }}, "log": {"level": "trace"},
- "proxies": [{"name": "tcp", "type": "tcp", "localPort": {{ .%s }}, "remotePort": %d}]}`,
- port.GenName("Server"), framework.TCPEchoServerPort, remotePort)
- f.RunProcesses([]string{serverConf}, []string{clientConf})
- framework.NewRequestExpect(f).Port(remotePort).Ensure()
- })
- })
- })
|