Skip to content

Commit c892ce2

Browse files
committed
tests(fast-path-parse): more easier tests
1 parent 7bba976 commit c892ce2

File tree

9 files changed

+491
-644
lines changed

9 files changed

+491
-644
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
const match = [
2+
{
3+
name: 'No segment',
4+
input: '/foo/bar',
5+
test_input: '/foo/bar',
6+
result: true,
7+
variants: [
8+
['%s', '%s'],
9+
['%s/', '%s'],
10+
['%s', '%s/'],
11+
['%s/', '%s/']
12+
]
13+
},
14+
{
15+
name: 'Simple segmenting, `:id`',
16+
input: '/foo/:id',
17+
test_input: '/foo/123',
18+
result: true,
19+
variants: [
20+
['%s', '%s'],
21+
['%s/', '%s'],
22+
['%s', '%s/'],
23+
['%s/', '%s/']
24+
]
25+
},
26+
{
27+
name: 'Simple segmenting 2, `:id`',
28+
input: '/foo/:id/bar',
29+
test_input: '/foo/123/bar',
30+
result: true,
31+
variants: [
32+
['%s', '%s'],
33+
['%s/', '%s'],
34+
['%s', '%s/'],
35+
['%s/', '%s/']
36+
]
37+
},
38+
{
39+
name: 'Simple segmenting, `<id>`',
40+
input: '/foo/<id>',
41+
test_input: '/foo/123',
42+
result: true,
43+
variants: [
44+
['%s', '%s'],
45+
['%s/', '%s'],
46+
['%s', '%s/'],
47+
['%s/', '%s/']
48+
]
49+
},
50+
{
51+
name: 'Simple segmenting 2, `<id>`',
52+
input: '/foo/<id>/bar',
53+
test_input: '/foo/123/bar',
54+
result: true,
55+
variants: [
56+
['%s', '%s'],
57+
['%s/', '%s'],
58+
['%s', '%s/'],
59+
['%s/', '%s/']
60+
]
61+
},
62+
{
63+
name: 'Simple two segmenting',
64+
input: '/foo/:id/bar/:task',
65+
test_input: '/foo/123/bar/run',
66+
result: true,
67+
variants: [
68+
['%s', '%s'],
69+
['%s/', '%s'],
70+
['%s', '%s/'],
71+
['%s/', '%s/']
72+
]
73+
},
74+
{
75+
name: 'Average two segmenting',
76+
input: '/foo/:id/:task',
77+
test_input: '/foo/123/run',
78+
result: true,
79+
variants: [
80+
['%s', '%s'],
81+
['%s/', '%s'],
82+
['%s', '%s/'],
83+
['%s/', '%s/']
84+
]
85+
},
86+
{
87+
name: 'Average two segmenting 2',
88+
input: '/foo/:id/:task/bar',
89+
test_input: '/foo/123/run/bar',
90+
result: true,
91+
variants: [
92+
['%s', '%s'],
93+
['%s/', '%s'],
94+
['%s', '%s/'],
95+
['%s/', '%s/']
96+
]
97+
}
98+
];
99+
100+
module.exports = match;
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
const matchSecurity = [
2+
{
3+
name: 'process.exit security check',
4+
children: [
5+
{
6+
name: '/foo/process.exit(1)',
7+
input: '/foo/process.exit(1)',
8+
test_input: '/foo/(process.exit(1))',
9+
result: false
10+
},
11+
{
12+
name: '/foo/process.exit(1)',
13+
input: '/foo/process.exit(1)',
14+
test_input: '/foo',
15+
result: false
16+
},
17+
{
18+
name: '/foo/:bar',
19+
input: '/foo/:bar',
20+
test_input: '/foo/(process.exit(1))',
21+
result: true
22+
},
23+
{
24+
name: '/foo/:bar',
25+
input: '/foo/:bar',
26+
test_input: '/(process.exit(1))',
27+
result: false
28+
},
29+
{
30+
name: '/:bar',
31+
input: '/:bar',
32+
test_input: '/(process.exit(1))',
33+
result: true
34+
}
35+
]
36+
},
37+
{
38+
name: 'throw security check',
39+
children: [
40+
{
41+
name: '/foo/throw 1',
42+
input: '/foo/throw 1',
43+
test_input: '/foo throw 1',
44+
result: false
45+
},
46+
{
47+
name: '/foo/throw 1',
48+
input: '/foo/throw 1',
49+
test_input: '/foo',
50+
result: false
51+
},
52+
{
53+
name: '/foo/:bar',
54+
input: '/foo/:bar',
55+
test_input: '/foo/throw 1',
56+
result: true
57+
},
58+
{
59+
name: '/foo/:bar',
60+
input: '/foo/:bar',
61+
test_input: '/throw 1',
62+
result: false
63+
},
64+
{
65+
name: '/:bar',
66+
input: '/:bar',
67+
test_input: '/throw 1',
68+
result: true
69+
}
70+
]
71+
}
72+
];
73+
74+
module.exports = matchSecurity;
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
const parse = [
2+
{
3+
name: 'No segment',
4+
input: '/foo/bar',
5+
test_input: '/foo/bar',
6+
result: {},
7+
variants: [
8+
['%s', '%s'],
9+
['%s/', '%s'],
10+
['%s', '%s/'],
11+
['%s/', '%s/']
12+
]
13+
},
14+
{
15+
name: 'Simple segmenting, `:id`',
16+
input: '/foo/:id',
17+
test_input: '/foo/123',
18+
result: { id: '123' },
19+
variants: [
20+
['%s', '%s'],
21+
['%s/', '%s'],
22+
['%s', '%s/'],
23+
['%s/', '%s/']
24+
]
25+
},
26+
{
27+
name: 'Simple segmenting 2, `:id`',
28+
input: '/foo/:id/bar',
29+
test_input: '/foo/123/bar',
30+
result: { id: '123' },
31+
variants: [
32+
['%s', '%s'],
33+
['%s/', '%s'],
34+
['%s', '%s/'],
35+
['%s/', '%s/']
36+
]
37+
},
38+
{
39+
name: 'Simple segmenting, `<id>`',
40+
input: '/foo/<id>',
41+
test_input: '/foo/123',
42+
result: { id: '123' },
43+
variants: [
44+
['%s', '%s'],
45+
['%s/', '%s'],
46+
['%s', '%s/'],
47+
['%s/', '%s/']
48+
]
49+
},
50+
{
51+
name: 'Simple segmenting 2, `<id>`',
52+
input: '/foo/<id>/bar',
53+
test_input: '/foo/123/bar',
54+
result: { id: '123' },
55+
variants: [
56+
['%s', '%s'],
57+
['%s/', '%s'],
58+
['%s', '%s/'],
59+
['%s/', '%s/']
60+
]
61+
},
62+
{
63+
name: 'Simple two segmenting',
64+
input: '/foo/:id/bar/:task',
65+
test_input: '/foo/123/bar/run',
66+
result: { id: '123', task: 'run' },
67+
variants: [
68+
['%s', '%s'],
69+
['%s/', '%s'],
70+
['%s', '%s/'],
71+
['%s/', '%s/']
72+
]
73+
},
74+
{
75+
name: 'Average two segmenting',
76+
input: '/foo/:id/:task',
77+
test_input: '/foo/123/run',
78+
result: { id: '123', task: 'run' },
79+
variants: [
80+
['%s', '%s'],
81+
['%s/', '%s'],
82+
['%s', '%s/'],
83+
['%s/', '%s/']
84+
]
85+
},
86+
{
87+
name: 'Average two segmenting 2',
88+
input: '/foo/:id/:task/bar',
89+
test_input: '/foo/123/run/bar',
90+
result: { id: '123', task: 'run' },
91+
variants: [
92+
['%s', '%s'],
93+
['%s/', '%s'],
94+
['%s', '%s/'],
95+
['%s/', '%s/']
96+
]
97+
},
98+
{
99+
name: 'Simple * segment',
100+
children: [
101+
{
102+
name: '/foo/*/bar',
103+
input: '/foo/*/bar',
104+
test_input: '/foo/123/bar',
105+
result: { '*1': '123' }
106+
},
107+
{
108+
name: '/foo/*/bar/*',
109+
input: '/foo/*/bar/*',
110+
test_input: '/foo/123/bar/run',
111+
result: { '*1': '123', '*2': 'run' }
112+
}
113+
]
114+
},
115+
{
116+
name: 'Average * segment',
117+
children: [
118+
{
119+
name: '/foo/:id/*',
120+
input: '/foo/:id/*',
121+
test_input: '/foo/123/bar',
122+
result: { id: '123', '*1': 'bar' }
123+
},
124+
{
125+
name: '/foo/*/*/*',
126+
input: '/foo/*/*/*',
127+
test_input: '/foo/123/bar/run',
128+
result: { '*1': '123', '*2': 'bar', '*3': 'run' }
129+
},
130+
{
131+
name: '/foo/*/:id/*',
132+
input: '/foo/*/:id/*',
133+
test_input: '/foo/123/bar/run',
134+
result: {
135+
'*1': '123',
136+
id: 'bar',
137+
'*2': 'run'
138+
}
139+
},
140+
{
141+
name: '/foo/*/:id/(.*)',
142+
input: '/foo/*/:id/(.*)',
143+
test_input: '/foo/123/bar/run',
144+
result: {
145+
'*1': '123',
146+
id: 'bar',
147+
'*2': 'run'
148+
}
149+
}
150+
]
151+
}
152+
];
153+
154+
module.exports = parse;

0 commit comments

Comments
 (0)