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 }