Skip to content
Snippets Groups Projects
Commit ff3fdf04 authored by Clément Pit-Claudel's avatar Clément Pit-Claudel
Browse files

tests: Simplify decorators suite

parent 79b1d16b
Branches
Tags
No related merge requests found
package cs214.webapp.server.web
import cask.router.Result
import cask.model.Request
import io.undertow.util.Headers
import cask.endpoints.WebsocketResult
import io.undertow.server.HttpServerExchange
class DecoratorsSuite extends munit.FunSuite:
val exchange = io.undertow.server.HttpServerExchange(null)
val request = Request(exchange, Nil)
val delegate = new decorator.Delegate:
def apply(v1: Map[String, Any]): cask.router.Result[WebsocketResult] =
cask.router.Result.Success:
cask.model.Response("OK", 200)
val decorator = decorators.checkOriginHeader()
def decoratorStatusCode: Int =
decorator.wrapFunction(request, delegate) match
case Result.Success(resp: WebsocketResult.Response[?]) =>
val delegate: decorator.Delegate = _ =>
cask.router.Result.Success:
cask.model.Response("OK", 200)
def decoratorStatusCode(exchange: HttpServerExchange): Int =
decorator.wrapFunction(cask.model.Request(exchange, Nil), delegate) match
case cask.router.Result.Success(resp: WebsocketResult.Response[?]) =>
resp.value.statusCode
case _ => fail("Unexpected return value from decorator")
test("checkOriginHeader: Valid origin"):
val exchange = io.undertow.server.HttpServerExchange(null)
exchange.getRequestHeaders.put(Headers.HOST, "example.com")
exchange.getRequestHeaders.put(Headers.ORIGIN, s"http://example.com")
assertEquals(decoratorStatusCode, 200)
assertEquals(decoratorStatusCode(exchange), 200)
exchange.getRequestHeaders.put(Headers.ORIGIN, s"https://example.com")
assertEquals(decoratorStatusCode, 200)
assertEquals(decoratorStatusCode(exchange), 200)
test("checkOriginHeader: Invalid origin"):
val exchange = io.undertow.server.HttpServerExchange(null)
exchange.getRequestHeaders.put(Headers.HOST, "example.com")
exchange.getRequestHeaders.put(Headers.ORIGIN, s"http://cs-214.epfl.ch")
assertEquals(decoratorStatusCode, 403)
assertEquals(decoratorStatusCode(exchange), 403)
exchange.getRequestHeaders.put(Headers.ORIGIN, s"https://cs-214.epfl.ch")
assertEquals(decoratorStatusCode, 403)
assertEquals(decoratorStatusCode(exchange), 403)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment