Skip to content

Commit c75bdae

Browse files
authored
Merge branch 'master' into general/tests-for-default
2 parents 393ae2d + 1ac9460 commit c75bdae

3 files changed

Lines changed: 620 additions & 0 deletions

File tree

test/middleware-test.js

Lines changed: 371 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2067,6 +2067,377 @@ describe('input-validation middleware tests', function () {
20672067
});
20682068
});
20692069
});
2070+
describe('Server with YAML anchors', function () {
2071+
var app;
2072+
before(function () {
2073+
return require('./test-server-with-yaml-anchors').then(function (testServer) {
2074+
app = testServer;
2075+
});
2076+
});
2077+
it('valid request - should pass validation', function (done) {
2078+
request(app)
2079+
.get('/pets')
2080+
.set('api-version', '1.0')
2081+
.set('request-id', '123456')
2082+
.query({ page: 0 })
2083+
.expect(200, function (err, res) {
2084+
if (err) {
2085+
throw err;
2086+
}
2087+
expect(res.body.result).to.equal('OK');
2088+
done();
2089+
});
2090+
});
2091+
it('valid post request - should pass validation', function (done) {
2092+
request(app)
2093+
.post('/pets')
2094+
.set('request-id', '1234')
2095+
.set('api-version', '1.0')
2096+
.send({
2097+
name: 'name',
2098+
tag: 'tag',
2099+
test: {
2100+
field1: 'enum1'
2101+
}
2102+
})
2103+
.expect(200, function (err, res) {
2104+
if (err) {
2105+
throw err;
2106+
}
2107+
expect(res.body.result).to.equal('OK');
2108+
done();
2109+
});
2110+
});
2111+
it('missing header - should fail', function (done) {
2112+
request(app)
2113+
.get('/pets')
2114+
.set('request-id', '123456')
2115+
.query({ page: 0 })
2116+
.expect(400, function (err, res) {
2117+
if (err) {
2118+
throw err;
2119+
}
2120+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2121+
expect(moreInfoAsJson).to.be.instanceof(Array);
2122+
expect(res.body.more_info).to.includes('api-version');
2123+
expect(res.body.more_info).to.includes('should have required property \'api-version\'');
2124+
done();
2125+
});
2126+
});
2127+
it('bad header - invalid pattern', function (done) {
2128+
request(app)
2129+
.get('/pets')
2130+
.set('request-id', '123456')
2131+
.set('api-version', '1')
2132+
.query({ page: 0 })
2133+
.expect(400, function (err, res) {
2134+
if (err) {
2135+
throw err;
2136+
}
2137+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2138+
expect(moreInfoAsJson).to.be.instanceof(Array);
2139+
expect(res.body.more_info).to.includes('api-version');
2140+
expect(res.body.more_info).to.includes('should match pattern');
2141+
done();
2142+
});
2143+
});
2144+
it('bad header - empty header', function (done) {
2145+
request(app)
2146+
.get('/pets')
2147+
.set('request-id', '')
2148+
.set('api-version', '1.0')
2149+
.query({ page: 0 })
2150+
.expect(400, function (err, res) {
2151+
if (err) {
2152+
throw err;
2153+
}
2154+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2155+
expect(moreInfoAsJson).to.be.instanceof(Array);
2156+
expect(res.body.more_info).to.includes('request-id');
2157+
expect(res.body.more_info).to.includes('should NOT be shorter than 1 characters');
2158+
done();
2159+
});
2160+
});
2161+
it('bad body - wrong type', function (done) {
2162+
request(app)
2163+
.post('/pets')
2164+
.set('request-id', '123234')
2165+
.set('api-version', '1.0')
2166+
.send({
2167+
name: '111',
2168+
tag: 12344,
2169+
'test': {
2170+
field1: '1'
2171+
}
2172+
})
2173+
.expect(400, function (err, res) {
2174+
if (err) {
2175+
throw err;
2176+
}
2177+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2178+
expect(moreInfoAsJson).to.be.instanceof(Array);
2179+
expect(res.body.more_info).to.includes('tag');
2180+
done();
2181+
});
2182+
});
2183+
it('bad body - missing required params', function (done) {
2184+
request(app)
2185+
.post('/pets')
2186+
.set('request-id', '123324')
2187+
.set('api-version', '1.0')
2188+
.send({
2189+
tag: 'tag',
2190+
'test': {
2191+
field1: '1'
2192+
}
2193+
})
2194+
.expect(400, function (err, res) {
2195+
if (err) {
2196+
throw err;
2197+
}
2198+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2199+
expect(moreInfoAsJson).to.be.instanceof(Array);
2200+
expect(res.body.more_info).to.includes('name');
2201+
done();
2202+
});
2203+
});
2204+
it('bad body - missing required object attribute', function (done) {
2205+
request(app)
2206+
.post('/pets')
2207+
.set('request-id', '123434')
2208+
.set('api-version', '1.0')
2209+
.send({
2210+
name: 'name',
2211+
tag: 'tag'
2212+
})
2213+
.expect(400, function (err, res) {
2214+
if (err) {
2215+
throw err;
2216+
}
2217+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2218+
expect(moreInfoAsJson).to.be.instanceof(Array);
2219+
expect(res.body.more_info).to.includes('test');
2220+
done();
2221+
});
2222+
});
2223+
it('bad body - wrong type object attribute', function (done) {
2224+
request(app)
2225+
.post('/pets')
2226+
.set('request-id', '12334')
2227+
.set('api-version', '1.0')
2228+
.send({
2229+
name: 'name',
2230+
tag: 'tag',
2231+
test: ''
2232+
})
2233+
.expect(400, function (err, res) {
2234+
if (err) {
2235+
throw err;
2236+
}
2237+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2238+
expect(moreInfoAsJson).to.be.instanceof(Array);
2239+
expect(res.body.more_info).to.includes('test');
2240+
done();
2241+
});
2242+
});
2243+
it('bad body - missing required nested attribute', function (done) {
2244+
request(app)
2245+
.post('/pets')
2246+
.set('request-id', '12343')
2247+
.set('api-version', '1.0')
2248+
.send({
2249+
name: 'name',
2250+
tag: 'tag',
2251+
test: {}
2252+
})
2253+
.expect(400, function (err, res) {
2254+
if (err) {
2255+
throw err;
2256+
}
2257+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2258+
expect(moreInfoAsJson).to.be.instanceof(Array);
2259+
expect(res.body.more_info).to.includes('field1');
2260+
done();
2261+
});
2262+
});
2263+
it('bad body - wrong format nested attribute', function (done) {
2264+
request(app)
2265+
.post('/pets')
2266+
.set('request-id', '12343')
2267+
.set('api-version', '1.0')
2268+
.send({
2269+
name: 'name',
2270+
tag: 'tag',
2271+
test: {
2272+
field1: 1234
2273+
}
2274+
})
2275+
.expect(400, function (err, res) {
2276+
if (err) {
2277+
throw err;
2278+
}
2279+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2280+
expect(moreInfoAsJson).to.be.instanceof(Array);
2281+
expect(res.body.more_info).to.includes('field1');
2282+
done();
2283+
});
2284+
});
2285+
it('bad body - wrong enum value', function (done) {
2286+
request(app)
2287+
.post('/pets')
2288+
.set('request-id', '1234')
2289+
.set('api-version', '1.0')
2290+
.send({
2291+
name: 'name',
2292+
tag: 'tag',
2293+
test: {
2294+
field1: 'field1'
2295+
}
2296+
})
2297+
.expect(400, function (err, res) {
2298+
if (err) {
2299+
throw err;
2300+
}
2301+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2302+
expect(moreInfoAsJson).to.be.instanceof(Array);
2303+
expect(res.body.more_info).to.includes('should be equal to one of the allowed values');
2304+
done();
2305+
});
2306+
});
2307+
it('bad query param - missing required params', function (done) {
2308+
request(app)
2309+
.get('/pets')
2310+
.set('request-id', '1234')
2311+
.set('api-version', '1.0')
2312+
.query({ limit: 100 })
2313+
.expect(400, function (err, res) {
2314+
if (err) {
2315+
throw err;
2316+
}
2317+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2318+
expect(moreInfoAsJson).to.be.instanceof(Array);
2319+
expect(res.body.more_info).to.includes('page');
2320+
done();
2321+
});
2322+
});
2323+
it('bad query param - over limit', function (done) {
2324+
request(app)
2325+
.get('/pets')
2326+
.set('request-id', '1234')
2327+
.set('api-version', '1.0')
2328+
.query({ limit: 150, page: 0 })
2329+
.expect(400, function (err, res) {
2330+
if (err) {
2331+
throw err;
2332+
}
2333+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2334+
expect(moreInfoAsJson).to.be.instanceof(Array);
2335+
expect(res.body.more_info).to.includes('limit');
2336+
done();
2337+
});
2338+
});
2339+
it('bad query param - under limit', function (done) {
2340+
request(app)
2341+
.get('/pets')
2342+
.set('request-id', '1234')
2343+
.set('api-version', '1.0')
2344+
.query({ limit: 0, page: 0 })
2345+
.expect(400, function (err, res) {
2346+
if (err) {
2347+
throw err;
2348+
}
2349+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2350+
expect(moreInfoAsJson).to.be.instanceof(Array);
2351+
expect(res.body.more_info).to.includes('limit');
2352+
done();
2353+
});
2354+
});
2355+
it('bad path param - wrong format', function (done) {
2356+
request(app)
2357+
.get('/pets/12')
2358+
.set('request-id', '1234')
2359+
.set('api-version', '1.0')
2360+
.query({ limit: '50', page: 0 })
2361+
.expect(400, function (err, res) {
2362+
if (err) {
2363+
throw err;
2364+
}
2365+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2366+
expect(moreInfoAsJson).to.be.instanceof(Array);
2367+
expect(res.body.more_info).to.includes('petId');
2368+
done();
2369+
});
2370+
});
2371+
it('bad body - wrong format nested attribute (not parameters)', function (done) {
2372+
request(app)
2373+
.put('/pets')
2374+
.send([{
2375+
name: 'name',
2376+
tag: 'tag',
2377+
test: {
2378+
field1: 1234
2379+
}
2380+
}])
2381+
.expect(400, function (err, res) {
2382+
if (err) {
2383+
throw err;
2384+
}
2385+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2386+
expect(moreInfoAsJson).to.be.instanceof(Array);
2387+
expect(moreInfoAsJson.length).to.equal(2);
2388+
expect(res.body.more_info).to.includes('field1');
2389+
done();
2390+
});
2391+
});
2392+
it('bad body - wrong format in array item body (second item)', function (done) {
2393+
request(app)
2394+
.put('/pets')
2395+
.send([
2396+
{
2397+
name: 'name',
2398+
tag: 'tag',
2399+
test: {
2400+
field1: 'enum1'
2401+
}
2402+
},
2403+
{
2404+
name: 'name',
2405+
tag: 'tag',
2406+
test: {
2407+
field1: 1234
2408+
}
2409+
}])
2410+
.expect(400, function (err, res) {
2411+
if (err) {
2412+
throw err;
2413+
}
2414+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2415+
expect(moreInfoAsJson).to.be.instanceof(Array);
2416+
expect(res.body.more_info).to.includes('[1].test.field1');
2417+
done();
2418+
});
2419+
});
2420+
it('bad body - wrong format body (should be an array)', function (done) {
2421+
request(app)
2422+
.put('/pets')
2423+
.send({
2424+
name: 'name',
2425+
tag: 'tag',
2426+
test: {
2427+
field1: '1234'
2428+
}
2429+
})
2430+
.expect(400, function (err, res) {
2431+
if (err) {
2432+
throw err;
2433+
}
2434+
let moreInfoAsJson = JSON.parse(res.body.more_info);
2435+
expect(moreInfoAsJson).to.be.instanceof(Array);
2436+
expect(res.body.more_info).to.includes('should be array');
2437+
done();
2438+
});
2439+
});
2440+
});
20702441
describe('Inheritance', function () {
20712442
var app;
20722443
before(function () {

0 commit comments

Comments
 (0)