/ test / lightspeed / transport_wisp_html_test.gleam
transport_wisp_html_test.gleam
 1  import gleam/string
 2  import gleeunit/should
 3  import lightspeed/transport/contract
 4  import lightspeed/transport/wisp_html
 5  
 6  pub fn render_initial_includes_bootstrap_markers_test() {
 7    let response =
 8      wisp_html.render_initial(
 9        wisp_html.HtmlRequest(
10          session_id: "s-1",
11          route: "/counter",
12          csrf_token: "csrf",
13          origin: "https://example.test",
14        ),
15        "<button>0</button>",
16        "/live",
17        contract.allow_all("proc-a"),
18      )
19  
20    let assert Ok(response) = response
21    response
22    |> wisp_html.status
23    |> should.equal(200)
24  
25    let body = wisp_html.body(response)
26  
27    string.contains(body, "data-ls-session=\"s-1\"")
28    |> should.equal(True)
29  
30    string.contains(body, "data-ls-ws=\"/live\"")
31    |> should.equal(True)
32  
33    string.contains(body, "data-ls-protocol=\"lightspeed\"")
34    |> should.equal(True)
35  
36    string.contains(body, "data-ls-version=\"1\"")
37    |> should.equal(True)
38  
39    string.contains(body, "data-ls-patch-stream-version=\"1\"")
40    |> should.equal(True)
41  
42    string.contains(body, "<button>0</button>")
43    |> should.equal(True)
44  }
45  
46  pub fn render_initial_denied_by_auth_hook_test() {
47    let response =
48      wisp_html.render_initial(
49        wisp_html.HtmlRequest(
50          session_id: "s-1",
51          route: "/counter",
52          csrf_token: "csrf",
53          origin: "https://example.test",
54        ),
55        "<button>0</button>",
56        "/live",
57        contract.deny_all("bad_token"),
58      )
59  
60    response
61    |> should.equal(Error(contract.AuthenticationFailed("bad_token")))
62  }