Skip to content

Commit

Permalink
[ETFE-4527] point to emcs-tfe for trader known facts (#242)
Browse files Browse the repository at this point in the history
  • Loading branch information
james-work-account authored Sep 18, 2024
1 parent 3996ce6 commit 049c3e9
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 113 deletions.
17 changes: 8 additions & 9 deletions app/config/AppConfig.scala
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class AppConfig @Inject()(servicesConfig: ServicesConfig, configuration: Configu
def emcsTfeMessagesUrl(ern: String): String = controllers.messages.routes.ViewAllMessagesController.onPageLoad(ern, MessagesSearchOptions()).url

def emcsTfeUndischargedMovementsUrl(ern: String): String =
routes.ViewAllMovementsController.onPageLoad(ern, MovementListSearchOptions( undischargedMovements = Some(Undischarged) )).url
routes.ViewAllMovementsController.onPageLoad(ern, MovementListSearchOptions(undischargedMovements = Some(Undischarged))).url

private lazy val contactHost = configuration.get[String]("contact-frontend.host")

Expand Down Expand Up @@ -112,24 +112,23 @@ class AppConfig @Inject()(servicesConfig: ServicesConfig, configuration: Configu

def businessTaxAccountUrl: String = configuration.get[String]("urls.businessTaxAccount")

private def traderKnownFactsReferenceDataService: String =
if (isEnabled(StubGetTraderKnownFacts)) {
servicesConfig.baseUrl("emcs-tfe-reference-data-stub")
} else {
servicesConfig.baseUrl("emcs-tfe-reference-data")
}

def traderKnownFactsReferenceDataBaseUrl: String = s"$traderKnownFactsReferenceDataService/emcs-tfe-reference-data"
def traderKnownFactsBaseUrl: String =
servicesConfig.baseUrl("emcs-tfe") + "/emcs-tfe/trader-known-facts"

lazy val tradeTariffCommoditiesUrl: String = configuration.get[String]("urls.tradeTariffCommodities")

def getUrlForCommodityCode(code: String): String = s"$tradeTariffCommoditiesUrl/${code}00"

def messageStatisticsCacheTtl: Duration = Duration(configuration.get[String]("mongodb.messageStatistics.TTL"))

def messageStatisticsReplaceIndexes(): Boolean = configuration.get[Boolean]("mongodb.messageStatistics.replaceIndexes")

def messagesCacheTtl: Duration = Duration(configuration.get[String]("mongodb.messages.TTL"))

def messagesReplaceIndexes(): Boolean = configuration.get[Boolean]("mongodb.messages.replaceIndexes")

def prevalidateTraderUserAnswersCacheTtl: Duration = Duration(configuration.get[String]("mongodb.prevalidateTraderUserAnswers.TTL"))

def prevalidateTraderUserAnswersReplaceIndexes: Boolean = configuration.get[Boolean]("mongodb.prevalidateTraderUserAnswers.replaceIndexes")

def accountHomeBanner: Boolean = isEnabled(AccountHomeBanner)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,18 @@ import scala.concurrent.{ExecutionContext, Future}
class GetTraderKnownFactsConnector @Inject()(val http: HttpClientV2,
config: AppConfig) extends GetTraderKnownFactsHttpParser {

def baseUrl: String = config.traderKnownFactsReferenceDataBaseUrl
def baseUrl: String = config.traderKnownFactsBaseUrl

def getTraderKnownFacts(ern: String)
(implicit headerCarrier: HeaderCarrier,
executionContext: ExecutionContext): Future[Either[ErrorResponse, Option[TraderKnownFacts]]] =
get(baseUrl + "/oracle/trader-known-facts", ern)
get(baseUrl, ern)
.recover {
case JsResultException(errors) =>
logger.warn(s"[getTraderKnownFacts][$ern] Bad JSON response from emcs-tfe-reference-data: " + errors)
logger.warn(s"[getTraderKnownFacts][$ern] Bad JSON response from emcs-tfe: " + errors)
Left(JsonValidationError)
case error =>
logger.warn(s"[getTraderKnownFacts][$ern] Unexpected error from reference-data: ${error.getClass} ${error.getMessage}")
logger.warn(s"[getTraderKnownFacts][$ern] Unexpected error from emcs-tfe: ${error.getClass} ${error.getMessage}")
Left(UnexpectedDownstreamResponseError)
}
}
6 changes: 0 additions & 6 deletions app/featureswitch/core/config/FeatureSwitchingModule.scala
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import javax.inject.Singleton
class FeatureSwitchingModule extends Module with FeatureSwitchRegistry {

val switches: Seq[FeatureSwitch] = Seq(
StubGetTraderKnownFacts,
AccountHomeBanner,
TemplatesLink
)
Expand All @@ -38,11 +37,6 @@ class FeatureSwitchingModule extends Module with FeatureSwitchRegistry {
}
}

case object StubGetTraderKnownFacts extends FeatureSwitch {
override val configName: String = "features.stub-get-trader-known-facts"
override val displayName: String = "Use stub to get trader known facts"
}

case object AccountHomeBanner extends FeatureSwitch {
override val configName: String = "features.accountHomeBanner"
override val displayName: String = "Enables the account home page banner"
Expand Down
6 changes: 0 additions & 6 deletions conf/application.conf
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,6 @@ microservice {
host = localhost
port = 8312
}
emcs-tfe-reference-data-stub {
protocol = http
host = localhost
port = 8309
}
emcs-tfe-frontend {
protocol = http
host = localhost
Expand Down Expand Up @@ -118,7 +113,6 @@ timeout-dialog {
}

features {
stub-get-trader-known-facts: true
accountHomeBanner: false
templatesLink: true
}
Expand Down
80 changes: 12 additions & 68 deletions it/GetTraderKnownFactsIntegrationSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,78 +21,22 @@ class GetTraderKnownFactsIntegrationSpec

implicit private lazy val hc: HeaderCarrier = HeaderCarrier()

def url(ern: String) = s"/emcs-tfe-reference-data/oracle/trader-known-facts?exciseRegistrationId=$ern"
def stubUrl(ern: String) = s"/emcs-tfe-reference-data/oracle/trader-known-facts?exciseRegistrationId=$ern"

".getTraderKnownFacts" must {
"when the feature switch is disabled" when {

def app: Application =
new GuiceApplicationBuilder()
.configure("microservice.services.emcs-tfe-reference-data.port" -> wireMockServer.port)
.configure("features.stub-get-trader-known-facts" -> "false")
.build()

lazy val connector: GetTraderKnownFactsConnector = app.injector.instanceOf[GetTraderKnownFactsConnector]

"must return Right(Seq[TraderKnownFacts]) when the server responds OK" in {

wireMockServer.stubFor(
get(urlEqualTo(url(testErn)))
.willReturn(
aResponse()
.withStatus(OK)
.withBody(Json.stringify(Json.obj("traderName" -> "testTraderName"))))
)

connector.getTraderKnownFacts(testErn).futureValue mustBe Right(Some(testMinTraderKnownFacts))
}

"must return Right(None) when the server responds NO_CONTENT" in {

wireMockServer.stubFor(
get(urlEqualTo(url(testErn)))
.willReturn(aResponse().withStatus(NO_CONTENT))
)

connector.getTraderKnownFacts(testErn).futureValue mustBe Right(None)
}

"must fail when the server responds with any other status" in {

wireMockServer.stubFor(
get(urlEqualTo(url(testErn)))
.willReturn(aResponse().withStatus(INTERNAL_SERVER_ERROR))
)

connector.getTraderKnownFacts(testErn).futureValue mustBe Left(UnexpectedDownstreamResponseError)
}

"must fail when the connection fails" in {

wireMockServer.stubFor(
get(urlEqualTo(url(testErn)))
.willReturn(aResponse().withFault(Fault.RANDOM_DATA_THEN_CLOSE))
)

connector.getTraderKnownFacts(testErn).futureValue mustBe Left(UnexpectedDownstreamResponseError)
}
}
}

"when the feature switch is enabled" must {
def emcsTfeUrl(ern: String) = s"/emcs-tfe/trader-known-facts?exciseRegistrationId=$ern"

".getTraderKnownFacts" must {
def app: Application =
new GuiceApplicationBuilder()
.configure("microservice.services.emcs-tfe-reference-data-stub.port" -> wireMockServer.port)
.configure("features.stub-get-trader-known-facts" -> "true")
.configure("microservice.services.emcs-tfe.port" -> wireMockServer.port)
.build()

lazy val connector: GetTraderKnownFactsConnector = app.injector.instanceOf[GetTraderKnownFactsConnector]

"must return true when the server responds OK" in {
"return Right(Seq[TraderKnownFacts]) when the server responds OK" in {

wireMockServer.stubFor(
get(urlEqualTo(url(testErn)))
get(urlEqualTo(emcsTfeUrl(testErn)))
.willReturn(
aResponse()
.withStatus(OK)
Expand All @@ -102,30 +46,30 @@ class GetTraderKnownFactsIntegrationSpec
connector.getTraderKnownFacts(testErn).futureValue mustBe Right(Some(testMinTraderKnownFacts))
}

"must return false when the server responds NO_CONTENT" in {
"return Right(None) when the server responds NO_CONTENT" in {

wireMockServer.stubFor(
get(urlEqualTo(url(testErn)))
get(urlEqualTo(emcsTfeUrl(testErn)))
.willReturn(aResponse().withStatus(NO_CONTENT))
)

connector.getTraderKnownFacts(testErn).futureValue mustBe Right(None)
}

"must fail when the server responds with any other status" in {
"fail when the server responds with any other status" in {

wireMockServer.stubFor(
get(urlEqualTo(url(testErn)))
get(urlEqualTo(emcsTfeUrl(testErn)))
.willReturn(aResponse().withStatus(INTERNAL_SERVER_ERROR))
)

connector.getTraderKnownFacts(testErn).futureValue mustBe Left(UnexpectedDownstreamResponseError)
}

"must fail when the connection fails" in {
"fail when the connection fails" in {

wireMockServer.stubFor(
get(urlEqualTo(url(testErn)))
get(urlEqualTo(emcsTfeUrl(testErn)))
.willReturn(aResponse().withFault(Fault.RANDOM_DATA_THEN_CLOSE))
)

Expand Down
21 changes: 4 additions & 17 deletions test/config/AppConfigSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package config

import base.SpecBase
import featureswitch.core.config.{FeatureSwitching, StubGetTraderKnownFacts}
import featureswitch.core.config.FeatureSwitching
import fixtures.BaseFixtures

class AppConfigSpec
Expand Down Expand Up @@ -48,22 +48,9 @@ class AppConfigSpec
}
}

".traderKnownFactsReferenceDataBaseUrl" when {

"StubGetTraderKnownFacts is enabled" must {

"return to the legacy URL" in {
enable(StubGetTraderKnownFacts)
config.traderKnownFactsReferenceDataBaseUrl mustBe s"http://localhost:8309/emcs-tfe-reference-data"
}
}

"StubGetTraderKnownFacts is disabled" must {

"return to the new URL" in {
disable(StubGetTraderKnownFacts)
config.traderKnownFactsReferenceDataBaseUrl mustBe s"http://localhost:8312/emcs-tfe-reference-data"
}
".traderKnownFactsBaseUrl" must {
"return to the correct URL" in {
config.traderKnownFactsBaseUrl mustBe s"http://localhost:8311/emcs-tfe/trader-known-facts"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class GetTraderKnownFactsConnectorSpec extends SpecBase with BaseFixtures with S
"downstream call is successful" in {
MockedAppConfig.traderKnownFactsReferenceDataBaseUrl.returns(baseUrl)

MockHttpClient.get(url"${baseUrl}/oracle/trader-known-facts?exciseRegistrationId=$testErn")
MockHttpClient.get(url"$baseUrl?exciseRegistrationId=$testErn")
.returns(Future.successful(Right(Some(testMinTraderKnownFacts))))

connector.getTraderKnownFacts(testErn).futureValue mustBe Right(Some(testMinTraderKnownFacts))
Expand All @@ -49,7 +49,7 @@ class GetTraderKnownFactsConnectorSpec extends SpecBase with BaseFixtures with S
"downstream call fails" in {
MockedAppConfig.traderKnownFactsReferenceDataBaseUrl.returns(baseUrl)

MockHttpClient.get(url"${baseUrl}/oracle/trader-known-facts?exciseRegistrationId=$testErn")
MockHttpClient.get(url"$baseUrl?exciseRegistrationId=$testErn")
.returns(Future.successful(Left(UnexpectedDownstreamResponseError)))

connector.getTraderKnownFacts(testErn).futureValue mustBe Left(UnexpectedDownstreamResponseError)
Expand Down
2 changes: 1 addition & 1 deletion test/mocks/config/MockAppConfig.scala
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ trait MockAppConfig extends MockFactory {

object MockedAppConfig {
def emcsTfeBaseUrl: CallHandler[String] = (() => mockAppConfig.emcsTfeBaseUrl).expects()
def traderKnownFactsReferenceDataBaseUrl: CallHandler[String] = (() => mockAppConfig.traderKnownFactsReferenceDataBaseUrl).expects()
def traderKnownFactsReferenceDataBaseUrl: CallHandler[String] = (() => mockAppConfig.traderKnownFactsBaseUrl).expects()
}

}

0 comments on commit 049c3e9

Please sign in to comment.