ZeroTierOne/zeroidc/vendor/web-sys/tests/wasm/response.rs

47 lines
1.5 KiB
Rust

use js_sys::{ArrayBuffer, DataView};
use wasm_bindgen::prelude::*;
use wasm_bindgen::JsCast;
use wasm_bindgen_futures::JsFuture;
use wasm_bindgen_test::*;
use web_sys::Response;
#[wasm_bindgen(module = "/tests/wasm/response.js")]
extern "C" {
fn new_response() -> Response;
}
#[wasm_bindgen_test]
fn test_response_from_js() {
let response = new_response();
assert!(!response.ok());
assert!(!response.redirected());
assert_eq!(response.status(), 501);
}
#[wasm_bindgen_test]
async fn test_response_from_bytes() {
let mut bytes: [u8; 3] = [1, 3, 5];
let response = Response::new_with_opt_u8_array(Some(&mut bytes)).unwrap();
assert!(response.ok());
assert_eq!(response.status(), 200);
let buf_promise = response.array_buffer().unwrap();
let buf_val = JsFuture::from(buf_promise).await.unwrap();
assert!(buf_val.is_instance_of::<ArrayBuffer>());
let array_buf: ArrayBuffer = buf_val.dyn_into().unwrap();
let data_view = DataView::new(&array_buf, 0, bytes.len());
for (i, byte) in bytes.iter().enumerate() {
assert_eq!(&data_view.get_uint8(i), byte);
}
}
#[wasm_bindgen_test]
async fn test_response_from_other_body() {
let input = "Hello, world!";
let response_a = Response::new_with_opt_str(Some(input)).unwrap();
let body = response_a.body();
let response_b = Response::new_with_opt_readable_stream(body.as_ref()).unwrap();
let output = JsFuture::from(response_b.text().unwrap()).await.unwrap();
assert_eq!(JsValue::from_str(input), output);
}