1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
package main
import (
"fmt"
"os"
"reflect"
"strings"
"testing"
"github.com/katalix/go-l2tp/config"
)
func TestConfigParser(t *testing.T) {
pppdArgsPath := "/tmp/test.pppd.args"
pppdArgs := "noauth 10.42.0.1:10.42.0.2"
f, err := os.Create(pppdArgsPath)
if err != nil {
t.Fatalf("os.Create(%v): %v", pppdArgsPath, err)
}
_, err = f.WriteString(pppdArgs)
if err != nil {
t.Fatalf("f.WriteString(%v): %v", pppdArgs, err)
}
err = f.Close()
if err != nil {
t.Fatalf("f.Close(): %v", err)
}
cases := []struct {
name string
in string
expectFail bool
out *kl2tpdConfig
}{
{
name: "pppdargs0",
in: fmt.Sprintf(`[tunnel.t1]
peer = "127.0.0.1:9000"
version = "l2tpv2"
encap = "udp"
[tunnel.t1.session.s1]
pseudowire = "ppp"
pppd_args = "%s"`, pppdArgsPath),
out: &kl2tpdConfig{
pppArgs: map[string]map[string]*sessionPPPArgs{
"t1": map[string]*sessionPPPArgs{
"s1": &sessionPPPArgs{
pppdArgs: strings.Split(pppdArgs, " "),
},
},
},
},
},
{
name: "pppac0",
in: `[tunnel.t1]
peer = "127.0.0.1:9000"
version = "l2tpv2"
encap = "udp"
[tunnel.t1.session.s1]
pseudowire = "ppp"
`,
out: &kl2tpdConfig{
pppArgs: map[string]map[string]*sessionPPPArgs{},
},
},
}
for _, c := range cases {
cfg := newKl2tpdConfig()
_, err := config.LoadStringWithCustomParser(c.in, cfg)
if err != nil {
t.Fatalf("LoadStringWithCustomParser: %v", err)
}
if !reflect.DeepEqual(cfg, c.out) {
t.Fatalf("expect %v, got %v", c.out, cfg)
}
}
os.Remove(pppdArgsPath)
}
|