diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 14:11:00 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 14:11:00 +0000 |
commit | af754e596a8dbb05ed8580c342e7fe02e08b28e0 (patch) | |
tree | b2f334c2b55ede42081aa6710a72da784547d8ea /src/tests/keywords/if-regex-match-comp | |
parent | Initial commit. (diff) | |
download | freeradius-af754e596a8dbb05ed8580c342e7fe02e08b28e0.tar.xz freeradius-af754e596a8dbb05ed8580c342e7fe02e08b28e0.zip |
Adding upstream version 3.2.3+dfsg.upstream/3.2.3+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/tests/keywords/if-regex-match-comp')
-rw-r--r-- | src/tests/keywords/if-regex-match-comp | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/src/tests/keywords/if-regex-match-comp b/src/tests/keywords/if-regex-match-comp new file mode 100644 index 0000000..c9c2d15 --- /dev/null +++ b/src/tests/keywords/if-regex-match-comp @@ -0,0 +1,149 @@ +# PRE: if +# + +# Non matching on attribute ref +if (User-Name !~ /^([0-9])_([0-9])?_([0-9]*)_([0-9]+)_([^_])_(6)_([7-8])/) { + update reply { + Filter-Id += 'Fail 0' + } +} + +# Matching on xlat expanded value +if ("%{User-Name}" !~ /^([0-9])_([0-9])?_([0-9]*)_([0-9]+)_([^_])_(6)_([7-8])/) { + update reply { + Filter-Id += 'Fail 1' + } +} + +# Matching on attribute ref with capture groups +if (User-Name =~ /^([0-9])_([0-9])?_([0-9]*)_([0-9]+)_([^_])_(6)_([7-8])/) { + # Test all the capture groups + update { + reply:User-Name := "%{7}_%{6}_%{5}_%{4}_%{3}_%{2}_%{1}_%{0}" + } +} +else { + update reply { + Filter-Id += 'Fail 2' + } +} + +# Checking capture groups are cleared out correctly +if (User-Name =~ /^([0-9])_/) { + if ("%{0}%{1}%{2}%{3}%{4}%{5}%{6}%{7}" != '1_1') { + update reply { + Filter-Id += 'Fail 3' + } + } +} +else { + update reply { + Filter-Id += 'Fail 3.5' + } +} + +# Checking capture groups are cleared out correctly when there are no matches +if (User-Name =~ /^./) { + if ("%{0}%{1}%{2}%{3}%{4}%{5}%{6}%{7}" != '1') { + update reply { + Filter-Id += 'Fail 4' + } + } +} +else { + update reply { + Filter-Id += 'Fail 4.5' + } +} + +# compiled - ref - insensitive +if (Calling-Station-Id !~ /:roamyroam$/i) { + update reply { + Filter-Id += 'Fail 5' + } +} + +# compiled - expansion - insensitive +if ("%{Calling-Station-Id}" !~ /:roamyroam$/i) { + update reply { + Filter-Id += 'Fail 6' + } +} + +# compiled - enum - ref - insensitive +if (Service-Type !~ /^framed-user$/i) { + update reply { + Filter-Id += 'Fail 7' + } +} + +# compiled - enum - expansion - insensitive +if ("%{Service-Type}" !~ /^framed-user$/i) { + update reply { + Filter-Id += 'Fail 8' + } +} + +# compiled - enum - ref +if (Service-Type =~ /^framed-user$/) { + update reply { + Filter-Id += 'Fail 9' + } +} + +update request { + Tmp-String-0 := "foo\nbar" +} + +# compiled - ref - multiline +if (&Tmp-String-0 !~ /^foo$/m) { + update reply { + Filter-Id += 'Fail 14' + } +} + +# compiled - ref - non-multiline +if (&Tmp-String-0 =~ /^foo$/) { + update reply { + Filter-Id += 'Fail 15' + } +} + +# compiled - ref - non-multiline + +# Not all POSIX implementations support the \n character classes +# so only run this test if the server was built with libpcre. +if (("${feature.regex-pcre}" == 'yes') && (&Tmp-String-0 !~ /^foo\nbar$/)) { + update reply { + Filter-Id += 'Fail 16' + } +} + +# compiled - ref - multiline +if (&Tmp-String-0 !~ /^bar$/m) { + update reply { + Filter-Id += 'Fail 17' + } +} + +# compiled - ref - multiline - sensitive +if (&Tmp-String-0 =~ /^BAR$/m) { + update reply { + Filter-Id += 'Fail 17' + } +} + +# compiled - ref - multiline - insensitive +if (&Tmp-String-0 !~ /^BAR$/mi) { + update reply { + Filter-Id += 'Fail 17' + } +} + +# compiled - ref - multiline - insensitive (flag order reversed) +if (&Tmp-String-0 !~ /^BAR$/im) { + update reply { + Filter-Id += 'Fail 18' + } +} + |