77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
package config
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"gopkg.in/yaml.v2"
|
|
)
|
|
|
|
func TestConfigFileSettings(t *testing.T) {
|
|
var (
|
|
firstIngress = UnvalidatedIngressRule{
|
|
Hostname: "tunnel1.example.com",
|
|
Path: "/id",
|
|
Service: "https://localhost:8000",
|
|
}
|
|
secondIngress = UnvalidatedIngressRule{
|
|
Hostname: "*",
|
|
Path: "",
|
|
Service: "https://localhost:8001",
|
|
}
|
|
)
|
|
rawYAML := `
|
|
tunnel: config-file-test
|
|
ingress:
|
|
- hostname: tunnel1.example.com
|
|
path: /id
|
|
service: https://localhost:8000
|
|
- hostname: "*"
|
|
service: https://localhost:8001
|
|
retries: 5
|
|
grace-period: 30s
|
|
percentage: 3.14
|
|
hostname: example.com
|
|
tag:
|
|
- test
|
|
- central-1
|
|
counters:
|
|
- 123
|
|
- 456
|
|
`
|
|
var config configFileSettings
|
|
err := yaml.Unmarshal([]byte(rawYAML), &config)
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, "config-file-test", config.TunnelID)
|
|
assert.Equal(t, firstIngress, config.Ingress[0])
|
|
assert.Equal(t, secondIngress, config.Ingress[1])
|
|
|
|
retries, err := config.Int("retries")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 5, retries)
|
|
|
|
gracePeriod, err := config.Duration("grace-period")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, time.Second*30, gracePeriod)
|
|
|
|
percentage, err := config.Float64("percentage")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 3.14, percentage)
|
|
|
|
hostname, err := config.String("hostname")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "example.com", hostname)
|
|
|
|
tags, err := config.StringSlice("tag")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "test", tags[0])
|
|
assert.Equal(t, "central-1", tags[1])
|
|
|
|
counters, err := config.IntSlice("counters")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 123, counters[0])
|
|
assert.Equal(t, 456, counters[1])
|
|
}
|