Skip to content

Commit

Permalink
fix(positive suite): API-27125 - Add request body missing properties …
Browse files Browse the repository at this point in the history
…warning message (#131)

* fix(positive suite): add request body missing optional properties warning

* refactor: aPI-27125 - commit new constansts file
  • Loading branch information
christineyost authored Jul 5, 2023
1 parent dd3f2ee commit 05651b1
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 8 deletions.
1 change: 1 addition & 0 deletions src/suites/positive/utilities/constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const REQUEST_BODY_PATH = 'requestBody';
10 changes: 8 additions & 2 deletions src/suites/positive/validation/positive-message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import { Severity, MessageTemplate, Message } from '../../../validation';

export enum Type {
EmptyArray,
MissingProperties,
RequestBodyMissingProperties,
ResponseMissingProperties,
ContentTypeMismatch,
DuplicateEnum,
EnumMismatch,
Expand Down Expand Up @@ -30,7 +31,12 @@ const messageTemplates: Record<Type, MessageTemplate> = {
details:
'Warning: This array was found to be empty and therefore could not be validated.',
},
[Type.MissingProperties]: {
[Type.RequestBodyMissingProperties]: {
severity: Severity.WARNING,
details:
'Warning: Request body is missing non-required properties that were unable to be validated, including {0}.',
},
[Type.ResponseMissingProperties]: {
severity: Severity.WARNING,
details:
'Warning: Response object is missing non-required properties that were unable to be validated, including {0}.',
Expand Down
7 changes: 6 additions & 1 deletion src/suites/positive/validation/positive-validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { Json, SchemaObject } from 'swagger-client/schema';
import OASSchema from '../../../oas-parsing/schema';
import { BaseValidator } from '../../../validation';
import { Message } from '../../../validation';
import { REQUEST_BODY_PATH } from '../utilities/constants';
import PositiveMessage, { Type } from './positive-message';

abstract class PositiveValidator extends BaseValidator {
Expand Down Expand Up @@ -243,7 +244,11 @@ abstract class PositiveValidator extends BaseValidator {
);

if (missingOptionalProperties.length > 0) {
this.addMessage(Type.MissingProperties, path, [
const warningType =
path[0] === REQUEST_BODY_PATH
? Type.RequestBodyMissingProperties
: Type.ResponseMissingProperties;
this.addMessage(warningType, path, [
missingOptionalProperties.join(', '),
]);
}
Expand Down
3 changes: 2 additions & 1 deletion src/suites/positive/validation/request-body-validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { RequestBodyObject } from 'swagger-client/schema';
import OASOperation from '../../../oas-parsing/operation';
import PositiveValidator from './positive-validator';
import { Type } from './positive-message';
import { REQUEST_BODY_PATH } from '../utilities/constants';

class RequestBodyValidator extends PositiveValidator {
private operation: OASOperation;
Expand All @@ -19,7 +20,7 @@ class RequestBodyValidator extends PositiveValidator {
};

private checkRequestBody(requestBody: RequestBodyObject): void {
const path: string[] = ['requestBody'];
const path: string[] = [REQUEST_BODY_PATH];

// check for content schema presence
const contentObjectKeys = Object.keys(requestBody.content);
Expand Down
6 changes: 3 additions & 3 deletions test/suites/positive/fixtures/warnings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@ import {
} from '../../../../src/suites/positive/validation';

const missingPropertyMiddleName = new PositiveMessage(
Type.MissingProperties,
Type.ResponseMissingProperties,
['body'],
[['middleName'].join(', ')],
);
missingPropertyMiddleName.incrementCount();

const missingPropertyAddress2 = new PositiveMessage(
Type.MissingProperties,
Type.ResponseMissingProperties,
['body', 'horcruxes', 'location'],
[['address2'].join(', ')],
);

const requestBodyMissingProperties = new PositiveMessage(
Type.MissingProperties,
Type.RequestBodyMissingProperties,
['requestBody', 'example', 'horcruxes', 'location'],
[['address2', 'name'].join(', ')],
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ describe('RequestBodyValidator', () => {
'Warning: This array was found to be empty and therefore could not be validated. Path: requestBody -> example -> classes',
);
expect(warnings).toContainValidationWarning(
'Warning: Response object is missing non-required properties that were unable to be validated, including hobby. Path: requestBody -> example',
'Warning: Request body is missing non-required properties that were unable to be validated, including hobby. Path: requestBody -> example',
);
});
});

0 comments on commit 05651b1

Please sign in to comment.