Skip to content

Commit 9d400a5

Browse files
Merge pull request #123 from hmrc/DL-18194
DL-18194, makes the HIP Switch sensitive to values in application.conf
2 parents 85499c0 + e248849 commit 9d400a5

17 files changed

+47
-67
lines changed

app/controllers/test/FeatureSwitchControllerImpl.scala

Lines changed: 0 additions & 49 deletions
This file was deleted.

app/services/DeRegistrationService.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@ import play.api.Logging
2121
import play.api.http.Status
2222
import play.api.libs.json._
2323
import uk.gov.hmrc.http.{HeaderCarrier, HttpResponse}
24+
import uk.gov.hmrc.play.bootstrap.config.ServicesConfig
2425
import utils.{AWRSFeatureSwitches, Utility}
2526

2627
import javax.inject.Inject
2728
import scala.concurrent.{ExecutionContext, Future}
2829

2930
class DeRegistrationService @Inject()(etmpConnector: EtmpConnector,
3031
hipConnector: HipConnector)
31-
(implicit ec: ExecutionContext)
32+
(implicit ec: ExecutionContext, config: ServicesConfig)
3233
extends Logging {
3334

3435
private val acknowledgementReference: String = "acknowledgementReference"

app/services/EtmpRegimeService.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import play.api.http.Status._
2525
import uk.gov.hmrc.auth.core.retrieve.v2.Retrievals
2626
import uk.gov.hmrc.auth.core.{AffinityGroup, AuthConnector, AuthorisedFunctions, User}
2727
import uk.gov.hmrc.http.{HeaderCarrier, HttpResponse}
28+
import uk.gov.hmrc.play.bootstrap.config.ServicesConfig
2829
import utils.{AWRSFeatureSwitches, HipHelpers, Utility}
2930

3031
import scala.concurrent.{ExecutionContext, Future}
@@ -33,7 +34,8 @@ import scala.util.{Failure, Success, Try}
3334
class EtmpRegimeService @Inject()(etmpConnector: EtmpConnector,
3435
hipConnector: HipConnector,
3536
val enrolmentStoreConnector: EnrolmentStoreConnector,
36-
val authConnector: AuthConnector) extends AuthorisedFunctions
37+
val authConnector: AuthConnector)
38+
(implicit config: ServicesConfig) extends AuthorisedFunctions
3739
with NonSelfHealStatus
3840
with Logging {
3941

app/services/EtmpStatusService.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ import play.api.libs.json.Json
2424
import javax.inject.Inject
2525
import scala.concurrent.{ExecutionContext, Future}
2626
import uk.gov.hmrc.http.{HeaderCarrier, HttpResponse}
27+
import uk.gov.hmrc.play.bootstrap.config.ServicesConfig
2728
import utils.{AWRSFeatureSwitches, Utility}
2829

29-
class EtmpStatusService @Inject()(etmpConnector: EtmpConnector, hipConnector: HipConnector) extends Logging {
30+
class EtmpStatusService @Inject()(etmpConnector: EtmpConnector, hipConnector: HipConnector)
31+
(implicit config: ServicesConfig) extends Logging {
3032

3133
def checkStatus(awrsRefNo: String)(implicit headerCarrier: HeaderCarrier, ec: ExecutionContext): Future[HttpResponse] =
3234
if (AWRSFeatureSwitches.hipSwitch().enabled) {

app/services/LookupService.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import connectors.{EtmpConnector, HipConnector}
2020
import play.api.http.Status
2121
import play.api.libs.json.Json
2222
import uk.gov.hmrc.http.{HeaderCarrier, HttpResponse}
23+
import uk.gov.hmrc.play.bootstrap.config.ServicesConfig
2324
import utils.Utility.logger
2425
import utils.{AWRSFeatureSwitches, Utility}
2526

@@ -28,7 +29,8 @@ import scala.concurrent.{ExecutionContext, Future}
2829

2930
class LookupService @Inject()(etmpConnector: EtmpConnector,
3031
hipConnector: HipConnector)
31-
(implicit ec: ExecutionContext) {
32+
(implicit ec: ExecutionContext,
33+
config: ServicesConfig) {
3234

3335
def lookupApplication(awrsRefNo: String)(implicit headerCarrier: HeaderCarrier): Future[HttpResponse] = {
3436

app/services/SubscriptionService.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import play.api.Logging
2323
import play.api.http.Status._
2424
import play.api.libs.json.{JsError, JsObject, JsResult, JsSuccess, JsValue, Json}
2525
import uk.gov.hmrc.http.{HeaderCarrier, HttpResponse}
26+
import uk.gov.hmrc.play.bootstrap.config.ServicesConfig
2627
import utils.{AWRSFeatureSwitches, SessionUtils, Utility}
2728

2829
import javax.inject.Inject
@@ -33,7 +34,7 @@ class SubscriptionService @Inject()(
3334
val enrolmentStoreConnector: EnrolmentStoreConnector,
3435
val etmpConnector: EtmpConnector,
3536
val hipConnector: HipConnector
36-
)(implicit ec: ExecutionContext) extends Logging {
37+
)(implicit ec: ExecutionContext, config: ServicesConfig) extends Logging {
3738

3839
val AWRS_SERVICE_NAME = "HMRC-AWRS-ORG"
3940
private val acknowledgmentReference: String = "acknowledgmentReference"

app/services/WithdrawalService.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,12 @@ import play.api.libs.json._
2727

2828
import scala.concurrent.{ExecutionContext, Future}
2929
import uk.gov.hmrc.http.{HeaderCarrier, HttpResponse}
30+
import uk.gov.hmrc.play.bootstrap.config.ServicesConfig
3031
import utils.{AWRSFeatureSwitches, Utility}
3132

3233
class WithdrawalService @Inject()(metrics: AwrsMetrics, etmpConnector: EtmpConnector, hipConnector: HipConnector)
33-
(implicit ec: ExecutionContext) extends Logging {
34+
(implicit ec: ExecutionContext,
35+
config: ServicesConfig) extends Logging {
3436

3537
def withdrawal(withdrawalData: JsValue, awrsRefNo: String)(implicit headerCarrier: HeaderCarrier): Future[HttpResponse] = {
3638
if (AWRSFeatureSwitches.hipSwitch().enabled) {

app/utils/FeatureSwitch.scala

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package utils
1818

19+
import uk.gov.hmrc.play.bootstrap.config.ServicesConfig
20+
1921
import java.time.format.DateTimeFormatter
2022
import java.time.{ZoneId, ZonedDateTime}
2123
import scala.util.matching.Regex
@@ -54,19 +56,18 @@ object FeatureSwitch {
5456
val dateFormat: DateTimeFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME
5557

5658

57-
private[utils] def getProperty(name: String): FeatureSwitch = {
59+
private[utils] def getProperty(name: String)(implicit config: ServicesConfig): FeatureSwitch = {
5860
val value = sys.props.get(systemPropertyName(name))
59-
6061
value match {
6162
case Some("true") => BooleanFeatureSwitch(name, enabled = true)
6263
case Some(DisabledIntervalExtractor(start, end)) => DisabledTimedFeatureSwitch(name, toDate(start), toDate(end), ZonedDateTime.now(ZoneId.of("UTC")))
6364
case Some(EnabledIntervalExtractor(start, end)) => EnabledTimedFeatureSwitch(name, toDate(start), toDate(end), ZonedDateTime.now(ZoneId.of("UTC")))
6465

65-
case _ => BooleanFeatureSwitch(name, enabled = false)
66+
case _ => BooleanFeatureSwitch(name, enabled = config.getBoolean(s"feature.$name"))
6667
}
6768
}
6869

69-
private[utils] def setProperty(name: String, value: String): FeatureSwitch = {
70+
private[utils] def setProperty(name: String, value: String)(implicit config: ServicesConfig): FeatureSwitch = {
7071
sys.props += ((systemPropertyName(name), value))
7172
getProperty(name)
7273
}
@@ -81,21 +82,21 @@ object FeatureSwitch {
8182

8283
private[utils] def systemPropertyName(name: String) = s"feature.$name"
8384

84-
def enable(fs: FeatureSwitch): FeatureSwitch = setProperty(fs.name, "true")
85-
def disable(fs: FeatureSwitch): FeatureSwitch = setProperty(fs.name, "false")
85+
def enable(fs: FeatureSwitch)(implicit config: ServicesConfig): FeatureSwitch = setProperty(fs.name, "true")
86+
def disable(fs: FeatureSwitch)(implicit config: ServicesConfig): FeatureSwitch = setProperty(fs.name, "false")
8687

87-
def apply(name: String, enabled: Boolean = false): FeatureSwitch = getProperty(name)
88+
def apply(name: String, enabled: Boolean = false)(implicit config: ServicesConfig): FeatureSwitch = getProperty(name)
8889
def unapply(fs: FeatureSwitch): Option[(String, Boolean)] = Some(fs.name -> fs.enabled)
8990
}
9091

9192
object AWRSFeatureSwitches extends AWRSFeatureSwitches
9293

9394
trait AWRSFeatureSwitches {
9495

95-
def regimeCheck(): FeatureSwitch = FeatureSwitch.getProperty("regimeCheck")
96-
def hipSwitch(): FeatureSwitch = FeatureSwitch.getProperty("hipSwitch")
96+
def regimeCheck()(implicit config: ServicesConfig): FeatureSwitch = FeatureSwitch.getProperty("regimeCheck")
97+
def hipSwitch()(implicit config: ServicesConfig): FeatureSwitch = FeatureSwitch.getProperty("hipSwitch")
9798

98-
def apply(name: String): Option[FeatureSwitch] = name match {
99+
def apply(name: String)(implicit config: ServicesConfig): Option[FeatureSwitch] = name match {
99100
case "regimeCheck" => Some(regimeCheck())
100101
case "hipSwitch" => Some(hipSwitch())
101102
case _ => None

it/test/controllers/EtmpCheckControllerSpec.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@ import play.api.http.Status.{NOT_FOUND, NO_CONTENT, OK}
2222
import play.api.libs.ws.WSResponse
2323
import uk.gov.hmrc.helpers.utils.Stubs
2424
import uk.gov.hmrc.helpers.{AuthHelpers, IntegrationSpec}
25+
import uk.gov.hmrc.play.bootstrap.config.ServicesConfig
2526
import utils.{AWRSFeatureSwitches, FeatureSwitch}
2627

2728
class EtmpCheckControllerSpec extends IntegrationSpec with AuthHelpers with Matchers with Stubs {
2829

2930
val controllerUrl: String = routes.EtmpCheckController.checkEtmp().url
31+
implicit val config: ServicesConfig = app.injector.instanceOf[ServicesConfig]
3032

3133
"checkEtmp()" should {
3234

it/test/controllers/SubscriptionControllerSpec.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import play.api.http.Status._
2323
import play.api.libs.ws.WSResponse
2424
import uk.gov.hmrc.helpers.utils.{IntegrationData, Stubs}
2525
import uk.gov.hmrc.helpers.{AuthHelpers, IntegrationSpec}
26+
import uk.gov.hmrc.play.bootstrap.config.ServicesConfig
2627
import utils.{AWRSFeatureSwitches, FeatureSwitch}
2728

2829
import scala.concurrent.duration.FiniteDuration
@@ -33,6 +34,8 @@ class SubscriptionControllerSpec extends IntegrationSpec with AuthHelpers with M
3334

3435
val controllerUrl = "/awrs/send-data"
3536

37+
implicit val config: ServicesConfig = app.injector.instanceOf[ServicesConfig]
38+
3639
"subscribe()" should {
3740
"return 200" when {
3841
"EMAC feature switch is true" when {

0 commit comments

Comments
 (0)