Probando una aplicación Play2 con SecureSocial usando inyección de dependencia

Muchas gracias por cualquier orientación!

El complemento SecureSocial funciona bien cuando lo ejecuto desde el navegador, pero me gustaría poder probar el resto de mi aplicación Play ahora.

Introducción rápida

La sintaxis de SecureSocial se ve así:

def page = SecuredAction(WithProvider("google")) { ... }

o esto:

def page = UserAwareAction { ... }

he estado mirandoaquí, que parece ser la única pregunta sobre Stack Overflow, incluso remotamente relacionada con mi problema con SecureSocial, pero no me gusta volver a cablear bytecode. Debería haber una solución más simple a esto.

Cuando estoy ejecutando pruebas que acceden a las acciones protegidas de SecureSocial, recibo un gran error que supongo que básicamente significa que no estoy pasando un usuario. (ver la parte inferior de esta pregunta)

Que me gustaria hacer

Inyecta todas las funciones para devolver un tipo.Action en lugar deSecuredAction oUserAwareAction solo durante la prueba

O en realidad pasar en un usuario de prueba a la llamada.¿Pero cómo?

Lo que tengo
@Singleton
class JsonOps @Inject() () extends Controller with SecureSocial {...}

A Global.scala escrito como se describeaquí y en mi prueba ...

val controller = new JsonOps
val result = controller.userAwareActionRequestForSomeJson("")(FakeRequest())

También tengo llamadas como esta:

// This is what I would use for production
def extjs = SecuredAction(WithProvider("google")) { implicit request =>
   Ok(views.html.extjs(request.user.firstName))
}
// This is what I would use for testing
def extjs = Action { implicit request =>
  Ok(views.html.extjs("testtesttesting"))
}

¿Por eso creo que este problema podría ser adecuado para la inyección de dependencia? Sin embargo, no estoy seguro de cómo haría la creación de instancias de clase, ya que Global.scala que estoy usando es un generador de clase genérico. Tampoco deseo particularmente escribir más de 9000 rasgos para cada controlador que tengo.

El gran error

Esta es la línea UserOpsSpec.scala línea 12 y 13:

12  val controller = new UserOps
13  val result = controller.extjs()(FakeRequest())

y este es el error

[error]     RuntimeException: java.lang.ExceptionInInitializerError (UserOpsSpec.scala:13)
[error] play.api.mvc.ActionBuilder$anon$1.apply(Action.scala:220)
[error] securesocial.core.SecureSocial$.authenticatorFromRequest(SecureSocial.scala:200)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:81)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:78)
[error] play.api.mvc.ActionBuilder$anon$1.apply(Action.scala:215)
[error] play.api.Play$anonfun$current$1.apply(Play.scala:51)
[error] play.api.Play$anonfun$current$1.apply(Play.scala:51)
[error] play.api.Play$.current(Play.scala:51)
[error] securesocial.core.Authenticator$.cookieName$lzycompute(Authenticator.scala:188)
[error] securesocial.core.Authenticator$.cookieName(Authenticator.scala:188)
[error] securesocial.core.Authenticator$.<init>(Authenticator.scala:201)
[error] securesocial.core.Authenticator$.<clinit>(Authenticator.scala)
[error] securesocial.core.SecureSocial$.authenticatorFromRequest(SecureSocial.scala:200)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:81)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:78)
[error] play.api.mvc.ActionBuilder$anon$1.apply(Action.scala:215)
[error] null
[error] securesocial.core.SecureSocial$.authenticatorFromRequest(SecureSocial.scala:200)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:81)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:78)
[error] play.api.mvc.ActionBuilder$anon$1.apply(Action.scala:215)
[error] There is no started application
[error] play.api.Play$anonfun$current$1.apply(Play.scala:51)
[error] play.api.Play$anonfun$current$1.apply(Play.scala:51)
[error] play.api.Play$.current(Play.scala:51)
[error] securesocial.core.Authenticator$.cookieName$lzycompute(Authenticator.scala:188)
[error] securesocial.core.Authenticator$.cookieName(Authenticator.scala:188)
[error] securesocial.core.Authenticator$.<init>(Authenticator.scala:201)
[error] securesocial.core.Authenticator$.<clinit>(Authenticator.scala)
[error] securesocial.core.SecureSocial$.authenticatorFromRequest(SecureSocial.scala:200)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:81)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:78)
[error] play.api.mvc.ActionBuilder$anon$1.apply(Action.scala:215)
[info]

Respuestas a la pregunta(1)

Su respuesta a la pregunta