purescript-httpurple/test/Test/HTTPure/ResponseSpec.purs

164 lines
5.5 KiB
Haskell
Raw Normal View History

2017-10-26 21:19:30 +00:00
module Test.HTTPure.ResponseSpec where
import Prelude
import Effect.Class as EffectClass
import Node.Buffer as Buffer
import Node.Encoding as Encoding
2017-07-10 10:17:13 +00:00
import Test.Spec as Spec
import Test.Spec.Assertions as Assertions
import HTTPure.Body as Body
2017-09-26 06:08:07 +00:00
import HTTPure.Headers as Headers
2017-07-10 10:17:13 +00:00
import HTTPure.Response as Response
2017-10-26 21:19:30 +00:00
import Test.HTTPure.TestHelpers as TestHelpers
import Test.HTTPure.TestHelpers ((?=))
2017-10-26 21:19:30 +00:00
sendSpec :: TestHelpers.Test
sendSpec = Spec.describe "send" do
2017-07-19 18:59:55 +00:00
Spec.it "writes the headers" do
header <- EffectClass.liftEffect do
2017-10-26 21:19:30 +00:00
httpResponse <- TestHelpers.mockResponse
2017-09-26 06:08:07 +00:00
Response.send httpResponse mockResponse
2017-10-26 21:19:30 +00:00
pure $ TestHelpers.getResponseHeader "Test" httpResponse
2017-07-19 18:59:55 +00:00
header ?= "test"
Spec.it "sets the Content-Length header" do
header <- EffectClass.liftEffect do
httpResponse <- TestHelpers.mockResponse
Response.send httpResponse mockResponse
pure $ TestHelpers.getResponseHeader "Content-Length" httpResponse
header ?= "4"
2017-07-19 18:59:55 +00:00
Spec.it "writes the status" do
status <- EffectClass.liftEffect do
2017-10-26 21:19:30 +00:00
httpResponse <- TestHelpers.mockResponse
2017-09-26 06:08:07 +00:00
Response.send httpResponse mockResponse
2017-10-26 21:19:30 +00:00
pure $ TestHelpers.getResponseStatus httpResponse
2017-09-26 06:08:07 +00:00
status ?= 123
2017-07-19 18:59:55 +00:00
Spec.it "writes the body" do
body <- EffectClass.liftEffect do
2017-10-26 21:19:30 +00:00
httpResponse <- TestHelpers.mockResponse
2017-09-26 06:08:07 +00:00
Response.send httpResponse mockResponse
2017-10-26 21:19:30 +00:00
pure $ TestHelpers.getResponseBody httpResponse
2017-07-19 18:59:55 +00:00
body ?= "test"
2017-09-26 06:08:07 +00:00
where
mockHeaders = Headers.header "Test" "test"
mockResponse =
{ status: 123
, headers: mockHeaders
, body: Body.StringBody "test"
}
2017-09-26 06:08:07 +00:00
2017-10-26 21:19:30 +00:00
responseFunctionSpec :: TestHelpers.Test
2017-09-26 06:08:07 +00:00
responseFunctionSpec = Spec.describe "response" do
Spec.it "has the right status" do
resp <- Response.response 123 "test"
resp.status ?= 123
Spec.it "has empty headers" do
resp <- Response.response 123 "test"
resp.headers ?= Headers.empty
Spec.it "has the right body" do
resp <- Response.response 123 "test"
case resp.body of
Body.StringBody str -> str ?= "test"
_ -> Assertions.fail "String body expected"
2017-10-26 21:19:30 +00:00
response'Spec :: TestHelpers.Test
response'Spec = Spec.describe "response'" do
2017-09-26 06:08:07 +00:00
Spec.it "has the right status" do
resp <- mockResponse
2017-09-27 19:34:00 +00:00
resp.status ?= 123
2017-09-26 06:08:07 +00:00
Spec.it "has the right headers" do
resp <- mockResponse
2017-09-27 19:34:00 +00:00
resp.headers ?= mockHeaders
2017-09-26 06:08:07 +00:00
Spec.it "has the right body" do
resp <- mockResponse
case resp.body of
Body.StringBody str -> str ?= "test"
_ -> Assertions.fail "String body expected"
2017-09-26 06:08:07 +00:00
where
mockHeaders = Headers.header "Test" "test"
mockResponse = Response.response' 123 mockHeaders "test"
2017-09-26 06:08:07 +00:00
binaryResponseSpec :: TestHelpers.Test
binaryResponseSpec = Spec.describe "binaryResponse" do
Spec.it "has the right status" do
body <- EffectClass.liftEffect $ Buffer.fromString "test" Encoding.UTF8
resp <- Response.binaryResponse 123 body
resp.status ?= 123
Spec.it "has empty headers" do
body <- EffectClass.liftEffect $ Buffer.fromString "test" Encoding.UTF8
resp <- Response.binaryResponse 123 body
resp.headers ?= Headers.empty
Spec.it "has the right body" do
body <- EffectClass.liftEffect $ Buffer.fromString "test" Encoding.UTF8
resp <- Response.binaryResponse 123 body
case resp.body of
Body.BinaryBody bin -> do
str <- EffectClass.liftEffect $ Buffer.toString Encoding.UTF8 bin
str ?= "test"
_ -> Assertions.fail "Binary body expected"
binaryResponse'Spec :: TestHelpers.Test
binaryResponse'Spec = Spec.describe "binaryResponse'" do
Spec.it "has the right status" do
body <- EffectClass.liftEffect $ Buffer.fromString "test" Encoding.UTF8
resp <- mockResponse body
resp.status ?= 123
Spec.it "has the right headers" do
body <- EffectClass.liftEffect $ Buffer.fromString "test" Encoding.UTF8
resp <- mockResponse body
resp.headers ?= mockHeaders
Spec.it "has the right body" do
body <- EffectClass.liftEffect $ Buffer.fromString "test" Encoding.UTF8
resp <- mockResponse body
case resp.body of
Body.BinaryBody bin -> do
str <- EffectClass.liftEffect $ Buffer.toString Encoding.UTF8 bin
str ?= "test"
_ -> Assertions.fail "Binary body expected"
where
mockHeaders = Headers.header "Test" "test"
mockResponse = Response.binaryResponse' 123 mockHeaders
2017-10-26 21:19:30 +00:00
emptyResponseSpec :: TestHelpers.Test
emptyResponseSpec = Spec.describe "emptyResponse" do
Spec.it "has the right status" do
resp <- Response.emptyResponse 123
resp.status ?= 123
Spec.it "has empty headers" do
resp <- Response.emptyResponse 123
resp.headers ?= Headers.empty
Spec.it "has an empty body" do
resp <- Response.emptyResponse 123
case resp.body of
Body.StringBody str -> str ?= ""
_ -> Assertions.fail "String body expected"
2017-10-26 21:19:30 +00:00
emptyResponse'Spec :: TestHelpers.Test
emptyResponse'Spec = Spec.describe "emptyResponse'" do
2017-09-26 06:08:07 +00:00
Spec.it "has the right status" do
resp <- mockResponse
2017-09-27 19:34:00 +00:00
resp.status ?= 123
2017-09-26 06:08:07 +00:00
Spec.it "has the right headers" do
resp <- mockResponse
2017-09-27 19:34:00 +00:00
resp.headers ?= mockHeaders
2017-09-26 06:08:07 +00:00
Spec.it "has an empty body" do
resp <- mockResponse
case resp.body of
Body.StringBody str -> str ?= ""
_ -> Assertions.fail "String body expected"
2017-09-26 06:08:07 +00:00
where
mockHeaders = Headers.header "Test" "test"
mockResponse = Response.emptyResponse' 123 mockHeaders
2017-07-10 10:17:13 +00:00
2017-10-26 21:19:30 +00:00
responseSpec :: TestHelpers.Test
responseSpec = Spec.describe "Response" do
sendSpec
2017-09-26 06:08:07 +00:00
responseFunctionSpec
response'Spec
binaryResponseSpec
binaryResponse'Spec
emptyResponseSpec
emptyResponse'Spec