response.rs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. use js_sys::{ArrayBuffer, DataView};
  2. use wasm_bindgen::prelude::*;
  3. use wasm_bindgen::JsCast;
  4. use wasm_bindgen_futures::JsFuture;
  5. use wasm_bindgen_test::*;
  6. use web_sys::Response;
  7. #[wasm_bindgen(module = "/tests/wasm/response.js")]
  8. extern "C" {
  9. fn new_response() -> Response;
  10. }
  11. #[wasm_bindgen_test]
  12. fn test_response_from_js() {
  13. let response = new_response();
  14. assert!(!response.ok());
  15. assert!(!response.redirected());
  16. assert_eq!(response.status(), 501);
  17. }
  18. #[wasm_bindgen_test]
  19. async fn test_response_from_bytes() {
  20. let mut bytes: [u8; 3] = [1, 3, 5];
  21. let response = Response::new_with_opt_u8_array(Some(&mut bytes)).unwrap();
  22. assert!(response.ok());
  23. assert_eq!(response.status(), 200);
  24. let buf_promise = response.array_buffer().unwrap();
  25. let buf_val = JsFuture::from(buf_promise).await.unwrap();
  26. assert!(buf_val.is_instance_of::<ArrayBuffer>());
  27. let array_buf: ArrayBuffer = buf_val.dyn_into().unwrap();
  28. let data_view = DataView::new(&array_buf, 0, bytes.len());
  29. for (i, byte) in bytes.iter().enumerate() {
  30. assert_eq!(&data_view.get_uint8(i), byte);
  31. }
  32. }
  33. #[wasm_bindgen_test]
  34. async fn test_response_from_other_body() {
  35. let input = "Hello, world!";
  36. let response_a = Response::new_with_opt_str(Some(input)).unwrap();
  37. let body = response_a.body();
  38. let response_b = Response::new_with_opt_readable_stream(body.as_ref()).unwrap();
  39. let output = JsFuture::from(response_b.text().unwrap()).await.unwrap();
  40. assert_eq!(JsValue::from_str(input), output);
  41. }