Skip to content

Commit

Permalink
Merge pull request #56 from hmrc/DLS-3256
Browse files Browse the repository at this point in the history
  • Loading branch information
LGoldfinch2 authored Dec 11, 2020
2 parents 824ddcd + e803f8b commit 2a6807f
Show file tree
Hide file tree
Showing 9 changed files with 38 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import uk.gov.hmrc.whitelist.AkamaiWhitelistFilter

import scala.concurrent.Future

class WhitelistFilter @Inject()(configuration: Configuration, val mat: Materializer) extends AkamaiWhitelistFilter with Logging {
class AllowlistFilter @Inject()(configuration: Configuration, val mat: Materializer) extends AkamaiWhitelistFilter with Logging {

override def whitelist: Seq[String] =
configuration.underlying.get[List[String]]("http-header-ip-whitelist").value
Expand Down
10 changes: 5 additions & 5 deletions app/uk/gov/hmrc/helptosavetestadminfrontend/config/Filters.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,21 @@ import configs.syntax._
import play.api.Configuration
import play.api.http.HttpFilters
import play.api.mvc.EssentialFilter
import uk.gov.hmrc.play.bootstrap.filters.FrontendFilters
import uk.gov.hmrc.play.bootstrap.frontend.filters.FrontendFilters

@Singleton
class Filters @Inject()(
configuration: Configuration,
whitelistFilter: WhitelistFilter,
frontendFilters: FrontendFilters
configuration: Configuration,
allowlistFilter: AllowlistFilter,
frontendFilters: FrontendFilters
) extends HttpFilters {

val whiteListFilterEnabled: Boolean =
configuration.underlying.get[List[String]]("http-header-ip-whitelist").value.nonEmpty

override val filters: Seq[EssentialFilter] =
if (whiteListFilterEnabled) {
frontendFilters.filters :+ whitelistFilter
frontendFilters.filters :+ allowlistFilter
} else {
frontendFilters.filters
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import org.joda.time.DateTime
import play.api.http.HeaderNames
import play.api.libs.json._
import play.api.mvc.Session
import uk.gov.hmrc.auth.core.retrieve.v2.Retrievals
import uk.gov.hmrc.helptosavetestadminfrontend.config.AppConfig
import uk.gov.hmrc.helptosavetestadminfrontend.connectors.AuthConnector.JsObjectOps
import uk.gov.hmrc.helptosavetestadminfrontend.http.HttpClient.HttpClientOps
Expand All @@ -49,15 +50,12 @@ class AuthConnector @Inject()(http: HttpClient, appConfig: AppConfig) extends Lo
response.header(HeaderNames.LOCATION),
(response.json \ "gatewayToken").asOpt[String])
match {
case (Some(token), Some(sessionUri), Some(receivedGatewayToken)) =>
case (Some(token), Some(_), Some(_)) =>

val session = Session(Map(
SessionKeys.sessionId -> SessionId(s"session-${UUID.randomUUID}").value,
SessionKeys.authProvider -> "GGW",
SessionKeys.userId -> sessionUri,
SessionKeys.authToken -> token,
SessionKeys.lastRequestTimestamp -> DateTime.now.getMillis.toString,
SessionKeys.token -> receivedGatewayToken,
SessionKeys.affinityGroup -> "Individual",
SessionKeys.name -> credId
))
Expand Down
20 changes: 11 additions & 9 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,28 @@ dependencyOverrides += "com.typesafe.akka" %% "akka-http-core" % akkaHttpVersion

val dependencies = Seq(
ws,
"uk.gov.hmrc" %% "bootstrap-frontend-play-26" % "2.24.0",
"uk.gov.hmrc" %% "govuk-template" % "5.56.0-play-26",
"uk.gov.hmrc" %% "play-ui" % "8.11.0-play-26",
"uk.gov.hmrc" %% "play-health" % "3.14.0-play-26",
"uk.gov.hmrc" %% "bootstrap-frontend-play-26" % "3.0.0",
"uk.gov.hmrc" %% "govuk-template" % "5.59.0-play-26",
"uk.gov.hmrc" %% "play-ui" % "8.15.0-play-26",
"uk.gov.hmrc" %% "play-health" % "3.15.0-play-26",
"uk.gov.hmrc" %% "simple-reactivemongo" % "7.30.0-play-26",
"uk.gov.hmrc" %% "play-whitelist-filter" % "3.4.0-play-26",
"uk.gov.hmrc" %% "totp-generator" % "0.21.0",
"com.github.kxbmap" %% "configs" % "0.4.4",
"org.typelevel" %% "cats-core" % "2.1.1",
"org.typelevel" %% "cats-core" % "2.2.0",
"org.jsoup" % "jsoup" % "1.13.1",
"org.mongodb.scala" %% "mongo-scala-driver" % "2.9.0"
"org.mongodb.scala" %% "mongo-scala-driver" % "4.1.0"
)

def testDependencies(scope: String = "test") = Seq(
"uk.gov.hmrc" %% "bootstrap-play-26" % "1.3.0" % scope classifier "tests",
"uk.gov.hmrc" %% "bootstrap-test-play-26" % "3.0.0" % scope,
"uk.gov.hmrc" %% "service-integration-test" % "0.12.0-play-26" % scope,
"uk.gov.hmrc" %% "domain" % "5.9.0-play-26" % scope,
"uk.gov.hmrc" %% "domain" % "5.10.0-play-26" % scope,
"uk.gov.hmrc" %% "stub-data-generator" % "0.5.3" % scope,
"uk.gov.hmrc" %% "reactivemongo-test" % "4.21.0-play-26" % scope,
"org.scalatest" %% "scalatest" % "3.0.8" % scope,
"org.scalatest" %% "scalatest" % "3.2.0" % scope,
"org.scalatestplus" %% "scalatestplus-scalacheck" % "3.1.0.0-RC2" % scope,
"com.vladsch.flexmark" % "flexmark-all" % "0.35.10" % scope,
"com.typesafe.play" %% "play-test" % PlayVersion.current % scope,
"org.scalamock" %% "scalamock-scalatest-support" % "3.6.0" % scope
)
Expand Down
2 changes: 1 addition & 1 deletion conf/application.conf
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ play.modules.enabled += "uk.gov.hmrc.play.bootstrap.graphite.GraphiteMetricsModu
play.modules.enabled += "uk.gov.hmrc.play.bootstrap.HttpClientModule"

# Provides an implementation and configures all filters required by a Platform frontend microservice.
play.modules.enabled += "uk.gov.hmrc.play.bootstrap.FrontendModule"
play.modules.enabled += "uk.gov.hmrc.play.bootstrap.frontend.FrontendModule"
play.http.filters = "uk.gov.hmrc.helptosavetestadminfrontend.config.Filters"

# Custom error handler
Expand Down
6 changes: 3 additions & 3 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ resolvers += "Typesafe Releases" at "https://repo.typesafe.com/typesafe/releases

resolvers += Resolver.url("scoverage-bintray", url("https://dl.bintray.com/sksamuel/sbt-plugins/"))(Resolver.ivyStylePatterns)

addSbtPlugin("uk.gov.hmrc" % "sbt-auto-build" % "2.9.0")
addSbtPlugin("uk.gov.hmrc" % "sbt-auto-build" % "2.10.0")

addSbtPlugin("uk.gov.hmrc" % "sbt-git-versioning" % "2.1.0")

addSbtPlugin("uk.gov.hmrc" % "sbt-artifactory" % "1.5.0")
addSbtPlugin("uk.gov.hmrc" % "sbt-artifactory" % "1.6.0")

addSbtPlugin("uk.gov.hmrc" % "sbt-distributables" % "2.0.0")

addSbtPlugin("uk.gov.hmrc" % "sbt-bobby" % "1.0.0")
addSbtPlugin("uk.gov.hmrc" % "sbt-bobby" % "3.2.0")

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.23")

Expand Down
21 changes: 10 additions & 11 deletions test/config/FiltersSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,11 @@ import play.api.Configuration
import play.api.mvc.EssentialFilter
import play.filters.csrf.CSRFFilter
import play.filters.headers.SecurityHeadersFilter
import uk.gov.hmrc.helptosavetestadminfrontend.config.{Filters, WhitelistFilter}
import uk.gov.hmrc.helptosavetestadminfrontend.config.{AllowlistFilter, Filters}
import uk.gov.hmrc.play.bootstrap.frontend.filters.crypto.SessionCookieCryptoFilter
import uk.gov.hmrc.play.bootstrap.frontend.filters.deviceid.DeviceIdFilter
import uk.gov.hmrc.play.bootstrap.frontend.filters.{FrontendAuditFilter, HeadersFilter, SessionIdFilter, SessionTimeoutFilter}
import uk.gov.hmrc.play.bootstrap.frontend.filters.{FrontendAuditFilter, FrontendFilters, HeadersFilter, SessionIdFilter, SessionTimeoutFilter}
import uk.gov.hmrc.play.bootstrap.filters._

class FiltersSpec extends TestSupport {

// can't use scalamock for CacheControlFilter since a logging statement during class
Expand All @@ -37,7 +36,7 @@ class FiltersSpec extends TestSupport {
val mockCacheControllerFilter = new CacheControlFilter(CacheControlConfig(), mock[Materializer])

val mockMDCFilter = new MDCFilter(fakeApplication.materializer, fakeApplication.configuration, "")
val mockWhiteListFilter = mock[uk.gov.hmrc.play.bootstrap.frontend.filters.WhitelistFilter]
val mockAllowlistFilter = mock[uk.gov.hmrc.play.bootstrap.frontend.filters.AllowlistFilter]

val mockSessionIdFilter =mock[SessionIdFilter]

Expand All @@ -54,29 +53,29 @@ class FiltersSpec extends TestSupport {
stub[SessionTimeoutFilter],
mockCacheControllerFilter,
mockMDCFilter,
mockWhiteListFilter,
mockAllowlistFilter,
mockSessionIdFilter
) {
lazy val enableSecurityHeaderFilter: Boolean = false
override val filters: Seq[EssentialFilter] = Seq()
}

val frontendFilters = new TestableFrontendFilters
val whiteListFilter = mock[WhitelistFilter]
val allowlistFilter = mock[AllowlistFilter]

"Filters" must {

"include the whitelist filter if the whitelist from config is non empty" in {
"include the allowlist filter if the allowlist from config is non empty" in {
val config = Configuration("http-header-ip-whitelist" List("1.2.3"))

val filters = new Filters(config, whiteListFilter, frontendFilters)
filters.filters shouldBe Seq(whiteListFilter)
val filters = new Filters(config, allowlistFilter, frontendFilters)
filters.filters shouldBe Seq(allowlistFilter)
}

"not include the whitelist filter if the whitelist from config is empty" in {
"not include the allowlist filter if the allowlist from config is empty" in {
val config = Configuration("http-header-ip-whitelist" List())

val filters = new Filters(config, whiteListFilter, frontendFilters)
val filters = new Filters(config, allowlistFilter, frontendFilters)
filters.filters shouldBe Seq()
}
}
Expand Down
3 changes: 1 addition & 2 deletions test/controllers/TestSupport.scala
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import play.filters.csrf.CSRFAddToken
import uk.gov.hmrc.helptosavetestadminfrontend.config.{AppConfig, ErrorHandler}
import uk.gov.hmrc.http.HeaderCarrier
import uk.gov.hmrc.http.logging.SessionId
import uk.gov.hmrc.play.bootstrap.tools.Stubs.stubMessagesControllerComponents

import scala.concurrent.ExecutionContext

Expand Down Expand Up @@ -69,7 +68,7 @@ trait TestSupport extends UnitSpec with MockFactory with BeforeAndAfterAll with
super.afterAll()
}

val testMCC: MessagesControllerComponents = stubMessagesControllerComponents()
val testMCC: MessagesControllerComponents = fakeApplication.injector.instanceOf[MessagesControllerComponents]

implicit val messagesApi: MessagesApi = fakeApplication.injector.instanceOf[MessagesApi]

Expand Down
6 changes: 4 additions & 2 deletions test/controllers/UnitSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,16 @@ import java.nio.charset.Charset

import akka.stream.Materializer
import akka.util.ByteString
import org.scalatest.{Matchers, OptionValues, WordSpecLike}
import org.scalatest.OptionValues
import org.scalatest.matchers.should.Matchers
import org.scalatest.wordspec.AnyWordSpecLike
import play.api.libs.json.{JsValue, Json}
import play.api.mvc.Result

import scala.concurrent.ExecutionContext.Implicits.global
import scala.language.{implicitConversions, postfixOps}

trait UnitSpec extends WordSpecLike with Matchers with OptionValues {
trait UnitSpec extends AnyWordSpecLike with Matchers with OptionValues {

import scala.concurrent.duration._
import scala.concurrent.{Await, Future}
Expand Down

0 comments on commit 2a6807f

Please sign in to comment.