mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-05 21:15:49 +01:00
Integration test for Web API (#2578)
This commit is contained in:
66
src/test/scala/gitbucket/core/TestingGitBucketServer.scala
Normal file
66
src/test/scala/gitbucket/core/TestingGitBucketServer.scala
Normal file
@@ -0,0 +1,66 @@
|
||||
package gitbucket.core
|
||||
|
||||
import java.net.InetSocketAddress
|
||||
import java.nio.file.Files
|
||||
import java.io.File
|
||||
|
||||
import gitbucket.core.util.{FileUtil, HttpClientUtil}
|
||||
import org.apache.http.client.methods.HttpGet
|
||||
import org.eclipse.jetty.server.handler.StatisticsHandler
|
||||
import org.eclipse.jetty.server.{Handler, Server}
|
||||
import org.eclipse.jetty.webapp.WebAppContext
|
||||
import org.kohsuke.github.GitHub
|
||||
|
||||
class TestingGitBucketServer(val port: Int = 19999) extends AutoCloseable {
|
||||
private var server: Server = null
|
||||
private var dir: File = null
|
||||
|
||||
start()
|
||||
|
||||
private def start(): Unit = {
|
||||
System.setProperty("java.awt.headless", "true")
|
||||
|
||||
dir = Files.createTempDirectory("gitbucket-test-").toFile
|
||||
System.setProperty("gitbucket.home", dir.getAbsolutePath)
|
||||
|
||||
val address = new InetSocketAddress(port)
|
||||
server = new Server(address)
|
||||
|
||||
val context = new WebAppContext
|
||||
context.setResourceBase("./target/webapp")
|
||||
context.setContextPath("")
|
||||
context.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false")
|
||||
context.setServer(server)
|
||||
|
||||
val handler = addStatisticsHandler(context)
|
||||
server.setHandler(handler)
|
||||
|
||||
server.start()
|
||||
|
||||
HttpClientUtil.withHttpClient(None) { httpClient =>
|
||||
var launched = false
|
||||
var count = 0
|
||||
while (!launched && count < 10) {
|
||||
Thread.sleep(500)
|
||||
val res = httpClient.execute(new HttpGet(s"http://localhost:${port}/"))
|
||||
launched = res.getStatusLine.getStatusCode == 200
|
||||
count += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def client(login: String, password: String): GitHub =
|
||||
GitHub.connectToEnterprise(s"http://localhost:${port}/api/v3", login, password)
|
||||
|
||||
private def addStatisticsHandler(handler: Handler) = { // The graceful shutdown is implemented via the statistics handler.
|
||||
// See the following: https://bugs.eclipse.org/bugs/show_bug.cgi?id=420142
|
||||
val statisticsHandler = new StatisticsHandler
|
||||
statisticsHandler.setHandler(handler)
|
||||
statisticsHandler
|
||||
}
|
||||
|
||||
def close(): Unit = {
|
||||
server.stop()
|
||||
FileUtil.deleteIfExists(dir)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user