Skip to content

Commit

Permalink
tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kamenitxan committed Jul 13, 2024
1 parent 1ceb639 commit 619febe
Show file tree
Hide file tree
Showing 7 changed files with 96 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ object DeployDirector {

val servers: List[Server] = {
implicit val conn: Connection = DBHelper.getConnection
val source = Source.fromFile("servers.json")
try {
val gson = new Gson()
import java.util
val listType: Type = new TypeToken[util.ArrayList[Server]]() {}.getType
// TODO: close source
val s = gson.fromJson(Source.fromFile("servers.json").mkString, listType).asInstanceOf[util.ArrayList[Server]]
val s = gson.fromJson(source.mkString, listType).asInstanceOf[util.ArrayList[Server]]
val b = s.asScala.zipWithIndex
.map(zi => {
val id = zi._2 + 1
Expand All @@ -47,6 +47,7 @@ object DeployDirector {
List[Server]()
} finally {
conn.close()
source.close()
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ package cz.kamenitxan.jakon.core.dynamic

import com.google.gson.{Gson, GsonBuilder}
import cz.kamenitxan.jakon.core.dynamic.arguments.{CirceJsonParser, ParsedValue}
import cz.kamenitxan.jakon.utils.gson.{GsonMapSerializer, GsonOptionSerializer, GsonSeqSerializer, GsonZonedDateTimeDeserializer, GsonZonedDateTimeSerializer, IntegerTypeAdapter}
import cz.kamenitxan.jakon.utils.gson.{GsonLocalDateTimeSerializer, GsonMapSerializer, GsonOptionSerializer, GsonSeqSerializer, GsonZonedDateTimeDeserializer, GsonZonedDateTimeSerializer, IntegerTypeAdapter}
import io.circe.*
import io.circe.generic.auto.*
import io.circe.parser.*
import spark.Request

import java.lang.reflect.Field
import java.time.ZonedDateTime
import java.time.{LocalDateTime, ZonedDateTime}

/**
* Created by TPa on 13.04.2020.
Expand All @@ -22,6 +22,7 @@ abstract class AbstractJsonPagelet {
.registerTypeAdapter(classOf[Map[Any,Any]], new GsonMapSerializer[Any,Any])
.registerTypeAdapter(classOf[ZonedDateTime], new GsonZonedDateTimeDeserializer)
.registerTypeAdapter(classOf[ZonedDateTime], new GsonZonedDateTimeSerializer)
.registerTypeAdapter(classOf[LocalDateTime], new GsonLocalDateTimeSerializer)
.registerTypeAdapter(classOf[java.lang.Integer], new IntegerTypeAdapter)
.create()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.google.gson.Gson
import jakontest.core.pagelet.entity.GetResponse
import cz.kamenitxan.jakon.core.dynamic.JsonPageletInitializer
import cz.kamenitxan.jakon.core.dynamic.entity.{JsonErrorResponse, JsonFailResponse, ResponseStatus}
import cz.kamenitxan.jakon.logging.Logger
import org.scalatest.DoNotDiscover
import jakontest.test.JsonHelper.*
import jakontest.test.TestBase
Expand Down Expand Up @@ -157,6 +158,34 @@ class JsonPageletTest extends TestBase {
assert(resp.data.toString.contains("test_json_pagelet"))
}

test("example json pagelet - get typed response") { f =>
JsonPageletInitializer.initControllers(Seq(classOf[TestJsonPagelet]))

val url = host + s"${prefix}getTyped"
f.driver.get(url)

val resp = f.driver.getPageSource

Logger.error(resp)

assert(resp.contains("\"msg\": \"msg\""))
assert(resp.contains("\"num\": 1"))
assert(resp.contains("a"))
assert(resp.contains("b"))
assert(resp.contains("18"))
assert(resp.contains("19"))
assert(resp.contains("\"optStr\": \"optStr\""))
assert(resp.contains("\"optInt\": 75,"))
assert(resp.contains("\"localDateTime\": \"2024-07-13T00:00\""))
assert(resp.contains("\"zonedDateTimeData\": \"2024-07-13T00:00Z\""))
assert(resp.contains("\"integer\": 1"))
assert(resp.contains("key"))
assert(resp.contains("value"))
assert(!resp.contains("optStrEmpty"))
assert(!resp.contains("integerNull"))

}


private def getResponse[T](request: HttpRequest, responseType: Class[T] = classOf[GetResponse]): T = {
val response: HttpResponse[String] = httpClient.send(request, BodyHandlers.ofString)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package jakontest.core.pagelet

import jakontest.core.pagelet.entity.OldTestJsonPageletData
import jakontest.core.pagelet.entity.TestJsonPageletData
import cz.kamenitxan.jakon.core.dynamic.entity.JsonFailResponse
import jakontest.core.pagelet.entity.{OldTestJsonPageletData, SingleTestResponse, TestJsonPageletData, TypedTestResponseData}
import cz.kamenitxan.jakon.core.dynamic.entity.{AbstractJsonResponse, JsonFailResponse}
import cz.kamenitxan.jakon.core.dynamic.{AbstractJsonPagelet, Get, JsonPagelet, Post}
import cz.kamenitxan.jakon.utils.Utils._
import cz.kamenitxan.jakon.utils.Utils.*
import spark.{Request, Response}

import java.sql.Connection
import java.time.{LocalDateTime, ZoneId, ZonedDateTime}

/**
* Created by TPa on 13.04.2020.
Expand Down Expand Up @@ -60,4 +60,23 @@ class TestJsonPagelet extends AbstractJsonPagelet {
def postValidate(req: Request, res: Response, data: TestJsonPageletData): String = {
"validation_ok"
}

@Get(path = "/getTyped")
def getTyped(req: Request, res: Response): AbstractJsonResponse[_ <: Any] = {
val data = TypedTestResponseData(
"msg",
1,
Seq("a", "b"),
Seq(18, 19),
Some("optStr"),
Option.empty,
Some(75),
LocalDateTime.of(2024, 7, 13, 0, 0),
ZonedDateTime.of(2024, 7, 13, 0, 0, 0, 0, ZoneId.of("UTC")),
1,
null,
Map("key" -> "value")
)
SingleTestResponse(data)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package jakontest.core.pagelet.entity

import cz.kamenitxan.jakon.core.dynamic.entity.{AbstractJsonResponse, ResponseStatus}

import java.time.{LocalDateTime, ZonedDateTime}


case class SingleTestResponse[T](single: T) extends AbstractJsonResponse[T](ResponseStatus.success, single)


/**
* Created by Kamenitxan on 13.07.2024
*/
case class TypedTestResponseData(
msg: String,
num: Int,
seqStr: Seq[String],
seqInt: Seq[Int],
optStr: Option[String],
optStrEmpty: Option[String],
optInt: Option[Int],
localDateTime: LocalDateTime,
zonedDateTimeData: ZonedDateTime,
integer: Integer,
integerNull: Integer,
map: Map[String, String],
)
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import cz.kamenitxan.jakon.utils.security.oauth.Google.createAuthUrl
import cz.kamenitxan.jakon.utils.security.oauth.{OauthInfo, OauthProvider}
import cz.kamenitxan.jakon.webui.entity.{Message, MessageSeverity}
import jakarta.servlet.http.HttpServletRequest
import jakontest.test.{TestBase, TestHttpServletRequest}
import org.scalatest.DoNotDiscover
import spark.Request
import jakontest.test.{TestBase, TestHttpServletRequest}

import java.sql.Connection

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ package jakontest.utils

import cz.kamenitxan.jakon.Main
import cz.kamenitxan.jakon.core.model.{JakonObject, JakonUser}
import cz.kamenitxan.jakon.utils.Utils._
import cz.kamenitxan.jakon.utils.Utils.*
import cz.kamenitxan.jakon.utils.security.RandomString
import cz.kamenitxan.jakon.utils.{TypeReferences, Utils}
import org.scalatest.DoNotDiscover
import org.scalatest.funsuite.AnyFunSuite
Expand Down Expand Up @@ -55,4 +56,12 @@ class UtilsUnitTest extends AnyFunSuite {
assert(TypeReferences.STRING != null)
}

test("test random string generator") {
val randomStringGen = new RandomString()
val s1 = randomStringGen.nextString()
val s2 = randomStringGen.nextString()
assert(s1.length == 21)
assert(s1 != s2)
}

}

0 comments on commit 619febe

Please sign in to comment.