From 170a7ead180cde06e505c18e14c773b02f39cc96 Mon Sep 17 00:00:00 2001 From: Adrian Jones <14924378+Nboaram@users.noreply.github.com> Date: Tue, 17 Aug 2021 12:35:24 +0100 Subject: [PATCH] [MTDSA-9636] Create Marriage Allowance Alignment (#70) * [MTDSA-9636] Create Marriage Allowance Alignment * [MTDSA-9636] Create Marriage Allowance Alignment Controller and GovTest Scenario * [MTDSA-9636] Comments Addressed --- .../CreateMarriageAllowanceController.scala | 17 ++++++++++++----- app/v1/models/errors/mtdErrors.scala | 5 +++++ .../CreateMarriageAllowanceService.scala | 2 +- ...CreateMarriageAllowanceControllerISpec.scala | 2 +- .../1.0/endpoints/marriageAllowance/create.raml | 1 + resources/public/api/conf/1.0/errors.raml | 11 +++++++++++ .../1.0/scenarios/createMarriageAllowance.md | 4 ++++ .../CreateMarriageAllowanceControllerSpec.scala | 1 + .../CreateMarriageAllowanceServiceSpec.scala | 2 +- 9 files changed, 37 insertions(+), 8 deletions(-) diff --git a/app/v1/controllers/CreateMarriageAllowanceController.scala b/app/v1/controllers/CreateMarriageAllowanceController.scala index 1267169..37b85af 100644 --- a/app/v1/controllers/CreateMarriageAllowanceController.scala +++ b/app/v1/controllers/CreateMarriageAllowanceController.scala @@ -108,11 +108,18 @@ class CreateMarriageAllowanceController @Inject()(val authService: EnrolmentsAut private def errorResult(errorWrapper: ErrorWrapper) = { (errorWrapper.error: @unchecked) match { - case BadRequestError | NinoFormatError | PartnerFirstNameFormatError | PartnerSurnameFormatError | PartnerNinoFormatError | - PartnerDoBFormatError | MtdErrorWithCustomMessage(RuleIncorrectOrEmptyBodyError.code) => - BadRequest(Json.toJson(errorWrapper)) - case RuleDeceasedRecipientError | RuleActiveMarriageAllowanceClaimError => Forbidden(Json.toJson(errorWrapper)) - case DownstreamError => InternalServerError(Json.toJson(errorWrapper)) + case BadRequestError | + NinoFormatError | + PartnerFirstNameFormatError | + PartnerSurnameFormatError | + PartnerNinoFormatError | + PartnerDoBFormatError | + MtdErrorWithCustomMessage(RuleIncorrectOrEmptyBodyError.code) + => BadRequest(Json.toJson(errorWrapper)) + case RuleDeceasedRecipientError | + RuleInvalidRequestError | + RuleActiveMarriageAllowanceClaimError => Forbidden(Json.toJson(errorWrapper)) + case DownstreamError => InternalServerError(Json.toJson(errorWrapper)) } } diff --git a/app/v1/models/errors/mtdErrors.scala b/app/v1/models/errors/mtdErrors.scala index 679ed4b..09d7f61 100644 --- a/app/v1/models/errors/mtdErrors.scala +++ b/app/v1/models/errors/mtdErrors.scala @@ -103,6 +103,11 @@ object RuleActiveMarriageAllowanceClaimError extends MtdError( message = "Marriage Allowance has already been transferred to a spouse or civil partner" ) +object RuleInvalidRequestError extends MtdError( + code = "RULE_INVALID_REQUEST", + message = "The NINO supplied is invalid" +) + //Standard Errors object NotFoundError extends MtdError( code = "MATCHING_RESOURCE_NOT_FOUND", diff --git a/app/v1/services/CreateMarriageAllowanceService.scala b/app/v1/services/CreateMarriageAllowanceService.scala index d66ea16..3ace02e 100644 --- a/app/v1/services/CreateMarriageAllowanceService.scala +++ b/app/v1/services/CreateMarriageAllowanceService.scala @@ -54,7 +54,7 @@ class CreateMarriageAllowanceService @Inject()(connector: CreateMarriageAllowanc "END_DATE_CODE_NOT_FOUND" -> DownstreamError, "INVALID_CORRELATIONID" -> DownstreamError, "INVALID_PAYLOAD" -> DownstreamError, - "NINO_OR_TRN_NOT_FOUND" -> DownstreamError, + "NINO_OR_TRN_NOT_FOUND" -> RuleInvalidRequestError, "INVALID_ACTUAL_END_DATE" -> DownstreamError, "INVALID_PARTICIPANT_END_DATE" -> DownstreamError, "INVALID_PARTICIPANT_START_DATE" -> DownstreamError, diff --git a/it/v1/endpoints/CreateMarriageAllowanceControllerISpec.scala b/it/v1/endpoints/CreateMarriageAllowanceControllerISpec.scala index 9371781..ae0cebe 100644 --- a/it/v1/endpoints/CreateMarriageAllowanceControllerISpec.scala +++ b/it/v1/endpoints/CreateMarriageAllowanceControllerISpec.scala @@ -253,7 +253,7 @@ class CreateMarriageAllowanceControllerISpec extends IntegrationBaseSpec { (BAD_REQUEST, "INVALID_PAYLOAD", INTERNAL_SERVER_ERROR, DownstreamError), (BAD_REQUEST, "INVALID_CORRELATIONID", INTERNAL_SERVER_ERROR, DownstreamError), (NOT_FOUND, "END_DATE_CODE_NOT_FOUND", INTERNAL_SERVER_ERROR, DownstreamError), - (NOT_FOUND, "NINO_OR_TRN_NOT_FOUND", INTERNAL_SERVER_ERROR, DownstreamError), + (NOT_FOUND, "NINO_OR_TRN_NOT_FOUND", FORBIDDEN, RuleInvalidRequestError), (UNPROCESSABLE_ENTITY, "INVALID_ACTUAL_END_DATE", INTERNAL_SERVER_ERROR, DownstreamError), (UNPROCESSABLE_ENTITY, "INVALID_PARTICIPANT_END_DATE", INTERNAL_SERVER_ERROR, DownstreamError), (UNPROCESSABLE_ENTITY, "INVALID_PARTICIPANT_START_DATE", INTERNAL_SERVER_ERROR, DownstreamError), diff --git a/resources/public/api/conf/1.0/endpoints/marriageAllowance/create.raml b/resources/public/api/conf/1.0/endpoints/marriageAllowance/create.raml index a4edbfe..30714b1 100644 --- a/resources/public/api/conf/1.0/endpoints/marriageAllowance/create.raml +++ b/resources/public/api/conf/1.0/endpoints/marriageAllowance/create.raml @@ -11,6 +11,7 @@ is: - errors.ruleActiveMarriageAllowanceClaim - errors.clientOrAgentNotAuthorised - errors.incorrectOrEmptyBody + - errors.ruleInvalidRequest displayName: Create Marriage Allowance description: "This endpoint allows the customer to transfer up to £1,260 of their personal allowance to their spouse or civil partner. A National Insurance Number must be provided." diff --git a/resources/public/api/conf/1.0/errors.raml b/resources/public/api/conf/1.0/errors.raml index f5905a7..5f28abb 100644 --- a/resources/public/api/conf/1.0/errors.raml +++ b/resources/public/api/conf/1.0/errors.raml @@ -48,6 +48,17 @@ traits: description: 'The specified tax year is not supported. That is, the tax year specified is before the minimum tax year value.' value: code: RULE_TAX_YEAR_NOT_SUPPORTED + ruleInvalidRequest: + responses: + 403: + body: + application/json: + type: types.errorResponse + examples: + ruleInvalidRequest: + description: 'The request cannot be made as the current NINO supplied is invalid.' + value: + code: RULE_INVALID_REQUEST ruleTaxYearRangeInvalid: responses: 400: diff --git a/resources/public/api/conf/1.0/scenarios/createMarriageAllowance.md b/resources/public/api/conf/1.0/scenarios/createMarriageAllowance.md index 26a0382..5827a62 100644 --- a/resources/public/api/conf/1.0/scenarios/createMarriageAllowance.md +++ b/resources/public/api/conf/1.0/scenarios/createMarriageAllowance.md @@ -19,5 +19,9 @@

CLAIM_ALREADY_EXISTS

Simulates the scenario in which a Marriage Allowance claim already exists for the supplied NINO.

+ +

INVALID_REQUEST

+

Simulates the scenario in which a request cannot be made as the current NINO supplied is invalid.

+ \ No newline at end of file diff --git a/test/v1/controllers/CreateMarriageAllowanceControllerSpec.scala b/test/v1/controllers/CreateMarriageAllowanceControllerSpec.scala index 0b5a743..b43145f 100644 --- a/test/v1/controllers/CreateMarriageAllowanceControllerSpec.scala +++ b/test/v1/controllers/CreateMarriageAllowanceControllerSpec.scala @@ -210,6 +210,7 @@ class CreateMarriageAllowanceControllerSpec (NinoFormatError, BAD_REQUEST), (RuleDeceasedRecipientError, FORBIDDEN), (RuleActiveMarriageAllowanceClaimError, FORBIDDEN), + (RuleInvalidRequestError, FORBIDDEN), (DownstreamError, INTERNAL_SERVER_ERROR) ) diff --git a/test/v1/services/CreateMarriageAllowanceServiceSpec.scala b/test/v1/services/CreateMarriageAllowanceServiceSpec.scala index 168e155..506b115 100644 --- a/test/v1/services/CreateMarriageAllowanceServiceSpec.scala +++ b/test/v1/services/CreateMarriageAllowanceServiceSpec.scala @@ -73,7 +73,7 @@ class CreateMarriageAllowanceServiceSpec extends ServiceSpec { ("END_DATE_CODE_NOT_FOUND", DownstreamError), ("INVALID_CORRELATIONID", DownstreamError), ("INVALID_PAYLOAD", DownstreamError), - ("NINO_OR_TRN_NOT_FOUND", DownstreamError), + ("NINO_OR_TRN_NOT_FOUND", RuleInvalidRequestError), ("INVALID_ACTUAL_END_DATE", DownstreamError), ("INVALID_PARTICIPANT_END_DATE", DownstreamError), ("INVALID_PARTICIPANT_START_DATE", DownstreamError),