Skip to content

Commit

Permalink
provide test cases for required file changes and always invoke verify…
Browse files Browse the repository at this point in the history
…Response even in case of error to properly execute the assertions even in case of an error
  • Loading branch information
kchobantonov committed Jan 5, 2025
1 parent 04dd319 commit 18ced30
Show file tree
Hide file tree
Showing 15 changed files with 85 additions and 6 deletions.
1 change: 1 addition & 0 deletions tests/esm/integration/express.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ describe('Express Server', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1242,6 +1242,7 @@ describe('Express Server', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
1 change: 1 addition & 0 deletions tests/integration/express-router-server.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ describe('Express Router Server', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
17 changes: 17 additions & 0 deletions tests/integration/express-server-custom-multer.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,22 @@ describe('Express Server With custom multer', () => {
});
});

it('cannot post a file with no file', async () => {
const formData = { notAFileAttribute: 'not a file' };
verifyFileUploadRequest(basePath + '/PostTest/File', formData, (_err, res) => {
expect(res.status).to.equal(400);
expect(res.text).to.equal('{"fields":{"someFile":{"message":"\'someFile\' is required"}},"message":"An error occurred during the request.","name":"ValidateError","status":400}');
});
});

it('can post a file with no file', async () => {
const formData = { notAFileAttribute: 'not a file' };
verifyFileUploadRequest(basePath + '/PostTest/FileOptional', formData, (_err, res) => {
expect(res.status).to.equal(200);
expect(res.text).to.equal('no file');
});
});

it('can post multiple files with other form fields', () => {
const formData = {
a: 'b',
Expand Down Expand Up @@ -197,6 +213,7 @@ describe('Express Server With custom multer', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
1 change: 1 addition & 0 deletions tests/integration/express-server-root-security.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ describe('Express Server with api_key Root Security', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
21 changes: 19 additions & 2 deletions tests/integration/express-server.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1514,7 +1514,7 @@ describe('Express Server', () => {
const mainResourceId = 'main-123';

return verifyGetRequest(basePath + `/SubResourceTest/${mainResourceId}/SubResource`, (_err, res) => {
expect(res.body).to.equal(mainResourceId);
expect(res.text).to.equal(mainResourceId);
});
});

Expand All @@ -1523,7 +1523,7 @@ describe('Express Server', () => {
const subResourceId = 'sub-456';

return verifyGetRequest(basePath + `/SubResourceTest/${mainResourceId}/SubResource/${subResourceId}`, (_err, res) => {
expect(res.body).to.equal(`${mainResourceId}:${subResourceId}`);
expect(res.text).to.equal(`${mainResourceId}:${subResourceId}`);
});
});
});
Expand Down Expand Up @@ -1559,6 +1559,22 @@ describe('Express Server', () => {
});
});

it('cannot post a file with no file', async () => {
const formData = { notAFileAttribute: 'not a file' };
verifyFileUploadRequest(basePath + '/PostTest/File', formData, (_err, res) => {
expect(res.status).to.equal(400);
expect(res.text).to.equal('{"fields":{"someFile":{"message":"\'someFile\' is required"}},"message":"An error occurred during the request.","name":"ValidateError","status":400}');
});
});

it('can post a file with no file', async () => {
const formData = { notAFileAttribute: 'not a file' };
verifyFileUploadRequest(basePath + '/PostTest/FileOptional', formData, (_err, res) => {
expect(res.status).to.equal(200);
expect(res.text).to.equal('no file');
});
});

it('can post multiple files with other form fields', () => {
const formData = {
a: 'b',
Expand Down Expand Up @@ -1723,6 +1739,7 @@ describe('Express Server', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
21 changes: 19 additions & 2 deletions tests/integration/hapi-server.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1437,8 +1437,24 @@ describe('Hapi Server', () => {
it('cannot post a file with wrong attribute name', async () => {
const formData = { wrongAttributeName: '@../package.json' };
verifyFileUploadRequest(basePath + '/PostTest/File', formData, (_err, res) => {
expect(res.status).to.equal(500);
expect(res.text).to.equal('{"message":"Unexpected field","name":"MulterError","status":500}');
expect(res.status).to.equal(400);
expect(res.text).to.equal('{"name":"ValidateError","fields":{"someFile":{"message":"\'someFile\' is required"}},"message":"Bad Request"}');
});
});

it('cannot post a file with no file', async () => {
const formData = { notAFileAttribute: 'not a file' };
verifyFileUploadRequest(basePath + '/PostTest/File', formData, (_err, res) => {
expect(res.status).to.equal(400);
expect(res.text).to.equal('{"name":"ValidateError","fields":{"someFile":{"message":"\'someFile\' is required"}},"message":"Bad Request"}');
});
});

it('can post a file with no file', async () => {
const formData = { notAFileAttribute: 'not a file' };
verifyFileUploadRequest(basePath + '/PostTest/FileOptional', formData, (_err, res) => {
expect(res.status).to.equal(200);
expect(res.text).to.equal('no file');
});
});

Expand Down Expand Up @@ -1606,6 +1622,7 @@ describe('Hapi Server', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
1 change: 1 addition & 0 deletions tests/integration/inversify-async-server.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ describe('Inversify async IoC Express Server', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
3 changes: 2 additions & 1 deletion tests/integration/inversify-dynamic-container.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const basePath = '/v1';
describe('Inversify Express Server Dynamic Container', () => {
it('can handle get request with no path argument', () => {
return verifyGetRequest(basePath + '/ManagedTest?tsoa=abc123456', (err, res) => {
const model = res.body as string;
const model = res.text;
expect(model).to.equal(basePath + '/ManagedTest');
});
});
Expand All @@ -32,6 +32,7 @@ describe('Inversify Express Server Dynamic Container', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
1 change: 1 addition & 0 deletions tests/integration/inversify-glob.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ describe('Inversify Express Server with ControllerPathGlob', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
1 change: 1 addition & 0 deletions tests/integration/inversify-server.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ describe('Inversify Express Server', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
1 change: 1 addition & 0 deletions tests/integration/koa-multer-options.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ describe('Koa Server (with multerOpts)', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
1 change: 1 addition & 0 deletions tests/integration/koa-server-no-additional-allowed.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,7 @@ describe('Koa Server (with noImplicitAdditionalProperties turned on)', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
19 changes: 18 additions & 1 deletion tests/integration/koa-server.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1418,7 +1418,23 @@ describe('Koa Server', () => {
const formData = { wrongAttributeName: '@../package.json' };
verifyFileUploadRequest(basePath + '/PostTest/File', formData, (_err, res) => {
expect(res.status).to.equal(500);
expect(res.text).to.equal('{"message":"Unexpected field","name":"MulterError","status":500}');
expect(res.text).to.equal('Unexpected field');
});
});

it('cannot post a file with no file', async () => {
const formData = { notAFileAttribute: 'not a file' };
verifyFileUploadRequest(basePath + '/PostTest/File', formData, (_err, res) => {
expect(res.status).to.equal(400);
expect(res.text).to.equal('{"fields":{"someFile":{"message":"\'someFile\' is required"}}}');
});
});

it('can post a file with no file', async () => {
const formData = { notAFileAttribute: 'not a file' };
verifyFileUploadRequest(basePath + '/PostTest/FileOptional', formData, (_err, res) => {
expect(res.status).to.equal(200);
expect(res.text).to.equal('no file');
});
});

Expand Down Expand Up @@ -1589,6 +1605,7 @@ describe('Koa Server', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down
1 change: 1 addition & 0 deletions tests/integration/openapi3-express.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,7 @@ describe('OpenAPI3 Express Server', () => {
}

if (err) {
verifyResponse(err, res);
reject({
error: err,
response: parsedError,
Expand Down

0 comments on commit 18ced30

Please sign in to comment.