master
go 100 lines 1.87 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package matcher
4
5 import (
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9 )
10
11 func TestSimpleExpr_none(t *testing.T) {
12 expr := &SimpleExpr{}
13
14 m, err := expr.Parse()
15 assert.EqualError(t, err, ErrEmptyExpr.Error())
16 assert.Nil(t, m)
17 }
18
19 func TestSimpleExpr_include(t *testing.T) {
20 expr := &SimpleExpr{
21 Includes: []string{
22 "~ /api/",
23 "~ .php$",
24 },
25 }
26
27 m, err := expr.Parse()
28 assert.NoError(t, err)
29
30 assert.True(t, m.MatchString("/api/a.php"))
31 assert.True(t, m.MatchString("/api/a.php2"))
32 assert.True(t, m.MatchString("/api2/a.php"))
33 assert.True(t, m.MatchString("/api/img.php"))
34 assert.False(t, m.MatchString("/api2/img.php2"))
35 }
36
37 func TestSimpleExpr_exclude(t *testing.T) {
38 expr := &SimpleExpr{
39 Excludes: []string{
40 "~ /api/img",
41 },
42 }
43
44 m, err := expr.Parse()
45 assert.NoError(t, err)
46
47 assert.True(t, m.MatchString("/api/a.php"))
48 assert.True(t, m.MatchString("/api/a.php2"))
49 assert.True(t, m.MatchString("/api2/a.php"))
50 assert.False(t, m.MatchString("/api/img.php"))
51 assert.True(t, m.MatchString("/api2/img.php2"))
52 }
53
54 func TestSimpleExpr_both(t *testing.T) {
55 expr := &SimpleExpr{
56 Includes: []string{
57 "~ /api/",
58 "~ .php$",
59 },
60 Excludes: []string{
61 "~ /api/img",
62 },
63 }
64
65 m, err := expr.Parse()
66 assert.NoError(t, err)
67
68 assert.True(t, m.MatchString("/api/a.php"))
69 assert.True(t, m.MatchString("/api/a.php2"))
70 assert.True(t, m.MatchString("/api2/a.php"))
71 assert.False(t, m.MatchString("/api/img.php"))
72 assert.False(t, m.MatchString("/api2/img.php2"))
73 }
74
75 func TestSimpleExpr_Parse_NG(t *testing.T) {
76 {
77 expr := &SimpleExpr{
78 Includes: []string{
79 "~ (ab",
80 "~ .php$",
81 },
82 }
83
84 m, err := expr.Parse()
85 assert.Error(t, err)
86 assert.Nil(t, m)
87 }
88 {
89 expr := &SimpleExpr{
90 Excludes: []string{
91 "~ (ab",
92 "~ .php$",
93 },
94 }
95
96 m, err := expr.Parse()
97 assert.Error(t, err)
98 assert.Nil(t, m)
99 }
100 }