From 3cfe5e12eb256a9d6223140f267a45b3f712c404 Mon Sep 17 00:00:00 2001 From: westwater Date: Fri, 3 Feb 2023 09:17:23 +0000 Subject: [PATCH 1/2] Appended srn to internal id when persisting to session cache DB --- app/controllers/actions/DataCreationAction.scala | 3 ++- app/controllers/actions/DataRetrievalAction.scala | 6 ++---- app/models/SchemeDetails.scala | 2 ++ test-utils/generators/ModelGenerators.scala | 3 ++- test-utils/models/ModelSerializers.scala | 1 + test/controllers/ControllerBaseSpec.scala | 1 + test/controllers/actions/DataCreationActionSpec.scala | 2 +- test/controllers/actions/DataRetrievalActionSpec.scala | 4 ++-- 8 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/controllers/actions/DataCreationAction.scala b/app/controllers/actions/DataCreationAction.scala index 8936a438f..c231f119d 100644 --- a/app/controllers/actions/DataCreationAction.scala +++ b/app/controllers/actions/DataCreationAction.scala @@ -30,7 +30,8 @@ class DataCreationActionImpl @Inject()(sessionRepository: SessionRepository)(imp request.userAnswers match { case None => - val userAnswers = UserAnswers(request.getUserId) + val userAnswersKey = request.getUserId + request.request.schemeDetails.srn + val userAnswers = UserAnswers(userAnswersKey) sessionRepository.set(userAnswers).map(_ => DataRequest(request.request, userAnswers)) case Some(data) => Future.successful(DataRequest(request.request, data)) diff --git a/app/controllers/actions/DataRetrievalAction.scala b/app/controllers/actions/DataRetrievalAction.scala index 1516a28d0..a22f5be12 100755 --- a/app/controllers/actions/DataRetrievalAction.scala +++ b/app/controllers/actions/DataRetrievalAction.scala @@ -28,10 +28,8 @@ class DataRetrievalActionImpl @Inject()( )(implicit val executionContext: ExecutionContext) extends DataRetrievalAction { override protected def transform[A](request: AllowedAccessRequest[A]): Future[OptionalDataRequest[A]] = { - - sessionRepository.get(request.request.getUserId).map { - OptionalDataRequest(request, _) - } + val userAnswersKey = request.getUserId + request.schemeDetails.srn + sessionRepository.get(userAnswersKey).map(OptionalDataRequest(request, _)) } } diff --git a/app/models/SchemeDetails.scala b/app/models/SchemeDetails.scala index bb92618cf..aec8017da 100755 --- a/app/models/SchemeDetails.scala +++ b/app/models/SchemeDetails.scala @@ -21,6 +21,7 @@ import play.api.libs.json._ import utils.WithName case class SchemeDetails( + srn: String, schemeName: String, pstr: String, schemeStatus: SchemeStatus, @@ -83,6 +84,7 @@ object SchemeDetails { implicit val reads: Reads[SchemeDetails] = ( + (__ \ "srn").read[String] and (__ \ "schemeName").read[String] and (__ \ "pstr").read[String] and (__ \ "schemeStatus").read[SchemeStatus] and diff --git a/test-utils/generators/ModelGenerators.scala b/test-utils/generators/ModelGenerators.scala index 2c6c5884b..9bdbe8a78 100755 --- a/test-utils/generators/ModelGenerators.scala +++ b/test-utils/generators/ModelGenerators.scala @@ -74,13 +74,14 @@ trait ModelGenerators extends BasicGenerators { val schemeDetailsGen: Gen[SchemeDetails] = for { + srn <- nonEmptyString name <- nonEmptyString pstr <- nonEmptyString status <- schemeStatusGen schemeType <- nonEmptyString authorisingPsa <- Gen.option(nonEmptyString) establishers <- Gen.listOf(establisherGen) - } yield SchemeDetails(name, pstr, status, schemeType, authorisingPsa, establishers) + } yield SchemeDetails(srn, name, pstr, status, schemeType, authorisingPsa, establishers) val pensionSchemeUserGen: Gen[PensionSchemeUser] = Gen.oneOf(Administrator, Practitioner) diff --git a/test-utils/models/ModelSerializers.scala b/test-utils/models/ModelSerializers.scala index b0a6d0561..e8fe96c23 100755 --- a/test-utils/models/ModelSerializers.scala +++ b/test-utils/models/ModelSerializers.scala @@ -48,6 +48,7 @@ trait ModelSerializers { ) Json.obj( + "srn" -> details.srn, "schemeName" -> details.schemeName, "pstr" -> details.pstr, "schemeStatus" -> details.schemeStatus, diff --git a/test/controllers/ControllerBaseSpec.scala b/test/controllers/ControllerBaseSpec.scala index bcbf5bf60..bec1a4651 100755 --- a/test/controllers/ControllerBaseSpec.scala +++ b/test/controllers/ControllerBaseSpec.scala @@ -45,6 +45,7 @@ trait ControllerBaseSpec val userAnswers: UserAnswers = UserAnswers(userAnswersId, Json.obj("non" -> "empty")) val defaultSchemeDetails: SchemeDetails = SchemeDetails( + "testSRN", "testSchemeName", "testPSTR", SchemeStatus.Open, diff --git a/test/controllers/actions/DataCreationActionSpec.scala b/test/controllers/actions/DataCreationActionSpec.scala index dd89de6ac..8b18193e4 100644 --- a/test/controllers/actions/DataCreationActionSpec.scala +++ b/test/controllers/actions/DataCreationActionSpec.scala @@ -66,7 +66,7 @@ class DataCreationActionSpec extends BaseSpec { result.request mustBe request - result.userAnswers.id mustBe request.getUserId + result.userAnswers.id mustBe request.getUserId + request.schemeDetails.srn verify(sessionRepository, times(1)).set(any()) } } diff --git a/test/controllers/actions/DataRetrievalActionSpec.scala b/test/controllers/actions/DataRetrievalActionSpec.scala index 8c8b879d1..1908059b5 100755 --- a/test/controllers/actions/DataRetrievalActionSpec.scala +++ b/test/controllers/actions/DataRetrievalActionSpec.scala @@ -41,7 +41,7 @@ class DataRetrievalActionSpec extends BaseSpec { "there is no data in the cache" in { val sessionRepository = mock[SessionRepository] - when(sessionRepository.get(request.request.getUserId)) thenReturn Future(None) + when(sessionRepository.get(request.request.getUserId + request.schemeDetails.srn)) thenReturn Future(None) val action = new Harness(sessionRepository) val result = action.callTransform().futureValue @@ -54,7 +54,7 @@ class DataRetrievalActionSpec extends BaseSpec { "when there is data in the cache" in { val sessionRepository = mock[SessionRepository] - when(sessionRepository.get(request.request.getUserId)) thenReturn Future(Some(UserAnswers("id"))) + when(sessionRepository.get(request.request.getUserId + request.schemeDetails.srn)) thenReturn Future(Some(UserAnswers("id"))) val action = new Harness(sessionRepository) val result = action.callTransform().futureValue From c90e07135ff3c905996a03e1804abf1ddcba5fc7 Mon Sep 17 00:00:00 2001 From: westwater Date: Fri, 3 Feb 2023 09:57:10 +0000 Subject: [PATCH 2/2] Addressed comment --- app/controllers/actions/DataCreationAction.scala | 2 +- app/models/requests/DataRequest.scala | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/controllers/actions/DataCreationAction.scala b/app/controllers/actions/DataCreationAction.scala index c231f119d..d7c355aff 100644 --- a/app/controllers/actions/DataCreationAction.scala +++ b/app/controllers/actions/DataCreationAction.scala @@ -30,7 +30,7 @@ class DataCreationActionImpl @Inject()(sessionRepository: SessionRepository)(imp request.userAnswers match { case None => - val userAnswersKey = request.getUserId + request.request.schemeDetails.srn + val userAnswersKey = request.getUserId + request.schemeDetails.srn val userAnswers = UserAnswers(userAnswersKey) sessionRepository.set(userAnswers).map(_ => DataRequest(request.request, userAnswers)) case Some(data) => diff --git a/app/models/requests/DataRequest.scala b/app/models/requests/DataRequest.scala index 7a266c489..75a91f524 100755 --- a/app/models/requests/DataRequest.scala +++ b/app/models/requests/DataRequest.scala @@ -17,11 +17,13 @@ package models.requests import play.api.mvc.{Request, WrappedRequest} -import models.UserAnswers +import models.{SchemeDetails, UserAnswers} case class OptionalDataRequest[A] (request: AllowedAccessRequest[A], userAnswers: Option[UserAnswers]) extends WrappedRequest[A](request) { def getUserId: String = request.getUserId + + def schemeDetails: SchemeDetails = request.schemeDetails } case class DataRequest[A] (request: AllowedAccessRequest[A], userAnswers: UserAnswers) extends WrappedRequest[A](request) {