File: test_response.ml

package info (click to toggle)
ocaml-cohttp 6.2.1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,624 kB
  • sloc: ml: 13,107; makefile: 20; sh: 18; javascript: 18
file content (61 lines) | stat: -rw-r--r-- 1,968 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
open Http

let aeb = Alcotest.check Alcotest.bool
let aeo = Alcotest.check Alcotest.(option int)
let no_content_status = Response.make ~status:`No_content ()
let continue_status = Response.make ~status:`Continue ()
let ok_status = Response.make ~status:`OK ()

let chunked_transport_encoding =
  let headers =
    let headers = Http.Header.init () in
    Http.Header.add headers "Transfer-Encoding" "chunked"
  in
  Response.make ~status:`OK ~headers ()

let requires_content_length_tests =
  let no_content_status () =
    Response.requires_content_length no_content_status
    |> aeb "requires_content_length m = true, where s is `No_content (204)"
         false
  in
  let continue_status () =
    Response.requires_content_length continue_status
    |> aeb "requires_content_length m = true, where s is `Continue (100)" false
  in
  let ok_status () =
    Response.requires_content_length ok_status
    |> aeb "requires_content_length s = true, where s is `OK (200" true
  in
  let chunked_transport_encoding () =
    Response.requires_content_length chunked_transport_encoding
    |> aeb "requires_content_length s = true, where s is `OK (200" false
  in
  ( "requires_content_length",
    [
      ("`No_content", `Quick, no_content_status);
      ("`Continue", `Quick, continue_status);
      ("`OK", `Quick, ok_status);
      ("Transport-Encoding: chunked", `Quick, chunked_transport_encoding);
    ] )

let content_length_tests =
  let ok_status () =
    Response.
      {
        ok_status with
        headers = Header.add ok_status.headers "Content-Length" "20";
      }
    |> Response.content_length
    |> aeo "Some len" (Some 20)
  in
  let no_content_status () =
    Response.content_length no_content_status |> aeo "`No_content : None" None
  in

  ( "content_length",
    [ ("OK", `Quick, ok_status); ("`No_content", `Quick, no_content_status) ] )

let () =
  Alcotest.run "test_response"
    [ requires_content_length_tests; content_length_tests ]