Skip to content

Commit f06c9bf

Browse files
authored
test(test): projects all tests into strict mode test suite (#156)
Refs #153
1 parent 8c5c800 commit f06c9bf

File tree

1 file changed

+59
-14
lines changed

1 file changed

+59
-14
lines changed

test/test.js

+59-14
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ describe('test', function () {
99
assert.isTrue(test('/{entity}/me'));
1010
assert.isTrue(test('/books/{id}'));
1111
assert.isTrue(test('/a{test}'));
12-
assert.isTrue(test('/foo/bar/{baz}/test/{foo_id}/baz/{bar_id}'));
1312
assert.isTrue(test('/{test}a'));
13+
assert.isTrue(test('/foo/bar/{baz}/test/{foo_id}/baz/{bar_id}'));
1414
assert.isTrue(test('/range({x},{y})')); // parentheses are allowed
1515
assert.isTrue(test('/range({x},{y})/secondRange({x},{y})')); // repeated parameter names are allowed
1616
assert.isTrue(test('/{entity}/{another-entity}/me'));
@@ -42,7 +42,7 @@ describe('test', function () {
4242
assert.isTrue(test('/{^baz}'));
4343
assert.isTrue(test('/{`baz}'));
4444
// RFC 6570 operators are allowed
45-
assert.isTrue(test('/{y,x}'), '/{y,x}');
45+
assert.isTrue(test('/{y,x}'));
4646
assert.isTrue(test('/{count*}'));
4747
assert.isTrue(test('/{;bar}'));
4848
assert.isTrue(test('/{&bar}'));
@@ -69,25 +69,70 @@ describe('test', function () {
6969

7070
context('given strict option', function () {
7171
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
7373
assert.isTrue(test('/pets/{petId}', { strict: true }));
7474
assert.isTrue(test('/{entity}/me', { strict: true }));
7575
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 }));
77106
});
78107

79108
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 }));
82114
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 }));
91136
});
92137
});
93138
});

0 commit comments

Comments
 (0)