diff options
Diffstat (limited to '')
-rw-r--r-- | src/tests/keywords/switch | 19 | ||||
-rw-r--r-- | src/tests/keywords/switch-attr-cast | 34 | ||||
-rw-r--r-- | src/tests/keywords/switch-attr-cmp | 36 | ||||
-rw-r--r-- | src/tests/keywords/switch-default | 22 | ||||
-rw-r--r-- | src/tests/keywords/switch-escape | 43 | ||||
-rw-r--r-- | src/tests/keywords/switch-nodefault | 22 | ||||
-rw-r--r-- | src/tests/keywords/switch-value-error | 29 | ||||
-rw-r--r-- | src/tests/keywords/switch-value-error2 | 27 | ||||
-rw-r--r-- | src/tests/keywords/switch-virtual | 23 | ||||
-rw-r--r-- | src/tests/keywords/switch-xlat-error | 17 |
10 files changed, 272 insertions, 0 deletions
diff --git a/src/tests/keywords/switch b/src/tests/keywords/switch new file mode 100644 index 0000000..f64aeaf --- /dev/null +++ b/src/tests/keywords/switch @@ -0,0 +1,19 @@ +switch &User-Name { + case "bob" { + update reply { + Filter-Id := "filter" + } + } + + case "doug" { + update reply { + Filter-Id := "doug" + } + } + + case { + update reply { + Filter-Id := "default" + } + } +} diff --git a/src/tests/keywords/switch-attr-cast b/src/tests/keywords/switch-attr-cast new file mode 100644 index 0000000..e271a18 --- /dev/null +++ b/src/tests/keywords/switch-attr-cast @@ -0,0 +1,34 @@ +# +# PRE: switch switch-attr-cmp +# + +update request { + Service-Type := Login-User + Filter-Id := "Login-User" +} + +switch &Service-Type { + case "%{expr: 1 + 2}" { + update reply { + Filter-Id := "3" + } + } + + # + # The Filter-Id will get printed to a string, + # have the string parsed as a Service-Type attr, + # and then that compared to the input Service-Type + # + case &Filter-Id { + update reply { + Filter-Id := "filter" + } + } + + case { + update reply { + Filter-Id := "default" + } + } + +} diff --git a/src/tests/keywords/switch-attr-cmp b/src/tests/keywords/switch-attr-cmp new file mode 100644 index 0000000..e28ded8 --- /dev/null +++ b/src/tests/keywords/switch-attr-cmp @@ -0,0 +1,36 @@ +# +# PRE: switch +# +update request { + Tmp-String-0 := &User-Name +} + +# +# A switch statement where we compare two attributes +# +switch &User-Name { + case &Tmp-String-0 { + update reply { + Filter-Id := "filter" + } + } + + case "bob" { + update reply { + Filter-Id := "failed 0" + } + } + + case "doug" { + update reply { + Filter-Id := "failed 1" + } + } + + case { + update reply { + Filter-Id := "failed 2" + } + } + +} diff --git a/src/tests/keywords/switch-default b/src/tests/keywords/switch-default new file mode 100644 index 0000000..6115ed9 --- /dev/null +++ b/src/tests/keywords/switch-default @@ -0,0 +1,22 @@ +# PRE: switch +# +switch User-Name { + case "harry" { + update reply { + Filter-Id := "harry" + } + } + + case "doug" { + update reply { + Filter-Id := "doug" + } + } + + case { + update reply { + Filter-Id := "filter" + } + } + +}
\ No newline at end of file diff --git a/src/tests/keywords/switch-escape b/src/tests/keywords/switch-escape new file mode 100644 index 0000000..50d9fdf --- /dev/null +++ b/src/tests/keywords/switch-escape @@ -0,0 +1,43 @@ +update request { + &Tmp-String-0 := 'foo' +} + +switch "%{tolower:%{request:Tmp-String-0}}" { + case 'foo' { + update reply { + Filter-Id := "filter" + } + } + + case '' { + update reply { + Filter-Id += "fail-empty-1" + } + } + + case { + update reply { + Filter-Id += "fail-default-1" + } + } +} + +switch "%{request:Tmp-String-0}" { + case 'foo' { + update reply { + Filter-Id := "filter" + } + } + + case '' { + update reply { + Filter-Id += "fail-empty-2" + } + } + + case { + update reply { + Filter-Id += "fail-default-2" + } + } +} diff --git a/src/tests/keywords/switch-nodefault b/src/tests/keywords/switch-nodefault new file mode 100644 index 0000000..5fb9469 --- /dev/null +++ b/src/tests/keywords/switch-nodefault @@ -0,0 +1,22 @@ +# +# User-Name is "bob", and a switch statement +# with no "default" should not crash the server. +# +switch &User-Name { + case "doug" { + update reply { + Filter-Id := "doug" + } + } +} + +if (&reply:Filter-Id) { + update reply { + Filter-Id := "fail 1" + } +} +else { + update reply { + Filter-Id := "filter" + } +}
\ No newline at end of file diff --git a/src/tests/keywords/switch-value-error b/src/tests/keywords/switch-value-error new file mode 100644 index 0000000..18db9e1 --- /dev/null +++ b/src/tests/keywords/switch-value-error @@ -0,0 +1,29 @@ +# +# PRE: switch +# +switch &Service-Type { + case "%{expr: 1 + 2}" { + update reply { + Filter-Id := "3" + } + } + + case Login-User { + update reply { + Filter-Id := "Login-User" + } + } + + case No-Such-Value { # ERROR + update reply { + Filter-Id := "FAILED" + } + } + + case { + update reply { + Filter-Id := "default" + } + } + +} diff --git a/src/tests/keywords/switch-value-error2 b/src/tests/keywords/switch-value-error2 new file mode 100644 index 0000000..a291e7b --- /dev/null +++ b/src/tests/keywords/switch-value-error2 @@ -0,0 +1,27 @@ +# +# PRE: switch-value-error +# +# The same as "switch-value-error", but the attribute +# is hidden inside of an xlat expansion. We now turn +# simple attribute xlats into templates. +# +switch "%{Service-Type}" { # ERROR + case "%{expr: 1 + 2}" { + update reply { + Filter-Id := "3" + } + } + + case Login-User { + update reply { + Filter-Id := "Login-User" + } + } + + case { + update reply { + Filter-Id := "default" + } + } + +} diff --git a/src/tests/keywords/switch-virtual b/src/tests/keywords/switch-virtual new file mode 100644 index 0000000..659604d --- /dev/null +++ b/src/tests/keywords/switch-virtual @@ -0,0 +1,23 @@ +# +# PRE: update switch +# +update control { + Cleartext-Password := 'hello' +} + +# +# Virtual attribute references get mashed to xlats +# +switch &Packet-Type { + case Access-Request { + update reply { + Filter-Id := "filter" + } + } + + case { + update reply { + Filter-Id := "fail" + } + } +}
\ No newline at end of file diff --git a/src/tests/keywords/switch-xlat-error b/src/tests/keywords/switch-xlat-error new file mode 100644 index 0000000..d03f6d3 --- /dev/null +++ b/src/tests/keywords/switch-xlat-error @@ -0,0 +1,17 @@ +# +# PRE: switch +# +switch &User-Name { + case "%{no-such-module:bob}" { # ERROR + update reply { + Filter-Id := "fail" + } + } + + case { + update reply { + Filter-Id := "default" + } + } + +} |