|
Play Framework/Scala example source code file (ServerSSLEngineSpec.scala)
The ServerSSLEngineSpec.scala Play Framework example source code
/*
*
* * Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
*
*/
package play.core.server.ssl
import org.specs2.mutable.{After, Specification}
import org.specs2.mock.Mockito
import org.specs2.specification.Scope
import play.core.ApplicationProvider
import scala.util.Failure
import java.io.File
import javax.net.ssl.SSLEngine
import play.server.api.SSLEngineProvider
class WrongSSLEngineProvider {}
class RightSSLEngineProvider(appPro: ApplicationProvider) extends SSLEngineProvider with Mockito {
override def createSSLEngine: SSLEngine = {
require(appPro != null)
mock[SSLEngine]
}
}
class JavaSSLEngineProvider(appPro: play.server.ApplicationProvider) extends play.server.SSLEngineProvider with Mockito {
override def createSSLEngine: SSLEngine = {
require(appPro != null)
mock[SSLEngine]
}
}
class ServerSSLEngineSpec extends Specification with Mockito {
sequential
trait ApplicationContext extends Mockito with Scope {
val applicationProvider = mock[ApplicationProvider]
applicationProvider.get returns Failure(new Exception("no app"))
}
trait TempConfDir extends After {
val tempDir = File.createTempFile("ServerSSLEngine", ".tmp")
tempDir.delete()
val confDir = new File(tempDir, "conf")
confDir.mkdirs()
def after = {
confDir.listFiles().foreach(f => f.delete())
tempDir.listFiles().foreach(f => f.delete())
tempDir.delete()
}
}
val javaAppProvider = mock[play.core.ApplicationProvider]
"ServerSSLContext" should {
"default create a SSL engine suitable for development" in new ApplicationContext with TempConfDir {
applicationProvider.path returns tempDir
System.clearProperty("play.http.sslengineprovider")
ServerSSLEngine.createSSLEngineProvider(applicationProvider).createSSLEngine() should beAnInstanceOf[SSLEngine]
}
"fail to load a non existing SSLEngineProvider" in new ApplicationContext {
System.setProperty("play.http.sslengineprovider", "bla bla")
ServerSSLEngine.createSSLEngineProvider(applicationProvider) should throwA[ClassNotFoundException]
}
"fail to load an existing SSLEngineProvider with the wrong type" in new ApplicationContext {
System.setProperty("play.http.sslengineprovider", classOf[WrongSSLEngineProvider].getName)
ServerSSLEngine.createSSLEngineProvider(applicationProvider) should throwA[ClassCastException]
}
"load a custom SSLContext from a SSLEngineProvider" in new ApplicationContext {
System.setProperty("play.http.sslengineprovider", classOf[RightSSLEngineProvider].getName)
ServerSSLEngine.createSSLEngineProvider(applicationProvider).createSSLEngine() should beAnInstanceOf[SSLEngine]
}
"load a custom SSLContext from a java SSLEngineProvider" in new ApplicationContext {
System.setProperty("play.http.sslengineprovider", classOf[JavaSSLEngineProvider].getName)
ServerSSLEngine.createSSLEngineProvider(applicationProvider).createSSLEngine() should beAnInstanceOf[SSLEngine]
}
}
}
Other Play Framework source code examplesHere is a short list of links related to this Play Framework ServerSSLEngineSpec.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.