play.api.Application Scala Examples
The following examples show how to use play.api.Application.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: ServiceSpec.scala From play-soap with Apache License 2.0 | 5 votes |
package play.soap.sbtplugin.tester import java.net.ServerSocket import java.util.concurrent.atomic.AtomicBoolean import javax.xml.ws.Endpoint import javax.xml.ws.handler.soap._ import javax.xml.ws.handler.MessageContext import org.apache.cxf.jaxws.EndpointImpl import play.soap.testservice.client._ import scala.collection.JavaConverters._ import scala.concurrent.{Await, Future} import scala.concurrent.duration._ import scala.reflect.ClassTag import play.api.test._ import play.api.Application import play.api.inject.guice.GuiceApplicationBuilder abstract class ServiceSpec extends PlaySpecification { val servicePath: String def await[T](future: Future[T]): T = Await.result(future, 10.seconds) def withClient[T](block: Service => T): T = withApp { app => val client = app.injector.instanceOf[ServiceClient] val service = getServiceFromClient(client) block(service) } def withApp[T](block: Application => T): T = withService { port => implicit val app = new GuiceApplicationBuilder() .configure("play.soap.address" -> s"http://localhost:$port/$servicePath") .build Helpers.running(app) { block(app) } } def withService[T](block: Int => T): T = { val port = findAvailablePort() val impl = createServiceImpl() val endpoint = Endpoint.publish(s"http://localhost:$port/$servicePath", impl) try { block(port) } finally { endpoint.stop() // Need to shutdown whole engine. Note, Jetty's shutdown doesn't seem to happen synchronously, have to wait // a few seconds for the port to be released. This is why we use a different port each time. endpoint.asInstanceOf[EndpointImpl].getBus.shutdown(true) } } def findAvailablePort() = { val socket = new ServerSocket(0) try { socket.getLocalPort } finally { socket.close() } } }
Example 2
Source File: SecurityFilterSpec.scala From play-zhewbacca with MIT License | 5 votes |
package org.zalando.zhewbacca import javax.inject.{Inject, Provider} import play.api.inject._ import play.api.inject.guice.GuiceApplicationBuilder import play.api.mvc.Results._ import play.api.mvc._ import play.api.routing.Router import play.api.test.{FakeRequest, PlaySpecification} import play.api.{Application, Mode} class SecurityFilterSpec extends PlaySpecification with BodyParsers { val testTokenInfo = TokenInfo("", Scope.Empty, "token type", "user uid", realm = "/employees") def appWithRoutes: Application = new GuiceApplicationBuilder() .in(Mode.Test) .bindings(bind[AuthProvider] to new AlwaysPassAuthProvider(testTokenInfo)) .overrides( bind[Router].toProvider[SecurityFilterTestRouterProvider]) .configure( "play.http.filters" -> "org.zalando.zhewbacca.TestingFilters", "authorisation.rules.file" -> "security_filter.conf") .build "SecurityFilter" should { "allow protected inner action to access token info" in { val response = route(appWithRoutes, FakeRequest(GET, "/")).get status(response) must beEqualTo(OK) contentAsString(response) must beEqualTo(testTokenInfo.tokenType) } "deny an access when there is no security rule for the reguest is given" in { val response = route(appWithRoutes, FakeRequest(GET, "/unprotected-by-mistake")).get status(response) must beEqualTo(FORBIDDEN) } } } class SecurityFilterTestRouterProvider @Inject() (components: ControllerComponents) extends Provider[Router] { import components.{actionBuilder => Action} import play.api.routing.sird._ override def get(): Router = Router.from { // test action returning action type. Shows the usage and makes it possible to test basic behaviour // security rules described in 'security_filter.conf' file case GET(p"/") => Action { request => import TokenInfoConverter._ Ok(request.tokenInfo.tokenType) } case GET(p"/unprotected") => Action { Ok } } }
Example 3
Source File: KafkaManagerLoader.scala From CMAK with Apache License 2.0 | 5 votes |
package loader import controllers.{AssetsComponents, BasicAuthenticationFilter, KafkaManagerContext} import features.ApplicationFeatures import models.navigation.Menus import play.api.{Application, ApplicationLoader, BuiltInComponentsFromContext, LoggerConfigurator} import play.api.ApplicationLoader.Context import play.api.i18n.I18nComponents import play.api.mvc.Filter import play.api.routing.Router import router.Routes import scala.concurrent.ExecutionContext class KafkaManagerLoader extends ApplicationLoader { def load(context: Context): Application = { LoggerConfigurator(context.environment.classLoader).foreach { _.configure(context.environment, context.initialConfiguration, Map.empty) } new ApplicationComponents(context).application } } class ApplicationComponents(context: Context) extends BuiltInComponentsFromContext(context) with I18nComponents with AssetsComponents { implicit val applicationFeatures: ApplicationFeatures = ApplicationFeatures.getApplicationFeatures(context.initialConfiguration.underlying) implicit val menus: Menus = new Menus implicit val ec: ExecutionContext = controllerComponents.executionContext val kafkaManagerContext = new KafkaManagerContext(applicationLifecycle, context.initialConfiguration) private[this] val applicationC = new controllers.Application(controllerComponents, kafkaManagerContext) private[this] lazy val clusterC = new controllers.Cluster(controllerComponents, kafkaManagerContext) private[this] lazy val topicC = new controllers.Topic(controllerComponents, kafkaManagerContext) private[this] lazy val logKafkaC = new controllers.Logkafka(controllerComponents, kafkaManagerContext) private[this] lazy val consumerC = new controllers.Consumer(controllerComponents, kafkaManagerContext) private[this] lazy val preferredReplicaElectionC= new controllers.PreferredReplicaElection(controllerComponents, kafkaManagerContext) private[this] lazy val reassignPartitionsC = new controllers.ReassignPartitions(controllerComponents, kafkaManagerContext) lazy val kafkaStateCheckC = new controllers.api.KafkaStateCheck(controllerComponents, kafkaManagerContext) lazy val apiHealthC = new controllers.ApiHealth(controllerComponents) override lazy val httpFilters: Seq[Filter] = Seq(BasicAuthenticationFilter(context.initialConfiguration)) override val router: Router = new Routes( httpErrorHandler, applicationC, clusterC, topicC, logKafkaC, consumerC, preferredReplicaElectionC, reassignPartitionsC, kafkaStateCheckC, assets, apiHealthC ).withPrefix(context.initialConfiguration.getOptional[String]("play.http.context").orNull) }
Example 4
Source File: KafkaManagerLoaderForTests.scala From CMAK with Apache License 2.0 | 5 votes |
package loader import controllers.{ApiHealth, KafkaManagerContext} import controllers.api.KafkaStateCheck import features.ApplicationFeatures import models.navigation.Menus import play.api.ApplicationLoader.Context import play.api.{Application, ApplicationLoader, LoggerConfigurator} import scala.concurrent.ExecutionContext class KafkaManagerLoaderForTests extends ApplicationLoader { var components: ApplicationComponents = null def applicationFeatures: ApplicationFeatures = components.applicationFeatures def menus: Menus = components.menus def executionContext: ExecutionContext = components.executionContext def kafkaManagerContext: KafkaManagerContext = components.kafkaManagerContext def kafkaStateCheck: KafkaStateCheck = components.kafkaStateCheckC def apiHealth: ApiHealth= components.apiHealthC def load(context: Context): Application = { LoggerConfigurator(context.environment.classLoader).foreach { _.configure(context.environment, context.initialConfiguration, Map.empty) } components = new ApplicationComponents(context) components.application } }
Example 5
Source File: RemoteSpecs.scala From play-json-schema-validator with Apache License 2.0 | 5 votes |
package com.eclipsesource.schema import com.eclipsesource.schema.drafts.Version4 import com.eclipsesource.schema.test.{Assets, JsonSpec} import org.specs2.mutable.Specification import org.specs2.specification.AfterAll import org.specs2.specification.core.Fragments import org.specs2.specification.dsl.Online import play.api.Application import play.api.inject.guice.GuiceApplicationBuilder import play.api.mvc.DefaultActionBuilder import play.api.test.TestServer class RemoteSpecs extends Specification with JsonSpec with Online with AfterAll { import Version4._ implicit val validator: SchemaValidator = { SchemaValidator(Some(Version4)).addSchema( "http://localhost:1234/scope_foo.json", JsonSource.schemaFromString( """{ | "definitions": { | "bar": { "type": "string" } | } |}""".stripMargin ).get ) } def createApp: Application = new GuiceApplicationBuilder() .appRoutes(app => { val Action = app.injector.instanceOf[DefaultActionBuilder] Assets.routes(Action)(getClass, "remotes/") }) .build() lazy val server = TestServer(port = 1234, createApp) def afterAll: Unit = { server.stop Thread.sleep(1000) } def validateAjv(testName: String): Fragments = validate(testName, "ajv_tests") sequential "Validation from remote resources is possible" >> { { server.start Thread.sleep(1000) } must not(throwAn[Exception]) continueWith { validateMultiple( "ajv_tests" -> Seq( "5_adding_dependency_after", "5_recursive_references", "12_restoring_root_after_resolve", "13_root_ref_in_ref_in_remote_ref", "14_ref_in_remote_ref_with_id", "62_resolution_scope_change" ), "draft4" -> Seq("refRemote") ) } } validateAjv("1_ids_in_refs") }
Example 6
Source File: Loader.scala From lagom with Apache License 2.0 | 5 votes |
import play.api.Application import play.api.ApplicationLoader import play.api.BuiltInComponentsFromContext import play.api.libs.ws.ahc.AhcWSComponents import com.softwaremill.macwire._ import router.Routes import com.lightbend.lagom.scaladsl.api._ import com.lightbend.lagom.scaladsl.client.LagomServiceClientComponents import com.lightbend.lagom.scaladsl.devmode.LagomDevModeComponents import scala.collection.immutable class Loader extends ApplicationLoader { def load(context: ApplicationLoader.Context): Application = { new BuiltInComponentsFromContext(context) with LagomServiceClientComponents with AhcWSComponents with LagomDevModeComponents with controllers.AssetsComponents { override lazy val serviceInfo = ServiceInfo( "p", Map( "p" -> immutable.Seq( ServiceAcl.forPathRegex("/p"), ServiceAcl.forPathRegex("/assets/.*") ) ) ) override lazy val router = { val prefix = "/" wire[Routes] } override lazy val httpFilters = Nil lazy val applicationController = wire[controllers.Application] }.application } }
Example 7
Source File: ServiceSupport.scala From lagom with Apache License 2.0 | 5 votes |
package com.lightbend.lagom.it import java.util.Collections import java.util.function.{ Function => JFunction } import akka.stream.Materializer import akka.stream.scaladsl.Source import org.scalatest.Inside import play.api.Application import play.api.Configuration import play.api.Environment import play.inject.guice.GuiceApplicationBuilder import scala.concurrent.Await import scala.concurrent.duration._ import scala.reflect.ClassTag import akka.japi.function.Procedure import com.google.inject.Binder import com.google.inject.Module import com.google.inject.TypeLiteral import com.lightbend.lagom.javadsl.testkit.ServiceTest import com.lightbend.lagom.javadsl.testkit.ServiceTest.TestServer import play.api.routing.Router import java.util import com.lightbend.lagom.internal.testkit.EmptyAdditionalRoutersModule import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpecLike sealed trait HttpBackend { final val provider: String = s"play.core.server.${codeName}ServerProvider" val codeName: String } case object AkkaHttp extends HttpBackend { val codeName = "AkkaHttp" } case object Netty extends HttpBackend { val codeName = "Netty" } trait ServiceSupport extends AnyWordSpecLike with Matchers with Inside { def withServer( configureBuilder: GuiceApplicationBuilder => GuiceApplicationBuilder )(block: Application => Unit)(implicit httpBackend: HttpBackend): Unit = { val jConfigureBuilder = new JFunction[GuiceApplicationBuilder, GuiceApplicationBuilder] { override def apply(b: GuiceApplicationBuilder): GuiceApplicationBuilder = { configureBuilder(b) .overrides(EmptyAdditionalRoutersModule) .configure("play.server.provider", httpBackend.provider) } } val jBlock = new Procedure[TestServer] { override def apply(server: TestServer): Unit = { block(server.app.asScala()) } } val setup = ServiceTest.defaultSetup.configureBuilder(jConfigureBuilder).withCluster(false) ServiceTest.withServer(setup, jBlock) } def withClient[T: ClassTag]( configureBuilder: GuiceApplicationBuilder => GuiceApplicationBuilder )(block: Application => T => Unit)(implicit httpBackend: HttpBackend): Unit = { withServer(configureBuilder) { application => val client = application.injector.instanceOf[T] block(application)(client) } } implicit def materializer(implicit app: Application): Materializer = app.materializer def consume[T](source: Source[T, _])(implicit mat: Materializer): List[T] = { Await.result(source.runFold(List.empty[T])((list, t) => t :: list), 10.seconds).reverse } }
Example 8
Source File: ReleaseTwoIntegrationSpec.scala From self-assessment-api with Apache License 2.0 | 5 votes |
package support import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpec import org.scalatestplus.play.guice.GuiceOneServerPerSuite import play.api.Application import play.api.http.{HeaderNames, MimeTypes, Status} import play.api.inject.guice.GuiceApplicationBuilder import support.functional.FunctionalSyntax import support.wiremock.WireMockSupport trait ReleaseTwoIntegrationSpec extends AnyWordSpec with GuiceOneServerPerSuite with WireMockSupport with Matchers with Status with HeaderNames with MimeTypes with FakeApplicationConfig with FunctionalSyntax { override implicit lazy val app: Application = new GuiceApplicationBuilder() .configure(fakeApplicationConfig + ("feature-switch.release-2.enabled" -> true)) .build() }
Example 9
Source File: IntegrationSpec.scala From self-assessment-api with Apache License 2.0 | 5 votes |
package support import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpec import org.scalatestplus.play.guice.GuiceOneServerPerSuite import play.api.Application import play.api.http.{HeaderNames, MimeTypes, Status} import play.api.inject.guice.GuiceApplicationBuilder import support.functional.FunctionalSyntax import support.wiremock.WireMockSupport trait IntegrationSpec extends AnyWordSpec with GuiceOneServerPerSuite with WireMockSupport with Matchers with Status with HeaderNames with MimeTypes with FakeApplicationConfig with FunctionalSyntax { override implicit lazy val app: Application = new GuiceApplicationBuilder() .configure(fakeApplicationConfig) .build() }
Example 10
Source File: BaseOneServerPerTest_WithBeforeAndAfterHooks.scala From scala-play-realworld-example-app with MIT License | 5 votes |
package commons_test.test_helpers import org.scalatest._ import org.scalatestplus.play.{FakeApplicationFactory, ServerProvider} import play.api.Application import play.api.test._ trait BaseOneServerPerTest_WithBeforeAndAfterHooks extends TestSuiteMixin with ServerProvider { this: TestSuite with FakeApplicationFactory => @volatile private var privateApp: Application = _ @volatile private var privateServer: RunningServer = _ implicit final def app: Application = { val a = privateApp if (a == null) { throw new IllegalStateException("Test isn't running yet so application is not available") } a } implicit final def runningServer: RunningServer = { val rs = privateServer if (rs == null) { throw new IllegalStateException("Test isn't running yet so the server endpoints are not available") } privateServer } abstract override def withFixture(test: NoArgTest): Outcome = { // Need to synchronize within a suite because we store current app/server in fields in the class // Could possibly pass app/server info in a ScalaTest object? // synchronized { // synchronization is disabled. Only sequential tests are supported. privateApp = newAppForTest(test) privateServer = newServerForTest(app, test) afterServerStarted() try super.withFixture(test) finally { try { beforeServerStopped() } catch { case e: Throwable => System.err.println(s"Test could not be cleaned up: $e") // continue to release resources } val rs = privateServer // Store before nulling fields privateApp = null privateServer = null // Stop server and release locks rs.stopServer.close() // } } } def newAppForTest(testData: TestData): Application = fakeApplication() protected def newServerForTest(app: Application, testData: TestData): RunningServer = DefaultTestServerFactory.start(app) def afterServerStarted(): Unit = () def beforeServerStopped(): Unit = () }
Example 11
Source File: CSRFSpec.scala From play-ui with Apache License 2.0 | 5 votes |
package uk.gov.hmrc.play.views.helpers import org.scalatest.WordSpec import org.scalatestplus.play.OneAppPerTest import play.api.Application import play.api.mvc.RequestHeader import play.api.test.FakeRequest import play.filters.csrf.CSRF.Token import play.filters.csrf.{CSRFConfigProvider, CSRFFilter} trait CSRFSpec extends WordSpec with OneAppPerTest { implicit class RichFakeRequest[T](fakeRequest: FakeRequest[T])(implicit app: Application) { def withCSRFToken: RequestHeader = { val csrfConfig = app.injector.instanceOf[CSRFConfigProvider].get val csrfFilter = app.injector.instanceOf[CSRFFilter] val token = csrfFilter.tokenProvider.generateToken fakeRequest .copyFakeRequest( tags = fakeRequest.tags ++ Map( Token.NameRequestTag -> csrfConfig.tokenName, Token.RequestTag -> token )) } } implicit lazy val request = FakeRequest().withCSRFToken }
Example 12
Source File: HelloWorldSpec.scala From play-soap with Apache License 2.0 | 5 votes |
package play.soap.sbtplugin.tester import java.net.ServerSocket import java.util.concurrent.atomic.AtomicBoolean import javax.xml.ws.Endpoint import javax.xml.ws.handler.soap._ import javax.xml.ws.handler.MessageContext import org.apache.cxf.jaxws.EndpointImpl import play.soap.testservice.client._ import scala.collection.JavaConverters._ import scala.concurrent.{Await, Future} import scala.concurrent.duration._ import scala.reflect.ClassTag import play.api.test._ import play.api.Application import play.api.inject.guice.GuiceApplicationBuilder import play.soap.testservice.HelloWorldImpl class HelloWorldSpec extends ServiceSpec { sequential "HelloWorld" should { "say hello" in withClient { client => await(client.sayHello("world")) must_== "Hello world" } "say hello to many people" in withClient { client => await(client.sayHelloToMany(java.util.Arrays.asList("foo", "bar"))).asScala must_== List("Hello foo", "Hello bar") } "say hello to one user" in withClient { client => val user = new User user.setName("world") await(client.sayHelloToUser(user)).getUser.getName must_== "world" } "say hello with an exception" in withClient { client => await(client.sayHelloException("world")) must throwA[HelloException_Exception].like { case e => e.getMessage must_== "Hello world" } } "dont say hello" in withClient { client => await(client.dontSayHello()) must_== ((): Unit) } "allow adding custom handlers" in { val invoked = new AtomicBoolean() withApp { app => val client = app.injector.instanceOf[HelloWorldService].helloWorld(new SOAPHandler[SOAPMessageContext] { def getHeaders = null def handleMessage(context: SOAPMessageContext) = { invoked.set(true) true } def close(context: MessageContext) = () def handleFault(context: SOAPMessageContext) = true }) await(client.sayHello("world")) must_== "Hello world" invoked.get() must_== true } } } override type ServiceClient = HelloWorldService override type Service = HelloWorld override implicit val serviceClientClass: ClassTag[HelloWorldService] = ClassTag(classOf[HelloWorldService]) override def getServiceFromClient(c: ServiceClient): Service = c.helloWorld override def createServiceImpl(): Any = new HelloWorldImpl val servicePath: String = "helloWorld" }
Example 13
Source File: PlayAPISpec.scala From playsonify with MIT License | 5 votes |
package com.alexitc.playsonify.test import java.net.URLEncoder import org.scalatest.concurrent.ScalaFutures import org.scalatestplus.play.PlaySpec import play.api.inject.guice.GuiceApplicationBuilder import play.api.mvc.Result import play.api.test.FakeRequest import play.api.test.Helpers._ import play.api.{Application, Mode} import scala.concurrent.Future def GET(url: String, extraHeaders: (String, String)*): Future[Result] = { val headers = JsonHeader :: extraHeaders.toList val request = FakeRequest("GET", url) .withHeaders(headers: _*) val response = route(application, request).get log(request, response) response } def POST(url: String, extraHeaders: (String, String)*): Future[Result] = { POST(url, None, extraHeaders: _*) } def POST(url: String, jsonBody: Option[String], extraHeaders: (String, String)*): Future[Result] = { val headers = JsonHeader :: extraHeaders.toList val json = jsonBody.getOrElse(EmptyJson) val request = FakeRequest("POST", url) .withHeaders(headers: _*) .withBody(json) val response = route(application, request).get log(request, response) response } def PUT(url: String, extraHeaders: (String, String)*): Future[Result] = { PUT(url, None, extraHeaders: _*) } def PUT(url: String, jsonBody: Option[String], extraHeaders: (String, String)*): Future[Result] = { val headers = JsonHeader :: extraHeaders.toList val json = jsonBody.getOrElse(EmptyJson) val request = FakeRequest("PUT", url) .withHeaders(headers: _*) .withBody(json) val response = route(application, request).get log(request, response) response } def DELETE(url: String, extraHeaders: (String, String)*): Future[Result] = { val headers = JsonHeader :: extraHeaders.toList val request = FakeRequest("DELETE", url) .withHeaders(headers: _*) val response = route(application, request).get log(request, response) response } } object PlayAPISpec { object Implicits { implicit class HttpExt(val params: List[(String, String)]) extends AnyVal { def toQueryString: String = { params .map { case (key, value) => val encodedKey = URLEncoder.encode(key, "UTF-8") val encodedValue = URLEncoder.encode(value, "UTF-8") List(encodedKey, encodedValue).mkString("=") } .mkString("&") } } implicit class StringUrlExt(val url: String) extends AnyVal { def withQueryParams(params: (String, String)*): String = { List(url, params.toList.toQueryString).mkString("?") } } } }
Example 14
Source File: AuthUtils.scala From cluster-broccoli with Apache License 2.0 | 5 votes |
package de.frosner.broccoli.controllers import de.frosner.broccoli.auth.{Account, Role} import de.frosner.broccoli.services.SecurityService import jp.t2v.lab.play2.auth.test.Helpers._ import org.mockito.Mockito._ import org.specs2.matcher.MatchResult import org.specs2.matcher.MatchersImplicits._ import play.api.cache.CacheApi import play.api.mvc.{Action, AnyContentAsEmpty, Result} import play.api.test.Helpers._ import play.api.test._ import play.api.{Application, Environment} import scala.concurrent.Future trait AuthUtils extends ServiceMocks { def playEnv(implicit app: Application): Environment = app.injector.instanceOf[Environment] def cacheApi(implicit app: Application): CacheApi = app.injector.instanceOf[CacheApi] def testWithAllAuths[T <: AuthConfigImpl, B](account: Account)(controller: SecurityService => T)( action: T => Action[B])(requestModifier: FakeRequest[AnyContentAsEmpty.type] => FakeRequest[B])( matcher: (T, Future[Result]) => MatchResult[_]): MatchResult[_] = { val confAuthController = controller(withAuthConf(mock[SecurityService], List(account))) val confAuthRequest = requestModifier(FakeRequest().withLoggedIn(confAuthController)(account.name)) val confAuthResult = action(confAuthController).apply(confAuthRequest) val confAuthMatcher = matcher(confAuthController, confAuthResult) val noAuthController = controller(withAuthNone(mock[SecurityService])) val noAuthRequest = requestModifier(FakeRequest()) val confAuthNoLoginResult = action(confAuthController).apply(noAuthRequest) val confAuthNoLoginMatcher = status(confAuthNoLoginResult) === 403 confAuthMatcher and confAuthNoLoginMatcher } def testWithAllAuths[T <: AuthConfigImpl, B](controller: SecurityService => T)(action: T => Action[B])( requestModifier: FakeRequest[AnyContentAsEmpty.type] => FakeRequest[B])( matcher: (T, Future[Result]) => MatchResult[_]): MatchResult[_] = { val account = Account("user", ".*", Role.Administrator) val noAuthController = controller(withAuthNone(mock[SecurityService])) val noAuthRequest = requestModifier(FakeRequest()) val noAuthResult = action(noAuthController).apply(noAuthRequest) val noAuthMatcher = matcher(noAuthController, noAuthResult) val authMatchers = testWithAllAuths(account)(controller)(action)(requestModifier)(matcher) noAuthMatcher and authMatchers } }
Example 15
Source File: KubeServiceLocatorServer.scala From lagom-on-kube with Apache License 2.0 | 5 votes |
package me.alexray.lagom.kube.discovery import java.io.Closeable import java.net.URI import java.util.{Map => JMap} import com.lightbend.lagom.gateway.{ServiceGateway, ServiceGatewayConfig, ServiceGatewayFactory} import me.alexray.lagom.kube.discovery.impl.KubeServiceRegistryModule import me.alexray.lagom.kube.gateway.{KubeServiceGateway, KubeServiceGatewayConfig, KubeServiceGatewayFactory} import play.api.Application import play.api.Logger import play.api.Mode import play.api.Play import play.api.inject.guice.GuiceApplicationBuilder import play.api.inject.guice.GuiceableModule.fromGuiceModule import play.core.server.ServerConfig import play.core.server.ServerProvider import play.core.server.ServerWithStop import scala.util.control.NonFatal class KubeServiceLocatorServer extends Closeable { private val logger: Logger = Logger(this.getClass) @volatile private var server: ServerWithStop = _ @volatile private var gateway: KubeServiceGateway = _ def start(serviceLocatorPort: Int, serviceGatewayPort: Int, unmanagedServices: JMap[String, String]): Unit = synchronized { require(server == null, "Service locator is already running on " + server.mainAddress) val application = createApplication(KubeServiceGatewayConfig(serviceGatewayPort), unmanagedServices) Play.start(application) try { server = createServer(application, serviceLocatorPort) } catch { case NonFatal(e) => throw new RuntimeException(s"Unable to start service locator on port $serviceLocatorPort", e) } try { gateway = application.injector.instanceOf[KubeServiceGatewayFactory].start() } catch { case NonFatal(e) => throw new RuntimeException(s"Unable to start service gateway on port $serviceGatewayPort", e) } logger.info("Service locator can be reached at " + serviceLocatorAddress) logger.info("Service gateway can be reached at " + serviceGatewayAddress) } private def createApplication(serviceGatewayConfig: KubeServiceGatewayConfig, unmanagedServices: JMap[String, String]): Application = { new GuiceApplicationBuilder() .overrides(KubeServiceRegistryModule(serviceGatewayConfig, unmanagedServices)) .build() } private def createServer(application: Application, port: Int): ServerWithStop = { val config = ServerConfig(port = Some(port), mode = Mode.Test) val provider = implicitly[ServerProvider] provider.createServer(config, application) } override def close(): Unit = synchronized { if (server == null) Logger.logger.debug("Service locator was already stopped") else { logger.debug("Stopping service locator...") server.stop() server = null logger.info("Service locator stopped") } } def serviceLocatorAddress: URI = { // Converting InetSocketAddress into URL is not that simple. // Because we know the service locator is running locally, I'm hardcoding the hostname and protocol. new URI(s"http://localhost:${server.mainAddress.getPort}") } def serviceGatewayAddress: URI = { new URI(s"http://localhost:${gateway.address.getPort}") } }
Example 16
Source File: MyApplicationLoader.scala From get-you-a-license with BSD 3-Clause "New" or "Revised" License | 5 votes |
import controllers.{AssetsComponents, Main} import filters.OnlyHttpsFilter import org.webjars.play.{RequireJS, WebJarAssets, WebJarsUtil} import play.api.{Application, ApplicationLoader, BuiltInComponentsFromContext} import play.api.ApplicationLoader.Context import play.api.libs.concurrent.{DefaultFutures, Futures} import play.api.libs.ws.ahc.AhcWSComponents import play.api.mvc.EssentialFilter import play.api.routing.Router import play.filters.HttpFiltersComponents import play.filters.csrf.CSRFFilter import router.Routes import utils.GitHub class MyApplicationLoader extends ApplicationLoader { def load(context: Context): Application = { new MyComponents(context).application } } class MyComponents(context: Context) extends BuiltInComponentsFromContext(context) with AhcWSComponents with AssetsComponents with HttpFiltersComponents { override def httpFilters: Seq[EssentialFilter] = { super.httpFilters.filterNot(_.isInstanceOf[CSRFFilter]) :+ new OnlyHttpsFilter(environment) } lazy val futures = new DefaultFutures(actorSystem) lazy val webJarsUtil = new WebJarsUtil(context.initialConfiguration, context.environment) lazy val indexView = new views.html.index(webJarsUtil) lazy val setupView = new views.html.setup(webJarsUtil) lazy val orgView = new views.html.org(webJarsUtil) lazy val gitHub = new GitHub(context.initialConfiguration, wsClient, futures) lazy val main = new Main(gitHub, controllerComponents)(indexView, orgView, setupView) lazy val requireJs = new RequireJS(webJarsUtil) lazy val webJarAssets = new WebJarAssets(httpErrorHandler, assetsMetadata) lazy val webJarsRoutes = new webjars.Routes(httpErrorHandler, requireJs, webJarAssets) lazy val router: Router = new Routes(httpErrorHandler, main, assets, webJarsRoutes) }
Example 17
Source File: HatDataStatsProcessorSpec.scala From HAT2.0 with GNU Affero General Public License v3.0 | 5 votes |
package org.hatdex.hat.api.service.monitoring import java.util.UUID import akka.stream.Materializer import com.google.inject.AbstractModule import net.codingwell.scalaguice.ScalaModule import org.hatdex.hat.api.models.{ EndpointData, Owner } import org.hatdex.hat.api.service.applications.{ TestApplicationProvider, TrustedApplicationProvider } import org.hatdex.hat.api.service.monitoring.HatDataEventBus.DataCreatedEvent import org.hatdex.hat.authentication.models.HatUser import org.hatdex.hat.dal.ModelTranslation import org.hatdex.hat.resourceManagement.FakeHatConfiguration import org.joda.time.DateTime import org.specs2.mock.Mockito import org.specs2.specification.Scope import play.api.inject.guice.GuiceApplicationBuilder import play.api.libs.json.{ JsValue, Json } import play.api.test.PlaySpecification import play.api.{ Application, Logger } class HatDataStatsProcessorSpec extends PlaySpecification with Mockito with HatDataStatsProcessorContext { val logger = Logger(this.getClass) sequential "The `computeInboundStats` method" should { "Correctly count numbers of values for simple objects" in { val service = application.injector.instanceOf[HatDataStatsProcessor] val stats = service.computeInboundStats(simpleDataCreatedEvent) import org.hatdex.hat.api.json.DataStatsFormat._ logger.debug(s"Got back stats: ${Json.prettyPrint(Json.toJson(stats))}") stats.logEntry must be equalTo "test item" stats.statsType must be equalTo "inbound" stats.stats.length must be equalTo 1 val endpointStats = stats.stats.head endpointStats.endpoint must be equalTo "testendpoint" endpointStats.propertyStats("field") must equalTo(1) endpointStats.propertyStats("date") must equalTo(1) endpointStats.propertyStats("date_iso") must equalTo(1) endpointStats.propertyStats("anotherField") must equalTo(1) endpointStats.propertyStats("object.objectField") must equalTo(1) endpointStats.propertyStats("object.objectFieldArray[]") must equalTo(3) endpointStats.propertyStats("object.objectFieldObjectArray[].subObjectName") must equalTo(2) endpointStats.propertyStats("object.objectFieldObjectArray[].subObjectName2") must equalTo(2) } } } trait HatDataStatsProcessorContext extends Scope { import scala.concurrent.ExecutionContext.Implicits.global // Setup default users for testing val owner = HatUser(UUID.randomUUID(), "hatuser", Some("pa55w0rd"), "hatuser", Seq(Owner()), enabled = true) class ExtrasModule extends AbstractModule with ScalaModule { override def configure(): Unit = { bind[TrustedApplicationProvider].toInstance(new TestApplicationProvider(Seq())) } } lazy val application: Application = new GuiceApplicationBuilder() .configure(FakeHatConfiguration.config) .overrides(new ExtrasModule) .build() implicit lazy val materializer: Materializer = application.materializer val simpleJson: JsValue = Json.parse( """ | { | "field": "value", | "date": 1492699047, | "date_iso": "2017-04-20T14:37:27+00:00", | "anotherField": "anotherFieldValue", | "object": { | "objectField": "objectFieldValue", | "objectFieldArray": ["objectFieldArray1", "objectFieldArray2", "objectFieldArray3"], | "objectFieldObjectArray": [ | {"subObjectName": "subObject1", "subObjectName2": "subObject1-2"}, | {"subObjectName": "subObject2", "subObjectName2": "subObject2-2"} | ] | } | } """.stripMargin) val simpleDataCreatedEvent = DataCreatedEvent( "testhat.hubofallthings.net", ModelTranslation.fromInternalModel(owner).clean, DateTime.now(), "test item", Seq( EndpointData("testendpoint", Option(UUID.randomUUID()), None, None, simpleJson, None))) }
Example 18
Source File: PlayGlobalSettings.scala From play-silhouette-postgres-async-seed with Apache License 2.0 | 5 votes |
package utils import java.util.TimeZone import jdub.async.Database import org.joda.time.DateTimeZone import play.api.{ Application, GlobalSettings } import services.database.Schema object PlayGlobalSettings extends GlobalSettings { override def onStart(app: Application) = { DateTimeZone.setDefault(DateTimeZone.UTC) TimeZone.setDefault(TimeZone.getTimeZone("UTC")) val cnf = play.api.Play.current.configuration val host = cnf.getString("db.host").getOrElse("127.0.0.1") val port = 5432 val database = cnf.getString("db.database") val username = cnf.getString("db.username").getOrElse("silhouette") val password = cnf.getString("db.password") Database.open(username, host, port, password, database) Schema.update() super.onStart(app) } override def onStop(app: Application) = { Database.close() super.onStop(app) } }
Example 19
Source File: AkkaGrpcClientHelpers.scala From play-grpc with Apache License 2.0 | 5 votes |
package play.grpc.testkit import java.util.concurrent.TimeUnit import akka.actor.ActorSystem import akka.grpc.internal.AkkaGrpcClientFactory import akka.grpc.scaladsl.AkkaGrpcClient import akka.stream.Materializer import play.api.Application import play.core.server.ServerEndpoint import play.core.server.ServerEndpoints import scala.concurrent.duration.Duration import scala.concurrent.Await import scala.concurrent.ExecutionContext import scala.reflect.ClassTag def factoryForAppEndpoints[T <: AkkaGrpcClient: ClassTag]( app: Application, serverEndpoint: ServerEndpoint, ): AkkaGrpcClientFactory.Configured[T] = { implicit val sys: ActorSystem = app.actorSystem implicit val materializer: Materializer = app.materializer implicit val executionContext: ExecutionContext = sys.dispatcher AkkaGrpcClientFactory.configure[T]( JavaAkkaGrpcClientHelpers .grpcClientSettings(serverEndpoint, sys) .withOverrideAuthority("localhost"), ) } }
Example 20
Source File: PlayScalaTestSpec.scala From play-grpc with Apache License 2.0 | 5 votes |
package play.grpc.scalatest import io.grpc.Status import org.scalatest.concurrent.IntegrationPatience import org.scalatest.concurrent.ScalaFutures import org.scalatestplus.play.PlaySpec import org.scalatestplus.play.guice.GuiceOneServerPerTest import play.api.Application import play.api.inject.bind import play.api.inject.guice.GuiceApplicationBuilder import play.api.libs.ws.WSClient import play.api.routing.Router import akka.grpc.internal.GrpcProtocolNative import example.myapp.helloworld.grpc.helloworld._ class PlayScalaTestSpec extends PlaySpec with GuiceOneServerPerTest with ServerGrpcClient with ScalaFutures with IntegrationPatience { override def fakeApplication(): Application = { GuiceApplicationBuilder() .overrides(bind[Router].to[GreeterServiceImpl]) .build() } implicit def ws: WSClient = app.injector.instanceOf(classOf[WSClient]) "A Play server bound to a gRPC router" must { "give a 404 when routing a non-gRPC request" in { val result = wsUrl("/").get.futureValue result.status must be(404) // Maybe should be a 426, see #396 } "give a 415 error when not using a gRPC content-type" in { val result = wsUrl(s"/${GreeterService.name}/FooBar").get.futureValue result.status must be(415) } "give a grpc 'unimplemented' error when routing a non-existent gRPC method" in { val result = wsUrl(s"/${GreeterService.name}/FooBar") .addHttpHeaders("Content-Type" -> GrpcProtocolNative.contentType.toString) .get .futureValue result.status must be(200) // Maybe should be a 426, see #396 result.header("grpc-status") mustEqual Some(Status.Code.UNIMPLEMENTED.value().toString) } "give a grpc 'invalid argument' error when routing an empty request to a gRPC method" in { val result = wsUrl(s"/${GreeterService.name}/SayHello") .addHttpHeaders("Content-Type" -> GrpcProtocolNative.contentType.toString) .get .futureValue result.status must be(200) result.header("grpc-status") mustEqual Some(Status.Code.INVALID_ARGUMENT.value().toString) } "work with a gRPC client" in withGrpcClient[GreeterServiceClient] { client: GreeterServiceClient => val reply = client.sayHello(HelloRequest("Alice")).futureValue reply.message must be("Hello, Alice!") } } }
Example 21
Source File: SwaggerPluginProvider.scala From swagger-play24 with Apache License 2.0 | 5 votes |
package pl.matisoft.swagger import java.net.URL import javax.inject.{Inject, Provider} import com.wordnik.swagger.config.{FilterFactory, ScannerFactory, ConfigFactory} import com.wordnik.swagger.core.SwaggerContext import com.wordnik.swagger.core.filter.SwaggerSpecFilter import com.wordnik.swagger.reader.ClassReaders import play.api.inject.ApplicationLifecycle import play.api.{Logger, Application} import play.api.routing.Router import play.modules.swagger.ApiListingCache import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.Future class SwaggerPluginProvider extends Provider[SwaggerPlugin] { val logger = Logger("swagger") @Inject private var router: Router = _ @Inject private var app: Application = _ @Inject private var lifecycle: ApplicationLifecycle = _ override def get(): SwaggerPlugin = { lifecycle.addStopHook(() => Future { onStop() }) onStart() } def onStart(): SwaggerPlugin = { val config = app.configuration logger.info("Swagger - starting initialisation...") val apiVersion = config.getString("api.version") match { case None => "beta" case Some(value) => value } val basePath = config.getString("swagger.api.basepath") .filter(path => !path.isEmpty) .map(getPathUrl(_)) .getOrElse("http://localhost:9000") SwaggerContext.registerClassLoader(app.classloader) ConfigFactory.config.setApiVersion(apiVersion) ConfigFactory.config.setBasePath(basePath) ScannerFactory.setScanner(new PlayApiScanner(Option(router))) ClassReaders.reader = Some(new PlayApiReader(Option(router))) app.configuration.getString("swagger.filter") .filter(p => !p.isEmpty) .foreach(loadFilter(_)) val docRoot = "" ApiListingCache.listing(docRoot) logger.info("Swagger - initialization done.") new SwaggerPlugin() } def onStop() { ApiListingCache.cache = None logger.info("Swagger - stopped.") } def loadFilter(filterClass: String): Unit = { try { FilterFactory.filter = SwaggerContext.loadClass(filterClass).newInstance.asInstanceOf[SwaggerSpecFilter] logger.info(s"Setting swagger.filter to $filterClass") } catch { case ex: Exception =>logger.error(s"Failed to load filter:$filterClass", ex) } } def getPathUrl(path: String): String = { try { val basePathUrl = new URL(path) logger.info(s"Basepath configured as:$path") path } catch { case ex: Exception => logger.error(s"Misconfiguration - basepath not a valid URL:$path. Swagger abandoning initialisation!") throw ex } } }
Example 22
Source File: FrontEndLoader.scala From lagom-scala-chirper with Apache License 2.0 | 5 votes |
import com.lightbend.lagom.scaladsl.api.{ServiceAcl, ServiceInfo} import com.lightbend.lagom.scaladsl.client.LagomServiceClientComponents import com.lightbend.lagom.scaladsl.devmode.LagomDevModeComponents import com.lightbend.lagom.scaladsl.dns.DnsServiceLocatorComponents import com.softwaremill.macwire._ import play.api.ApplicationLoader._ import play.api.i18n.I18nComponents import play.api.libs.ws.ahc.AhcWSComponents import play.api.{Application, ApplicationLoader, BuiltInComponentsFromContext, Mode} import router.Routes import scala.concurrent.ExecutionContext class FrontEndLoader extends ApplicationLoader { override def load(context: Context): Application = context.environment.mode match { case Mode.Dev => (new FrontEndModule(context) with LagomDevModeComponents).application case _ => (new FrontEndModule(context) with DnsServiceLocatorComponents).application } } abstract class FrontEndModule(context: Context) extends BuiltInComponentsFromContext(context) with I18nComponents with AhcWSComponents with LagomServiceClientComponents { override lazy val serviceInfo = ServiceInfo( "front-end", Map("front-end" -> List(ServiceAcl.forPathRegex("(?!/api/).*"))) ) override implicit lazy val executionContext: ExecutionContext = actorSystem.dispatcher override lazy val router = { wire[Routes] } }
Example 23
Source File: ScalinguaPlugin.scala From scalingua with Apache License 2.0 | 5 votes |
package ru.makkarpov.scalingua.play import javax.inject.Inject import play.api.{Application, BuiltInComponentsFromContext, Configuration, Environment} import play.api.inject.{Binding, Module} import ru.makkarpov.scalingua.Messages trait ScalinguaComponents { def configuration: Configuration def environment: Environment lazy val messages = new MessagesProvider(new ScalinguaConfigProvider(configuration).get(), environment).get() } class ScalinguaModule extends Module { override def bindings(environment: Environment, configuration: Configuration): Seq[Binding[_]] = Seq( bind[ScalinguaConfig].toProvider[ScalinguaConfigProvider], bind[Messages].toProvider[MessagesProvider] ) }
Example 24
Source File: TaskExecutor.scala From sundial with MIT License | 5 votes |
package service import javax.inject.Inject import dao.{ExecutableStateDao, SundialDao} import model._ import play.api.{Application, Configuration, Logging, Logger} import service.emr.EmrServiceExecutor trait SpecificTaskExecutor[ ExecutableType <: Executable, StateType <: ExecutableState] { protected def logger: Logger protected def stateDao( implicit dao: SundialDao): ExecutableStateDao[StateType] def startExecutable(executable: ExecutableType, task: Task)( implicit dao: SundialDao): Unit = { val state = actuallyStartExecutable(executable, task) stateDao.saveState(state) } def killExecutable(task: Task, reason: String)( implicit dao: SundialDao): Unit = { stateDao.loadState(task.id).foreach { state => actuallyKillExecutable(state, task, reason) } } def refreshStatus(task: Task)( implicit dao: SundialDao): Option[ExecutorStatus] = { logger.debug(s"Refreshing task state for task $task") stateDao.loadState(task.id).map { state => val newState = actuallyRefreshState(state) stateDao.saveState(newState) newState.status } } protected def actuallyStartExecutable(executable: ExecutableType, task: Task)( implicit dao: SundialDao): StateType protected def actuallyKillExecutable( state: StateType, task: Task, reason: String)(implicit dao: SundialDao): Unit protected def actuallyRefreshState(state: StateType)( implicit dao: SundialDao): StateType } class TaskExecutor @Inject()(batchServiceExecutor: BatchServiceExecutor, shellCommandExecutor: ShellCommandExecutor, emrServiceExecutor: EmrServiceExecutor)( implicit configuration: Configuration, application: Application) extends Logging { def startExecutable(task: Task)(implicit dao: SundialDao): Unit = { task.executable match { case e: BatchExecutable => batchServiceExecutor.startExecutable(e, task) case e: ShellCommandExecutable => shellCommandExecutor.startExecutable(e, task) case e: EmrJobExecutable => emrServiceExecutor.startExecutable(e, task) case _ => logger.warn(s"No Executor found for Task($task)") } } def killExecutable(task: Task, reason: String)( implicit dao: SundialDao): Unit = { task.executable match { case _: BatchExecutable => batchServiceExecutor.killExecutable(task, reason) case _: ShellCommandExecutable => shellCommandExecutor.killExecutable(task, reason) case _: EmrJobExecutable => emrServiceExecutor.killExecutable(task, reason) case _ => logger.warn(s"No Executor found for Task($task)") } } def refreshStatus(task: Task)( implicit dao: SundialDao): Option[ExecutorStatus] = { logger.debug(s"Refreshing status for task $task") task.executable match { case _: BatchExecutable => batchServiceExecutor.refreshStatus(task) case _: ShellCommandExecutable => shellCommandExecutor.refreshStatus(task) case _: EmrJobExecutable => emrServiceExecutor.refreshStatus(task) case _ => { logger.warn(s"No Executor found for Task($task)") None } } } }
Example 25
Source File: Iot_managerSpec.scala From daf with BSD 3-Clause "New" or "Revised" License | 5 votes |
import java.io.{IOException, File => JFile} import java.net.ServerSocket import java.util.Base64 import better.files._ import it.gov.daf.iotmanager.client.Iot_managerClient import org.specs2.mutable.Specification import org.specs2.specification.BeforeAfterAll import play.api.Application import play.api.inject.guice.GuiceApplicationBuilder import play.api.libs.ws.ahc.AhcWSClient import play.api.libs.ws.{WSAuthScheme, WSResponse} import play.api.test.{WithServer, WsTestClient} import scala.concurrent.Await import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration.Duration import scala.util.{Failure, Try} import org.apache.solr.client.solrj.embedded.JettyConfig import org.apache.solr.client.solrj.embedded.JettySolrRunner import org.eclipse.jetty.servlet.ServletHolder @SuppressWarnings(Array("org.wartremover.warts.NonUnitStatements", "org.wartremover.warts.Throw")) class Iot_managerSpec extends Specification with BeforeAfterAll { import Iot_managerSpec._ def getAvailablePort: Int = { try { val socket = new ServerSocket(0) try { socket.getLocalPort } finally { socket.close() } } catch { case e: IOException => throw new IllegalStateException(s"Cannot find available port: ${e.getMessage}", e) } } def application: Application = GuiceApplicationBuilder(). configure("hadoop_conf_dir" -> s"${ServiceSpec.confPath.pathAsString}"). configure("pac4j.authenticator" -> "test"). build() "The security_manager" should { "manage user tokens correctly" in new WithServer(app = application, port = getAvailablePort) { print("ciao ciao") } } override def beforeAll(): Unit = { val solrXml = new Nothing("/solr/home/solr.xml") val solrHomeDir = solrXml.getParentFile val port = 8080 val context = "/solr" // use org.apache.solr.client.solrj.embedded.JettySolrRunner val jettySolr = new Nothing(solrHomeDir.getAbsolutePath, context, port) val waitUntilTheSolrWebAppHasStarted = true jettySolr.start(waitUntilTheSolrWebAppHasStarted) } override def afterAll(): Unit = { jettySolr.stop() } } @SuppressWarnings(Array("org.wartremover.warts.Var", "org.wartremover.warts.Null")) object Iot_managerSpec { }
Example 26
Source File: ProductDaoSpec.scala From Scala-Programming-Projects with MIT License | 5 votes |
import dao.ProductDao import io.fscala.shopping.shared.Product import org.scalatest.Matchers._ import org.scalatest.concurrent.ScalaFutures import org.scalatestplus.play._ import org.scalatestplus.play.guice.GuiceOneAppPerSuite import play.api.Application class ProductDaoSpec extends PlaySpec with ScalaFutures with GuiceOneAppPerSuite { "ProductDao" should { "Have default rows on database creation" in { val app2dao = Application.instanceCache[ProductDao] val dao: ProductDao = app2dao(app) val expected = Set( Product("PEPPER", "ALD2", "PEPPER is a robot moving with wheels and with a screen as human interaction", 7000), Product("NAO", "ALD1", "NAO is an humanoid robot.", 3500), Product("BEOBOT", "BEO1", "Beobot is a multipurpose robot.", 159.0) ) dao.all().futureValue should contain theSameElementsAs (expected) } } }
Example 27
Source File: CartDaoSpec.scala From Scala-Programming-Projects with MIT License | 5 votes |
import dao.CartDao import io.fscala.shopping.shared.{Cart, ProductInCart} import org.scalatest.Matchers._ import org.scalatest.concurrent.ScalaFutures import org.scalatest.RecoverMethods._ import org.scalatestplus.play._ import org.scalatestplus.play.guice.GuiceOneAppPerSuite import play.api.Application import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.Future class CartDaoSpec extends PlaySpec with ScalaFutures with GuiceOneAppPerSuite { "CartDao" should { val app2dao = Application.instanceCache[CartDao] "be empty on database creation" in { val dao: CartDao = app2dao(app) dao.all().futureValue shouldBe empty } "accept to add new cart" in { val dao: CartDao = app2dao(app) val user = "userAdd" val expected = Set( Cart(user, "ALD1", 1), Cart(user, "BEO1", 5) ) val noise = Set( Cart("userNoise", "ALD2", 10) ) val allCarts = expected ++ noise val insertFutures = allCarts.map(dao.insert) whenReady(Future.sequence(insertFutures)) { _ => dao.cart4(user).futureValue should contain theSameElementsAs expected dao.all().futureValue.size should equal(allCarts.size) } } "error thrown when adding a cart with same user and productCode" in { val dao: CartDao = app2dao(app) val user = "userAdd" val expected = Set( Cart(user, "ALD1", 1), Cart(user, "BEO1", 5) ) val noise = Set( Cart(user, "ALD1", 10) ) val allCarts = expected ++ noise val insertFutures = allCarts.map(dao.insert) recoverToSucceededIf[org.h2.jdbc.JdbcSQLException]{ Future.sequence(insertFutures) } } "accept to remove a product in a cart" in { val dao: CartDao = app2dao(app) val user = "userRmv" val initial = Vector( Cart(user, "ALD1", 1), Cart(user, "BEO1", 5) ) val expected = Vector(Cart(user, "ALD1", 1)) whenReady(Future.sequence(initial.map(dao.insert(_)))) { _ => dao.remove(ProductInCart(user, "BEO1")).futureValue dao.cart4(user).futureValue should contain theSameElementsAs (expected) } } "accept to update quantities of an item in a cart" in { val dao: CartDao = app2dao(app) val user = "userUpd" val initial = Vector(Cart(user, "ALD1", 1)) val expected = Vector(Cart(user, "ALD1", 5)) whenReady(Future.sequence(initial.map(dao.insert(_)))) { _ => dao.update(Cart(user, "ALD1", 5)).futureValue dao.cart4(user).futureValue should contain theSameElementsAs (expected) } } } }
Example 28
Source File: Bootstrap.scala From incubator-s2graph with Apache License 2.0 | 5 votes |
package org.apache.s2graph.rest.play import java.util.concurrent.Executors import org.apache.s2graph.core.rest.{RequestParser, RestHandler} import org.apache.s2graph.core.utils.logger import org.apache.s2graph.core.{ExceptionHandler, S2Graph, Management} import org.apache.s2graph.rest.play.actors.QueueActor import org.apache.s2graph.rest.play.config.Config import org.apache.s2graph.rest.play.controllers.ApplicationController import play.api.Application import play.api.mvc.{WithFilters, _} import play.filters.gzip.GzipFilter import scala.concurrent.{ExecutionContext, Future} import scala.io.Source import scala.util.Try object Global extends WithFilters(new GzipFilter()) { var s2graph: S2Graph = _ var storageManagement: Management = _ var s2parser: RequestParser = _ var s2rest: RestHandler = _ var wallLogHandler: ExceptionHandler = _ def startup() = { val numOfThread = Runtime.getRuntime.availableProcessors() val threadPool = Executors.newFixedThreadPool(numOfThread) val ec = ExecutionContext.fromExecutor(threadPool) val config = Config.conf.underlying // init s2graph with config s2graph = new S2Graph(config)(ec) storageManagement = new Management(s2graph) s2parser = new RequestParser(s2graph) s2rest = new RestHandler(s2graph)(ec) logger.info(s"starts with num of thread: $numOfThread, ${threadPool.getClass.getSimpleName}") config } def shutdown() = { s2graph.shutdown() } // Application entry point override def onStart(app: Application) { ApplicationController.isHealthy = false val config = startup() wallLogHandler = new ExceptionHandler(config) QueueActor.init(s2graph, wallLogHandler) val defaultHealthOn = Config.conf.getBoolean("app.health.on").getOrElse(true) ApplicationController.deployInfo = Try(Source.fromFile("./release_info").mkString("")).recover { case _ => "release info not found\n" }.get ApplicationController.isHealthy = defaultHealthOn } override def onStop(app: Application) { wallLogHandler.shutdown() QueueActor.shutdown() shutdown() } override def onError(request: RequestHeader, ex: Throwable): Future[Result] = { logger.error(s"onError => ip:${request.remoteAddress}, request:${request}", ex) Future.successful(Results.InternalServerError) } override def onHandlerNotFound(request: RequestHeader): Future[Result] = { logger.error(s"onHandlerNotFound => ip:${request.remoteAddress}, request:${request}") Future.successful(Results.NotFound) } override def onBadRequest(request: RequestHeader, error: String): Future[Result] = { logger.error(s"onBadRequest => ip:${request.remoteAddress}, request:$request, error:$error") Future.successful(Results.BadRequest(error)) } }
Example 29
Source File: ClientsModule.scala From daf-semantics with Apache License 2.0 | 5 votes |
package modules import com.google.inject.ImplementedBy import play.api.inject.ApplicationLifecycle import javax.inject.Singleton import javax.inject.Inject import play.api.libs.ws.WSClient import play.api.Application import play.api.Environment import play.api.Configuration import scala.concurrent.ExecutionContext import scala.concurrent.Future import play.Logger import clients.OntonetHubClient import com.typesafe.config.ConfigFactory import com.typesafe.config.ConfigRenderOptions @ImplementedBy(classOf[ClientsModuleBase]) trait ClientsModule @Singleton class ClientsModuleBase @Inject() (lifecycle: ApplicationLifecycle, ws: WSClient, configuration: Configuration) extends ClientsModule { val conf_clients = configuration.underlying .getConfig("clients") val ontonethub_config = conf_clients.getConfig("ontonethub") // TODO: verify if default configurations are needed here val ontonethub = new OntonetHubClient(ws, ontonethub_config) // TESTING ................................................ val options = ConfigRenderOptions.concise() .setComments(false).setOriginComments(false) .setFormatted(true).setJson(true) val json = ontonethub_config.root().render(options) // TESTING ................................................ // when application starts... @Inject def onStart( app: Application, env: Environment)(implicit ec: ExecutionContext) { Logger.info("ClientsModuleBase START") println("\n\n\n\n\n\n") println(json) } // when application stops... lifecycle.addStopHook({ () => Future.successful { Logger.info("ClientsModuleBase STOP") } }) }
Example 30
Source File: KBModule.scala From daf-semantics with Apache License 2.0 | 5 votes |
package modules import javax.inject._ import play.api.inject.ApplicationLifecycle import play.api.mvc._ import scala.concurrent.Future import com.google.inject.ImplementedBy import play.api.Play import play.api.Application import play.api.Environment import play.api.Configuration import scala.concurrent.ExecutionContext import play.api.Logger import it.almawave.linkeddata.kb.utils.ConfigHelper import it.almawave.linkeddata.kb.repo._ import scala.concurrent.ExecutionContext.Implicits.global import java.nio.file.Paths import play.api.Mode import java.io.File import it.almawave.linkeddata.kb.repo.RDFRepository import com.typesafe.config.ConfigFactory @ImplementedBy(classOf[KBModuleBase]) trait KBModule @Singleton class KBModuleBase @Inject() (lifecycle: ApplicationLifecycle) extends KBModule { // TODO: SPI per dev / prod val kbrepo = RDFRepository.memory() val logger = Logger.underlyingLogger // when application starts... @Inject def onStart( env: Environment, configuration: Configuration)(implicit ec: ExecutionContext) { // get configs val app_type = configuration.underlying.getString("app.type") val data_dir = app_type match { case "dev" => "./dist/data" case "prod" => "./data" } logger.debug(s"app_type: ${app_type}") logger.debug(s"data_dir: ${data_dir}") // starting VocabularyAPI service var conf_voc = ConfigFactory.parseFile(new File("./conf/semantic_repository.conf").getAbsoluteFile) conf_voc = ConfigHelper.injectParameters(conf_voc, ("data_dir", data_dir)) kbrepo.configuration(conf_voc) logger.info("KBModule.START....") logger.debug("KBModule using configuration:\n" + ConfigHelper.pretty(conf_voc)) println("KBModule using configuration:\n" + ConfigHelper.pretty(conf_voc)) // this is needed for ensure proper connection(s) etc kbrepo.start() // CHECK the initial (total) triples count var triples = kbrepo.store.size() logger.info(s"KBModule> ${triples} triples loaded") } // when application stops... lifecycle.addStopHook({ () => Future.successful { // this is useful for saving files, closing connections, release indexes, etc kbrepo.stop() logger.info("KBModule.STOP....") } }) }
Example 31
Source File: TestingHttpApi.scala From daf-semantics with Apache License 2.0 | 5 votes |
package it.almawave.linkeddata.kb.http import play.api.inject.guice.GuiceApplicationBuilder import org.junit.Test import org.junit.After import play.api.Application import org.junit.Before import it.almawave.linkeddata.kb.utils.JSONHelper import play.api.libs.ws.WSClient import org.asynchttpclient.DefaultAsyncHttpClient import play.api.libs.ws.ssl.SystemConfiguration import akka.stream.ActorMaterializer import play.api.libs.ws.ahc.AhcWSClient import scala.concurrent.Await import scala.concurrent.duration.Duration import java.net.URL import com.typesafe.config.ConfigFactory class TestingHttpApi { var app: Application = null var conf = ConfigFactory.empty() var ws: WSClient = null var app_url = new URL("http://localhost:8080") @Test def testing_contexts() { // curl -X GET http://localhost:8999/kb/v1/prefixes/lookup?prefix=no_pref // -H "accept: application/json" // -H "content-type: application/json" val fut = ws.url(s"http://localhost:8999/kb/v1/prefixes/lookup") .withHeaders(("accept", "application/json")) .withHeaders(("content-type", "application/json")) .withFollowRedirects(true) .withQueryString(("prefix", "muapit")) .get() val results = Await.result(fut, Duration.Inf) println(results.body) } @Before def before() { app = GuiceApplicationBuilder() .build() conf = app.configuration.underlying // play.app.local.url // play.server.http.address // play.server.http.port println(JSONHelper.writeToString(conf.root().unwrapped())) app_url = new URL(conf.getString("app.local.url")) println(s"\n\nrunning at ${app_url}") val materializer = ActorMaterializer()(app.actorSystem) ws = AhcWSClient()(materializer) } @After def after() { ws.close() app.stop() } }
Example 32
Source File: SemanticRepositorySpecs.scala From daf-semantics with Apache License 2.0 | 5 votes |
package specs import org.junit.runner.RunWith import scala.concurrent.{ Await, Future } import scala.concurrent.duration.Duration import play.api.test._ import play.api.http.Status import play.api.Application import play.api.inject.guice.GuiceApplicationBuilder import play.api.libs.ws.WSResponse import play.api.libs.ws.ahc.AhcWSClient import org.specs2.runner.JUnitRunner import org.specs2.mutable.Specification import play.api.libs.json.Json //import it.almawave.linkeddata.kb.utils.ConfigHelper import scala.collection.JavaConversions._ import scala.collection.JavaConverters._ import play.twirl.api.Content import play.api.test.Helpers._ import play.api.libs.json.JsObject import java.io.File import play.api.http.Writeable import akka.stream.scaladsl.Source import play.api.mvc.MultipartFormData import play.api.libs.Files.TemporaryFile import java.nio.file.Files import org.asynchttpclient.AsyncHttpClient import play.api.libs.ws.WS import akka.util.ByteString import play.api.mvc.MultipartFormData.DataPart import play.api.mvc.MultipartFormData.FilePart import akka.stream.scaladsl.FileIO import play.api.libs.ws.WSClient /* * TODO: REWRITE */ @RunWith(classOf[JUnitRunner]) class SemanticRepositorySpecs extends Specification { def application: Application = GuiceApplicationBuilder().build() "The semantic repository" should { "call kb/v1/contexts to obtain a list of contexts" in { new WithServer(app = application, port = 9999) { WsTestClient.withClient { implicit client => val response: WSResponse = Await.result[WSResponse]( client.url(s"http://localhost:${port}/kb/v1/contexts").execute, Duration.Inf) response.status must be equalTo Status.OK response.json.as[Seq[JsObject]].size must be equals 0 // response.json.as[Seq[JsObject]].size must be greaterThan 0 // if pre-loaded ontologies! } } } "call kb/v1/contexts ensuring all contexts have triples" in { new WithServer(app = application, port = 9999) { WsTestClient.withClient { implicit client => val response: WSResponse = Await.result[WSResponse]( client.url(s"http://localhost:${port}/kb/v1/contexts").execute, Duration.Inf) val json_list = response.json.as[Seq[JsObject]] forall(json_list)((_) must not beNull) forall(json_list)(_.keys must contain("context", "triples")) forall(json_list)(item => (item \ "triples").get.as[Int] > 0) } } } } }
Example 33
Source File: CustomLanguageController.scala From nisp-frontend with Apache License 2.0 | 5 votes |
package uk.gov.hmrc.nisp.controllers import javax.inject.Inject import play.api.{Application, Configuration} import play.api.i18n.{Lang, MessagesApi} import play.api.mvc.Call import uk.gov.hmrc.play.language.{LanguageController, LanguageUtils} class CustomLanguageController @Inject()(implicit override val messagesApi: MessagesApi, application: Application, languageUtils: LanguageUtils, configuration: Configuration ) extends LanguageController(configuration, languageUtils) { def routeToSwitchLanguage = (lang: String) => routes.CustomLanguageController.switchToLanguage(lang) override def languageMap: Map[String, Lang] = Map( "english" -> Lang("en"), "cymraeg" -> Lang("cy") ) }
Example 34
Source File: ApplicationGlobal.scala From nisp-frontend with Apache License 2.0 | 5 votes |
package uk.gov.hmrc.nisp.config import com.typesafe.config.Config import net.ceedubs.ficus.Ficus._ import play.api.Mode.Mode import play.api.i18n.{I18nSupport, Messages, MessagesApi} import play.api.mvc.Request import play.api.{Application, Configuration, Play} import play.twirl.api.Html import uk.gov.hmrc.crypto.ApplicationCrypto import uk.gov.hmrc.nisp.config.wiring.NispAuditConnector import uk.gov.hmrc.nisp.controllers.NispFrontendController import uk.gov.hmrc.nisp.controllers.partial.PartialRetriever import uk.gov.hmrc.play.config.{AppName, ControllerConfig, RunMode} import uk.gov.hmrc.play.frontend.bootstrap.DefaultFrontendGlobal import uk.gov.hmrc.play.frontend.filters.{FrontendAuditFilter, FrontendLoggingFilter, MicroserviceFilterSupport} object ApplicationGlobal extends ApplicationGlobalTrait { override protected def mode: Mode = Play.current.mode override protected def runModeConfiguration: Configuration = Play.current.configuration override def messagesApi = Play.current.injector.instanceOf[MessagesApi] } trait ApplicationGlobalTrait extends DefaultFrontendGlobal with RunMode with PartialRetriever with NispFrontendController with I18nSupport { implicit lazy val app:Application = Play.current override val auditConnector = NispAuditConnector override val loggingFilter = NispLoggingFilter override val frontendAuditFilter = NispFrontendAuditFilter override def onStart(app: Application) { super.onStart(app) new ApplicationCrypto(Play.current.configuration.underlying).verifyConfiguration() } override def internalServerErrorTemplate(implicit request: Request[_]): Html = uk.gov.hmrc.nisp.views.html.service_error_500() override def standardErrorTemplate(pageTitle: String, heading: String, message: String)(implicit request: Request[_]): Html = uk.gov.hmrc.nisp.views.html.global_error(pageTitle, heading, message) override def notFoundTemplate(implicit request: Request[_]): Html = { uk.gov.hmrc.nisp.views.html.page_not_found_template() } override def microserviceMetricsConfig(implicit app: Application): Option[Configuration] = app.configuration.getConfig(s"microservice.metrics") } object ControllerConfiguration extends ControllerConfig { lazy val controllerConfigs = Play.current.configuration.underlying.as[Config]("controllers") } object NispLoggingFilter extends FrontendLoggingFilter with MicroserviceFilterSupport { override def controllerNeedsLogging(controllerName: String): Boolean = ControllerConfiguration.paramsForController(controllerName).needsLogging } object NispFrontendAuditFilter extends FrontendAuditFilter with RunMode with AppName with MicroserviceFilterSupport { override lazy val maskedFormFields = Seq.empty override lazy val applicationPort = None override lazy val auditConnector = NispAuditConnector override def controllerNeedsAuditing(controllerName: String): Boolean = ControllerConfiguration.paramsForController(controllerName).needsAuditing override protected def mode: Mode = Play.current.mode override protected def runModeConfiguration: Configuration = Play.current.configuration override protected def appNameConfiguration: Configuration = Play.current.configuration }
Example 35
Source File: ServiceSpec.scala From daf with BSD 3-Clause "New" or "Revised" License | 5 votes |
import java.io.{File, FileNotFoundException, IOException} import java.net.ServerSocket import java.util.Base64 import it.gov.daf.entitymanager.Entity import it.gov.daf.entitymanager.client.Entity_managerClient import org.specs2.mutable.Specification import org.specs2.specification.BeforeAfterAll import play.api.Application import play.api.inject.guice.GuiceApplicationBuilder import play.api.libs.ws.ahc.AhcWSClient import play.api.test.WithServer import scala.concurrent.Await import scala.concurrent.duration.Duration import scala.util.{Failure, Random, Try} @SuppressWarnings( Array( "org.wartremover.warts.NonUnitStatements", "org.wartremover.warts.Throw", "org.wartremover.warts.Var" ) ) class ServiceSpec extends Specification with BeforeAfterAll { def getAvailablePort: Int = { try { val socket = new ServerSocket(0) try { socket.getLocalPort } finally { socket.close() } } catch { case e: IOException => throw new IllegalStateException(s"Cannot find available port: ${e.getMessage}", e) } } private def constructTempDir(dirPrefix: String): Try[File] = Try { val rndrange = 10000000 val file = new File(System.getProperty("java.io.tmpdir"), s"$dirPrefix${Random.nextInt(rndrange)}") if (!file.mkdirs()) throw new RuntimeException("could not create temp directory: " + file.getAbsolutePath) file.deleteOnExit() file } private def deleteDirectory(path: File): Boolean = { if (!path.exists()) { throw new FileNotFoundException(path.getAbsolutePath) } var ret = true if (path.isDirectory) path.listFiles().foreach(f => ret = ret && deleteDirectory(f)) ret && path.delete() } var tmpDir: Try[File] = Failure[File](new Exception("")) def application: Application = GuiceApplicationBuilder(). configure("pac4j.authenticator" -> "test"). configure("janusgraph.storage.directory" -> s"${tmpDir.map(_.getCanonicalPath).getOrElse("db")}/berkeleyje"). configure("janusgraph.index.search.directory" -> s"${tmpDir.map(_.getCanonicalPath).getOrElse("db")}/lucene"). build() "The entity_manager" should { "create an entity and retrieve it correctly" in new WithServer(app = application, port = getAvailablePort) { val ws: AhcWSClient = AhcWSClient() val plainCreds = "david:david" val plainCredsBytes = plainCreds.getBytes val base64CredsBytes = Base64.getEncoder.encode(plainCredsBytes) val base64Creds = new String(base64CredsBytes) val client = new Entity_managerClient(ws)(s"http://localhost:$port") val result = Await.result(client.createEntity(s"Basic $base64Creds", Entity("DAVID")), Duration.Inf) val entity = Await.result(client.getEntity(s"Basic $base64Creds", "DAVID"), Duration.Inf) entity must beEqualTo(Entity("DAVID")) } } override def beforeAll(): Unit = tmpDir = constructTempDir("test") override def afterAll(): Unit = tmpDir.foreach(deleteDirectory(_)) }
Example 36
Source File: ServiceSpec.scala From daf with BSD 3-Clause "New" or "Revised" License | 5 votes |
import java.io.{IOException, File => JFile} import java.net.ServerSocket import java.util.Base64 import it.gov.daf.securitymanager.client.Security_managerClient import org.specs2.mutable.Specification import play.api.Application import play.api.inject.guice.GuiceApplicationBuilder import play.api.libs.ws.ahc.AhcWSClient import play.api.libs.ws.{WSAuthScheme, WSResponse} import play.api.test.{WithServer, WsTestClient} import scala.concurrent.Await import play.api.libs.concurrent.Execution.Implicits.defaultContext import scala.concurrent.duration.Duration //@SuppressWarnings(Array("org.wartremover.warts.NonUnitStatements", "org.wartremover.warts.Throw")) class ServiceSpec extends Specification { def getAvailablePort: Int = { try { val socket = new ServerSocket(0) try { socket.getLocalPort } finally { socket.close() } } catch { case e: IOException => throw new IllegalStateException(s"Cannot find available port: ${e.getMessage}", e) } } def application: Application = GuiceApplicationBuilder(). configure("pac4j.authenticator" -> "test"). build() "The security_manager" should { "manage user tokens correctly" in new WithServer(app = application, port = getAvailablePort) { private val token = WsTestClient.withClient { implicit client => val response: WSResponse = Await.result[WSResponse](client. url(s"http://localhost:$port/security-manager/v1/token"). withAuth("david", "david", WSAuthScheme.BASIC). execute, Duration.Inf) response.body } val ws: AhcWSClient = AhcWSClient() val plainCreds = "david:david" val plainCredsBytes = plainCreds.getBytes val base64CredsBytes = Base64.getEncoder.encode(plainCredsBytes) val base64Creds = new String(base64CredsBytes) val client = new Security_managerClient(ws)(s"http://localhost:$port") val token2 = Await.result(client.token(s"Basic $base64Creds"), Duration.Inf) s""""$token2"""" must be equalTo token Await.result(client.token(s"Bearer $token2").map(token => s""""$token""""), Duration.Inf) must be equalTo token } } }
Example 37
Source File: PaymentsControllerSpec.scala From pertax-frontend with Apache License 2.0 | 5 votes |
package controllers import config.ConfigDecorator import connectors._ import controllers.auth.requests.UserRequest import controllers.auth.{AuthJourney, WithBreadcrumbAction} import models.CreatePayment import org.joda.time.DateTime import org.mockito.Matchers.any import org.mockito.Mockito.when import org.scalatestplus.mockito.MockitoSugar import play.api.Application import play.api.i18n.MessagesApi import play.api.inject.bind import play.api.mvc.{ActionBuilder, MessagesControllerComponents, Request, Result} import play.api.test.FakeRequest import play.api.test.Helpers.{redirectLocation, _} import uk.gov.hmrc.renderer.TemplateRenderer import uk.gov.hmrc.time.CurrentTaxYear import util.UserRequestFixture.buildUserRequest import util.{ActionBuilderFixture, BaseSpec} import scala.concurrent.{ExecutionContext, Future} class PaymentsControllerSpec extends BaseSpec with CurrentTaxYear with MockitoSugar { override def now: () => DateTime = DateTime.now lazy val fakeRequest = FakeRequest("", "") val mockPayConnector = mock[PayApiConnector] val mockAuthJourney = mock[AuthJourney] override implicit lazy val app: Application = localGuiceApplicationBuilder() .overrides( bind[PayApiConnector].toInstance(mockPayConnector), bind[AuthJourney].toInstance(mockAuthJourney) ) .build() def controller = new PaymentsController( mockPayConnector, mockAuthJourney, injected[WithBreadcrumbAction], injected[MessagesControllerComponents] )(mockLocalPartialRetriever, injected[ConfigDecorator], mock[TemplateRenderer], injected[ExecutionContext]) when(mockAuthJourney.authWithPersonalDetails).thenReturn(new ActionBuilderFixture { override def invokeBlock[A](request: Request[A], block: UserRequest[A] => Future[Result]): Future[Result] = block( buildUserRequest( request = request )) }) "makePayment" should { "redirect to the response's nextUrl" in { val expectedNextUrl = "someNextUrl" val createPaymentResponse = CreatePayment("someJourneyId", expectedNextUrl) when(mockPayConnector.createPayment(any())(any(), any())) .thenReturn(Future.successful(Some(createPaymentResponse))) val result = controller.makePayment()(FakeRequest()) status(result) shouldBe SEE_OTHER redirectLocation(result) shouldBe Some("someNextUrl") } "redirect to a BAD_REQUEST page if createPayment failed" in { when(mockPayConnector.createPayment(any())(any(), any())) .thenReturn(Future.successful(None)) val result = controller.makePayment()(FakeRequest()) status(result) shouldBe BAD_REQUEST } } }
Example 38
Source File: CatalogControllersSpec.scala From daf with BSD 3-Clause "New" or "Revised" License | 5 votes |
import java.io.IOException import java.net.ServerSocket import akka.actor.ActorSystem import akka.stream.ActorMaterializer import catalog_manager.yaml.MetaCatalog import org.specs2.mutable.Specification import play.api.Application import play.api.http.Status import play.api.routing.Router import play.api.inject.guice.GuiceApplicationBuilder import play.api.libs.json.{JsArray, JsValue, Json} import play.api.libs.ws.WSResponse import play.api.libs.ws.ahc.AhcWSClient import play.api.test._ import it.gov.daf.catalogmanager import it.gov.daf.catalogmanager.client.Catalog_managerClient import scala.concurrent.duration.Duration import scala.concurrent.{Await, Future} class CatalogControllersSpec extends Specification { def application: Application = GuiceApplicationBuilder().build() import catalog_manager.yaml.BodyReads.MetaCatalogReads "The catalog-manager" should { "Call catalog-manager/v1/dataset-catalogs return ok status" in new WithServer(app = application, port = 9000) { WsTestClient.withClient { implicit client => val response: WSResponse = Await.result[WSResponse](client. url(s"http://localhost:9001/catalog-manager/v1/dataset-catalogs"). execute, Duration.Inf) println(response.status) response.status must be equalTo Status.OK } } "Call catalog-manager/v1/dataset-catalogs return a non empty list if" + "you have error maybe is necessaty to add data to db" in new WithServer(app = application, port = 9000) { WsTestClient.withClient { implicit client => val response: WSResponse = Await.result[WSResponse](client. url(s"http://localhost:9001/catalog-manager/v1/dataset-catalogs"). execute, Duration.Inf) println(response.status) println("ALE") println(response.body) val json: JsValue = Json.parse(response.body) json.as[JsArray].value.size must be greaterThan (0) } } "The catalog-manager" should { "Call catalog-manager/v1/dataset-catalogs/{logical_uri} return ok status" in new WithServer(app = application, port = 9000) { val logicalUri = "daf://dataset/std/standard/standard/uri_cultura/standard" val url = s"http://localhost:9001/catalog-manager/v1/dataset-catalogs/$logicalUri" println(url) WsTestClient.withClient { implicit client => val response: WSResponse = Await.result[WSResponse](client. url(url). execute, Duration.Inf) println(response.status) response.status must be equalTo Status.OK } } } "The catalog-manager" should { "Call catalog-manager/v1/dataset-catalogs/{anything} return 401" in new WithServer(app = application, port = 9000) { val logicalUri = "anything" val url = s"http://localhost:9001/catalog-manager/v1/dataset-catalogs/$logicalUri" println(url) WsTestClient.withClient { implicit client => val response: WSResponse = Await.result[WSResponse](client. url(url). execute, Duration.Inf) println(response.status) response.status must be equalTo 401 } } } } }
Example 39
Source File: TOCApplicationLoader.scala From play-table-of-contents with MIT License | 5 votes |
import akka.actor.ActorSystem import com.typesafe.config.ConfigFactory import context.MyExecutionContext import play.api.routing.Router import play.api.{Application, ApplicationLoader, BuiltInComponentsFromContext} import com.softwaremill.macwire._ import router.Routes class TOCApplicationLoader extends ApplicationLoader{ def load(context: ApplicationLoader.Context): Application = { val exeContext = new MyExecutionContext(ActorSystem("tocActor", ConfigFactory.load())) new TOCComponents(exeContext,context).application } } class TOCComponents(ec: MyExecutionContext, context: ApplicationLoader.Context) extends BuiltInComponentsFromContext(context) with play.filters.HttpFiltersComponents with _root_.controllers.AssetsComponents{ lazy val tableOfContentController = wire[controllers.TableOfContentController] // add the prefix string in local scope for the Routes constructor val prefix: String = "/" lazy val router: Router = wire[Routes] }
Example 40
Source File: ApplicationTestBase.scala From smui with Apache License 2.0 | 5 votes |
package models import models.rules._ import org.scalatest.{BeforeAndAfterAll, Suite} import play.api.{Application, Mode} import play.api.db.{Database, Databases} import play.api.inject.Injector import play.api.inject.guice.GuiceApplicationBuilder trait ApplicationTestBase extends BeforeAndAfterAll { self: Suite => protected lazy val db: Database = Databases.inMemory() // Use logging settings from logback-test.xml for test application System.setProperty("logger.resource", "logback-test.xml") protected lazy val application: Application = new GuiceApplicationBuilder(). in(Mode.Test). configure("db.default.url" -> db.url, "db.default.driver" -> "org.h2.Driver", "db.default.username" -> "", "db.default.password" -> "", "toggle.rule-deployment.log-rule-id" -> true). build() protected lazy val injector: Injector = application.injector protected lazy val repo: SearchManagementRepository = injector.instanceOf[SearchManagementRepository] protected val (core1Id, core2Id) = (SolrIndexId(), SolrIndexId()) protected def createTestCores(): Unit = { repo.addNewSolrIndex(SolrIndex(core1Id, "core1", "First core")) repo.addNewSolrIndex(SolrIndex(core2Id, "core2", "Second core")) } protected def createTestRule(): Seq[SearchInputId] = { val synonymRules = List (SynonymRule(SynonymRuleId(), 0, "mercury", isActive = true)) val upDownRules = List( UpDownRule(UpDownRuleId(), UpDownRule.TYPE_UP, 10, "notebook", isActive = true), UpDownRule(UpDownRuleId(), UpDownRule.TYPE_UP, 10, "lenovo", isActive = false), UpDownRule(UpDownRuleId(), UpDownRule.TYPE_DOWN, 10, "battery", isActive = true) ) val deleteRules = List(DeleteRule(DeleteRuleId(), "freddy", isActive = true)) val filterRules = List(FilterRule(FilterRuleId(), "zz top", isActive = true)) val id = repo.addNewSearchInput(core1Id, "aerosmith", Seq.empty) val searchInput = SearchInputWithRules(id, "aerosmith", synonymRules, upDownRules, filterRules, isActive = true, comment = "") repo.updateSearchInput(searchInput) val shippingId = repo.addNewSearchInput(core1Id, "shipping", Seq.empty) val redirectRule = RedirectRule(RedirectRuleId(), "http://xyz.com/shipping", isActive = true) val searchInputForRedirect = SearchInputWithRules(shippingId, "shipping", redirectRules = List(redirectRule), isActive = true, comment = "") repo.updateSearchInput(searchInputForRedirect) Seq(id, shippingId) } override protected def afterAll(): Unit = { application.stop() db.shutdown() } }
Example 41
Source File: AppContext.scala From vat-api with Apache License 2.0 | 5 votes |
package uk.gov.hmrc.vatapi.config import com.typesafe.config.ConfigFactory import javax.inject.{Inject, Singleton} import play.api.Application import uk.gov.hmrc.play.bootstrap.config.ServicesConfig import uk.gov.hmrc.vatapi.auth.VATAuthEnrolments @Singleton class AppContext @Inject()(config: ServicesConfig, application: Application) extends FixedConfig { //API Platform Config lazy val appName: String = config.getString("appName") lazy val appUrl: String = config.getString("appUrl") lazy val apiGatewayContext: String = config.getString("api.gateway.context") lazy val apiGatewayRegistrationContext: String = apiGatewayContext lazy val apiGatewayLinkContext: String = apiGatewayContext lazy val registrationEnabled: Boolean = application.configuration.getOptional[Boolean](s"microservice.services.service-locator.enabled").getOrElse(true) lazy val serviceLocatorUrl: String = config.baseUrl("service-locator") //DES Config lazy val desEnv: String = config.getString(s"microservice.services.des.env") lazy val desToken: String = config.getString(s"microservice.services.des.token") lazy val desUrl: String = config.baseUrl("des") //NRS Config lazy val nrsServiceUrl: String = config.baseUrl("non-repudiation") lazy val xApiKey: String = config.getString(s"access-keys.xApiKey") lazy val nrsMaxTimeoutMillis: Int = config.getInt(s"microservice.services.non-repudiation.maxTimeout") lazy val featureSwitch: String = config.getString(s"feature-switch") lazy val vatAuthEnrolments: VATAuthEnrolments = VATAuthEnrolments(config.getString(s"enrolments.key"), config.getString(s"enrolments.identifier"), config.getConfString(s"enrolments.authRule", "mtd-vat-auth")) def apiStatus(version: String): String = config.getString(s"api.$version.status") } trait FixedConfig { val mtdDate = ConfigFactory.load().getString("mtd-date") }
Example 42
Source File: IntegrationBaseSpec.scala From vat-api with Apache License 2.0 | 5 votes |
package support import org.scalatest.{BeforeAndAfterAll, BeforeAndAfterEach} import org.scalatestplus.play.guice.GuiceOneServerPerSuite import play.api.inject.guice.GuiceApplicationBuilder import play.api.libs.json.{JsValue, Json} import play.api.libs.ws.{WSClient, WSRequest, WSResponse} import play.api.{Application, Environment, Mode} trait IntegrationBaseSpec extends UnitSpec with WireMockHelper with GuiceOneServerPerSuite with BeforeAndAfterEach with BeforeAndAfterAll { val mockHost: String = WireMockHelper.host val mockPort: String = WireMockHelper.wireMockPort.toString lazy val client: WSClient = app.injector.instanceOf[WSClient] def servicesConfig: Map[String, Any] = Map( "microservice.services.des.host" -> mockHost, "microservice.services.des.port" -> mockPort, "microservice.services.auth.host" -> mockHost, "microservice.services.auth.port" -> mockPort, "auditing.consumer.baseUri.port" -> mockPort, "microservice.services.non-repudiation.host" -> mockHost, "microservice.services.non-repudiation.port" -> mockPort, "feature-switch.refactor.enabled" -> true, "feature-switch.refactor.prod.enabled" -> false, "microservice.services.non-repudiation.maxTimeout" -> 5000 ) override implicit lazy val app: Application = new GuiceApplicationBuilder() .in(Environment.simple(mode = Mode.Dev)) .configure(servicesConfig) .build() override def beforeAll(): Unit = { super.beforeAll() startWireMock() } override def afterAll(): Unit = { stopWireMock() super.afterAll() } def buildRequest(path: String): WSRequest = client.url(s"http://localhost:$port$path").withFollowRedirects(false) def document(response: WSResponse): JsValue = Json.parse(response.body) }
Example 43
Source File: BaseFunctionalSpec.scala From vat-api with Apache License 2.0 | 5 votes |
package uk.gov.hmrc.support import org.scalatestplus.play.guice.GuiceOneServerPerSuite import play.api.Application import play.api.inject.guice.GuiceApplicationBuilder import play.api.libs.ws.{WSClient, WSRequest} import uk.gov.hmrc.domain.Vrn import uk.gov.hmrc.vatapi.{TestApplication, VrnGenerator} import scala.collection.mutable trait BaseFunctionalSpec extends TestApplication with WireMockHelper with GuiceOneServerPerSuite{ protected val vrn: Vrn = VrnGenerator().nextVrn() implicit val urlPathVariables: mutable.Map[String, String] = mutable.Map() lazy val client: WSClient = app.injector.instanceOf[WSClient] override lazy val app: Application = new GuiceApplicationBuilder().configure(Map( "auditing.consumer.baseUri.host" -> "localhost", "auditing.consumer.baseUri.port" -> 22222, "microservice.services.des.host" -> mockHost, "microservice.services.des.port" -> mockPort, "microservice.services.auth.host" -> mockHost, "microservice.services.auth.port" -> mockPort, "auditing.consumer.baseUri.port" -> mockPort, "access-keys.xApiKey" -> "dummy-api-key", "microservice.services.non-repudiation.host" -> mockHost, "microservice.services.non-repudiation.port" -> mockPort, "feature-switch.refactor.enabled" -> false, "feature-switch.refactor.prod.enabled" -> false )).build() def when() = new HttpVerbs()(urlPathVariables, timeout) def given() = new Givens(when()) def buildRequest(path: String): WSRequest = client.url(s"http://localhost:$port$path").withFollowRedirects(false) }
Example 44
Source File: FinancialDataQueryParamsSpec.scala From vat-api with Apache License 2.0 | 5 votes |
package uk.gov.hmrc.vatapi.models import org.joda.time.LocalDate import org.scalatest.TestData import org.scalatestplus.play.guice.GuiceOneAppPerTest import play.api.Application import play.api.inject.guice.GuiceApplicationBuilder import uk.gov.hmrc.vatapi.UnitSpec class FinancialDataQueryParamsSpec extends UnitSpec with GuiceOneAppPerTest { val testTime: LocalDate = LocalDate.now() implicit override def newAppForTest(testData: TestData): Application = new GuiceApplicationBuilder().configure(Map(s"Test.mtd-date" -> testTime.minusYears(10).toString)).build() "DateRangeQueryParams" should { "return an object when all the date range is within 1 year" in { val response = FinancialDataQueryParams.from(Some(Right(testTime.minusYears(1).toString)), Some(Right(testTime.minusDays(1).toString))) response.isRight shouldBe true response.right.get.from shouldEqual LocalDate.parse(testTime.minusYears(1).toString) response.right.get.to shouldEqual LocalDate.parse(testTime.minusDays(1).toString) } "return an error when the date range is greater than one year" in { val response = FinancialDataQueryParams.from(Some(Right(testTime.minusYears(1).toString)), Some(Right(testTime.toString))) response.isLeft shouldBe true response.left.get shouldBe "DATE_RANGE_INVALID" } "return error when the from date query parameter is missing" in { val response = FinancialDataQueryParams.from(None, Some(Right("2019-03-31"))) response.isLeft shouldBe true response.left.get shouldBe "DATE_FROM_INVALID" } "return error when the from date query parameter is not a valid date" in { val response = FinancialDataQueryParams.from(Some(Right("ABC")), Some(Right("2019-03-31"))) response.isLeft shouldBe true response.left.get shouldBe "DATE_FROM_INVALID" } "return error when the from date query parameter is before mtd-date in Config" in { val response = FinancialDataQueryParams.from(Some(Right(testTime.minusYears(11).toString)), Some(Right(testTime.minusYears(10).toString))) response.isLeft shouldBe true response.left.get shouldBe "DATE_FROM_INVALID" } "return error when the to date query parameter is missing" in { val response = FinancialDataQueryParams.from(Some(Right("2019-03-31")), None) response.isLeft shouldBe true response.left.get shouldBe "DATE_TO_INVALID" } "return error when the to date query parameter is not a valid date" in { val response = FinancialDataQueryParams.from(Some(Right("2019-03-31")), Some(Right("ABC"))) response.isLeft shouldBe true response.left.get shouldBe "DATE_TO_INVALID" } "return error when the to date query parameter is a future date" in { val futureDate = LocalDate.now().plusDays(1) val response = FinancialDataQueryParams.from(Some(Right("2019-03-31")), Some(Right(futureDate.toString("yyyy-MM-dd")))) response.isLeft shouldBe true response.left.get shouldBe "DATE_TO_INVALID" } s"return error when from date is after to date" in { val response = FinancialDataQueryParams.from(Some(Right(testTime.minusYears(1).toString)), Some(Right(testTime.minusYears(1).minusDays(1).toString))) response.isLeft shouldBe true response.left.get shouldBe "DATE_RANGE_INVALID" } } }
Example 45
Source File: ErrorHandler.scala From Aton with GNU General Public License v3.0 | 5 votes |
import com.google.inject.Inject import play.api.{Application, Play} import play.api.http.{DefaultHttpErrorHandler, HttpErrorHandler, Status} import play.api.mvc.{RequestHeader, Result, Results} import views.html.index import scala.concurrent.Future class ErrorHandler @Inject()(errorHandler: DefaultHttpErrorHandler) extends HttpErrorHandler { override def onClientError(request: RequestHeader, statusCode: Int, message: String): Future[Result] = { statusCode match { case clientError if statusCode > 400 && statusCode < 500 => Future.successful(Results.NotFound(index("Aton"))) case _ => Future.successful(Results.ServiceUnavailable("Unexpected error happened")) } } override def onServerError(request: RequestHeader, exception: Throwable): Future[Result] = { errorHandler.onServerError(request,exception) } }
Example 46
Source File: ThingsControllerSpec.scala From swagger-check with MIT License | 5 votes |
package controllers import java.util.UUID import dal.ThingsRepository import de.leanovate.swaggercheck.playhelper._ import de.leanovate.swaggercheck.schema.model.ValidationSuccess import models.{Thing, ThingType} import org.scalacheck.{Arbitrary, Gen} import org.specs2.ScalaCheck import org.specs2.mock.Mockito import play.api.Application import play.api.inject.bind import play.api.inject.guice.GuiceApplicationBuilder import play.api.test._ import support.{Arbitraries, ThingApi} import scala.concurrent.Future class ThingsControllerSpec extends PlaySpecification with ScalaCheck with ThingApi with Mockito with Arbitraries{ "ThingController" should { "support all /things routes" in { implicit val arbitraryRequest = Arbitrary[PlayOperationVerifier](swaggerCheck.operationVerifier()) val app = testApp() prop { requestVerifier: PlayOperationVerifier => val Some(result) = route(app, requestVerifier.request) status(result) must between(200, 300) requestVerifier.responseVerifier.verify(result) must be equalTo ValidationSuccess } } } def testApp(): Application = { val mockThingsRepository = mock[ThingsRepository] mockThingsRepository.getPage(any[Option[ThingType.Value]], any[Int], any[Int]) answers { _ => Future.successful(Gen.nonEmptyListOf(Arbitrary.arbitrary[Thing]).sample.getOrElse(Seq.empty)) } mockThingsRepository.getById(any[UUID]) answers { _ => Future.successful(Arbitrary.arbitrary[Thing].sample)} new GuiceApplicationBuilder() .overrides(bind[ThingsRepository].toInstance(mockThingsRepository)) .build() } }
Example 47
Source File: UsersControllerSpec.scala From play-quill-jdbc with MIT License | 5 votes |
package controllers import org.scalatest.TestData import org.scalatestplus.play.{OneAppPerTest, PlaySpec} import play.api.Application import play.api.libs.json.Json import play.api.test.FakeRequest import play.api.test.Helpers._ import models.{User, Users} import test._ import scala.util.Random class UsersControllerSpec extends PlaySpec with OneAppPerTest { override def newAppForTest(testData: TestData): Application = fakeApp "GET /users/:id" should { "return 200 OK with body" in { val users = app.injector.instanceOf(classOf[Users]) val name = s"Name${Random.nextLong()}" val user = users.create(User(0, name, true)) val response = route(app, FakeRequest(GET, s"/users/${user.id}")).get status(response) mustBe OK val json = contentAsJson(response) (json \ "name").as[String] mustBe user.name } } "POST /users" should { "return 201 Created with Location header with created resource" in { val name = s"Name${Random.nextLong()}" val userJson = Json.obj("name" -> name, "isActive" -> true) val responseCreated = route(app, FakeRequest(POST, "/users").withJsonBody(userJson)).get status(responseCreated) mustBe CREATED val location = headers(responseCreated).get(LOCATION).get val responseGet = route(app, FakeRequest(GET, location)).get val json = contentAsJson(responseGet) (json \ "name").as[String] mustBe name } } "DELETE /users/:id" should { "return 204 No Content and delete resource" in { val users = app.injector.instanceOf(classOf[Users]) val name = s"Name${Random.nextLong()}" val user = users.create(User(0, name, true)) val response = route(app, FakeRequest(DELETE, s"/users/${user.id}")).get status(response) mustBe NO_CONTENT users.find(user.id) mustBe empty } } "PUT /users/:id" should { "return 204 No Content and update resource" in { val users = app.injector.instanceOf(classOf[Users]) val name = s"Name${Random.nextLong()}" val user = users.create(User(0, name, true)) val updatedName = s"Name${Random.nextLong()}" val updateUserJson = Json.obj("name" -> updatedName, "isActive" -> true) val response = route(app, FakeRequest(PUT, s"/users/${user.id}").withJsonBody(updateUserJson)).get status(response) mustBe NO_CONTENT val updatedUser = users.find(user.id) updatedUser.get.name mustBe updatedName } } }