@@ -9,8 +9,8 @@ describe('test', function () {
9
9
assert . isTrue ( test ( '/{entity}/me' ) ) ;
10
10
assert . isTrue ( test ( '/books/{id}' ) ) ;
11
11
assert . isTrue ( test ( '/a{test}' ) ) ;
12
- assert . isTrue ( test ( '/foo/bar/{baz}/test/{foo_id}/baz/{bar_id}' ) ) ;
13
12
assert . isTrue ( test ( '/{test}a' ) ) ;
13
+ assert . isTrue ( test ( '/foo/bar/{baz}/test/{foo_id}/baz/{bar_id}' ) ) ;
14
14
assert . isTrue ( test ( '/range({x},{y})' ) ) ; // parentheses are allowed
15
15
assert . isTrue ( test ( '/range({x},{y})/secondRange({x},{y})' ) ) ; // repeated parameter names are allowed
16
16
assert . isTrue ( test ( '/{entity}/{another-entity}/me' ) ) ;
@@ -42,7 +42,7 @@ describe('test', function () {
42
42
assert . isTrue ( test ( '/{^baz}' ) ) ;
43
43
assert . isTrue ( test ( '/{`baz}' ) ) ;
44
44
// RFC 6570 operators are allowed
45
- assert . isTrue ( test ( '/{y,x}' ) , '/{y,x}' ) ;
45
+ assert . isTrue ( test ( '/{y,x}' ) ) ;
46
46
assert . isTrue ( test ( '/{count*}' ) ) ;
47
47
assert . isTrue ( test ( '/{;bar}' ) ) ;
48
48
assert . isTrue ( test ( '/{&bar}' ) ) ;
@@ -69,25 +69,70 @@ describe('test', function () {
69
69
70
70
context ( 'given strict option' , function ( ) {
71
71
specify ( 'should detect as path template' , function ( ) {
72
- assert . isTrue ( test ( '/{path}' , { strict : true } ) ) ;
72
+ assert . isTrue ( test ( '/{path}/ ' , { strict : true } ) ) ; // trailing slash is allowed
73
73
assert . isTrue ( test ( '/pets/{petId}' , { strict : true } ) ) ;
74
74
assert . isTrue ( test ( '/{entity}/me' , { strict : true } ) ) ;
75
75
assert . isTrue ( test ( '/books/{id}' , { strict : true } ) ) ;
76
- assert . isTrue ( test ( '/{entity}/{another-entity}/me' ) ) ;
76
+ assert . isTrue ( test ( '/a{test}' , { strict : true } ) ) ;
77
+ assert . isTrue ( test ( '/{test}a' , { strict : true } ) ) ;
78
+ assert . isTrue ( test ( '/foo/bar/{baz}/test/{foo_id}/baz/{bar_id}' , { strict : true } ) ) ;
79
+ assert . isTrue ( test ( '/range({x},{y})' , { strict : true } ) ) ; // parentheses are allowed
80
+ assert . isTrue ( test ( '/range({x},{y})/secondRange({x},{y})' , { strict : true } ) ) ; // repeated parameter names are allowed
81
+ assert . isTrue ( test ( '/{entity}/{another-entity}/me' , { strict : true } ) ) ;
82
+ // some special characters in literals are allowed
83
+ assert . isTrue ( test ( "/applications(appId='{appId}')" , { strict : true } ) ) ;
84
+ // some special characters in parameters names are allowed
85
+ assert . isTrue ( test ( '/users/{user-id}' , { strict : true } ) ) ;
86
+ assert . isTrue ( test ( '/{❤️}' , { strict : true } ) ) ;
87
+ assert . isTrue ( test ( '/{%}' , { strict : true } ) ) ;
88
+ assert . isTrue ( test ( '/{foo, :}' , { strict : true } ) ) ;
89
+ assert . isTrue ( test ( '/{foo:ba, z}' , { strict : true } ) ) ;
90
+ assert . isTrue ( test ( '/{=baz}' , { strict : true } ) ) ;
91
+ assert . isTrue ( test ( '/{$baz}' , { strict : true } ) ) ;
92
+ assert . isTrue ( test ( '/{~baz}' , { strict : true } ) ) ;
93
+ assert . isTrue ( test ( '/{#baz}' , { strict : true } ) ) ;
94
+ assert . isTrue ( test ( '/{?baz}' , { strict : true } ) ) ;
95
+ assert . isTrue ( test ( '/{/baz}' , { strict : true } ) ) ;
96
+ assert . isTrue ( test ( '/{foo ba, z}' , { strict : true } ) ) ;
97
+ assert . isTrue ( test ( '/{|baz}' , { strict : true } ) ) ;
98
+ assert . isTrue ( test ( '/{^baz}' , { strict : true } ) ) ;
99
+ assert . isTrue ( test ( '/{`baz}' , { strict : true } ) ) ;
100
+ // RFC 6570 operators are allowed
101
+ assert . isTrue ( test ( '/{y,x}' , { strict : true } ) ) ;
102
+ assert . isTrue ( test ( '/{count*}' , { strict : true } ) ) ;
103
+ assert . isTrue ( test ( '/{;bar}' , { strict : true } ) ) ;
104
+ assert . isTrue ( test ( '/{&bar}' , { strict : true } ) ) ;
105
+ assert . isTrue ( test ( '/{.bar}' , { strict : true } ) ) ;
77
106
} ) ;
78
107
79
108
specify ( 'should not detect expression' , function ( ) {
80
- assert . isFalse ( test ( '/' , { strict : true } ) ) ;
81
- assert . isFalse ( test ( '/pets/mine' , { strict : true } ) ) ;
109
+ assert . isFalse ( test ( '' , { strict : true } ) ) ;
110
+ assert . isFalse ( test ( '1' , { strict : true } ) ) ;
111
+ assert . isFalse ( test ( '//' , { strict : true } ) ) ;
112
+ assert . isFalse ( test ( '{petId}' , { strict : true } ) ) ;
113
+ assert . isFalse ( test ( '/pet/{petId' , { strict : true } ) ) ;
82
114
assert . isFalse ( test ( '/pets?offset=0&limit=10' , { strict : true } ) ) ;
83
- assert . isFalse ( test ( '/pets/{petId}?offset={offset}&limit={limit}' , { strict : true } ) ) ;
84
- assert . isFalse ( test ( '' ) ) ;
85
- assert . isFalse ( test ( '1' ) ) ;
86
- assert . isFalse ( test ( '{petId}' ) ) ;
87
- assert . isFalse ( test ( '/pet/{petId' ) ) ;
88
- assert . isFalse ( test ( 1 ) ) ;
89
- assert . isFalse ( test ( null ) ) ;
90
- assert . isFalse ( test ( undefined ) ) ;
115
+ assert . isFalse ( test ( '/pets?offset={offset}&limit={limit}' , { strict : true } ) ) ;
116
+ assert . isFalse ( test ( '/pets?offset{offset}limit={limit}' , { strict : true } ) ) ;
117
+ assert . isFalse ( test ( '/#baz' , { strict : true } ) ) ;
118
+ // some special characters in literals are allowed
119
+ assert . isFalse ( test ( '/' , { strict : true } ) ) ;
120
+ assert . isFalse ( test ( '/-/' , { strict : true } ) ) ;
121
+ assert . isFalse ( test ( '/~/' , { strict : true } ) ) ;
122
+ assert . isFalse ( test ( '/%20' , { strict : true } ) ) ;
123
+ assert . isFalse ( test ( '/functions/t_Dist_2T' , { strict : true } ) ) ;
124
+ assert . isFalse ( test ( '/users/$count' , { strict : true } ) ) ;
125
+ assert . isFalse ( test ( '/users/delta()' , { strict : true } ) ) ;
126
+ assert . isFalse ( test ( '/directoryObjects/microsoft.graph.user' , { strict : true } ) ) ;
127
+ assert . isFalse (
128
+ test ( "/com/on/get(meetingOrganizerUserId='@meetingOrganizerUserId')" , { strict : true } ) ,
129
+ ) ;
130
+ // special characters in literals are not allowed
131
+ assert . isFalse ( test ( '/❤️' ) ) ;
132
+ // invalid types
133
+ assert . isFalse ( test ( 1 , { strict : true } ) ) ;
134
+ assert . isFalse ( test ( null , { strict : true } ) ) ;
135
+ assert . isFalse ( test ( undefined , { strict : true } ) ) ;
91
136
} ) ;
92
137
} ) ;
93
138
} ) ;
0 commit comments