summaryrefslogtreecommitdiff
path: root/cli/tests/unit/fetch_test.ts
AgeCommit message (Collapse)Author
2023-01-02chore: update copyright year to 2023 (#17247)David Sherret
Yearly tradition of creating extra noise in git.
2022-12-23fix(ext/fetch): Guard against invalid URL before its used by reqwest (#17164)Kamil Ogórek
2022-12-19test(ext/fetch): fix test in release mode (#17125)Luca Casonato
2022-12-19fix(ext/fetch): handle errors in req body stream (#17081)Luca Casonato
Right now an error in a request body stream causes an uncatchable global promise rejection. This PR fixes this to instead propagate the error correctly into the promise returned from `fetch`. It additionally fixes errored readable stream bodies being treated as successfully completed bodies by Rust.
2022-12-06fix(ext/fetch): new Request should soft clone (#16869)Luca Casonato
Previously the inner request object of the original and the new request were the same, causing the requests to be entangled and mutable changes to one to be visible to the other. This fixes that.
2022-10-09feat(core): improve resource read & write traits (#16115)Luca Casonato
This commit introduces two new buffer wrapper types to `deno_core`. The main benefit of these new wrappers is that they can wrap a number of different underlying buffer types. This allows for a more flexible read and write API on resources that will require less copying of data between different buffer representations. - `BufView` is a read-only view onto a buffer. It can be backed by `ZeroCopyBuf`, `Vec<u8>`, and `bytes::Bytes`. - `BufViewMut` is a read-write view onto a buffer. It can be cheaply converted into a `BufView`. It can be backed by `ZeroCopyBuf` or `Vec<u8>`. Both new buffer views have a cursor. This means that the start point of the view can be constrained to write / read from just a slice of the view. Only the start point of the slice can be adjusted. The end point is fixed. To adjust the end point, the underlying buffer needs to be truncated. Readable resources have been changed to better cater to resources that do not support BYOB reads. The basic `read` method now returns a `BufView` instead of taking a `ZeroCopyBuf` to fill. This allows the operation to return buffers that the resource has already allocated, instead of forcing the caller to allocate the buffer. BYOB reads are still very useful for resources that support them, so a new `read_byob` method has been added that takes a `BufViewMut` to fill. `op_read` attempts to use `read_byob` if the resource supports it, which falls back to `read` and performs an additional copy if it does not. For Rust->JS reads this change should have no impact, but for Rust->Rust reads, this allows the caller to avoid an additional copy in many scenarios. This combined with the support for `BufView` to be backed by `bytes::Bytes` allows us to avoid one data copy when piping from a `fetch` response into an `ext/http` response. Writable resources have been changed to take a `BufView` instead of a `ZeroCopyBuf` as an argument. This allows for less copying of data in certain scenarios, as described above. Additionally a new `Resource::write_all` method has been added that takes a `BufView` and continually attempts to write the resource until the entire buffer has been written. Certain resources like files can override this method to provide a more efficient `write_all` implementation.
2022-10-04perf(ext/fetch): consume body using ops (#16038)Marcos Casagrande
This commit adds a fast path to `Request` and `Response` that make consuming request bodies much faster when using `Body#text`, `Body#arrayBuffer`, and `Body#blob`, if the body is a FastStream. Because the response bodies for `fetch` are FastStream, this speeds up consuming `fetch` response bodies significantly.
2022-09-28feat: implement Web Cache API (#15829)Satya Rohith
2022-09-27fix(ext/fetch): blob url (#16057)Satya Rohith
Co-authored-by: Luca Casonato <hello@lcas.dev>
2022-09-26perf(ext/fetch): use content-length in InnerBody.consume (#15925)Marcos Casagrande
This fast path prevents repeated allocations when receiving a fetch body with a known size. Co-authored-by: Luca Casonato <hello@lcas.dev>
2022-09-23test(ext/fetch): enable null body status test on windows (#15995)Marcos Casagrande
2022-09-19refactor: move out test files from root testdata directory into sub ↵David Sherret
directories (#15949)
2022-09-06perf(runtime): short-circuit `queue_async_op` for Poll::Ready (#15773)Divy Srivastava
2022-08-23fix(ext/fetch): ignore user content-length header (#15555)Luca Casonato
Previously if a user specified a content-length header for an POST request without a body, the request would contain two `content-length` headers. One added by us, and one added by the user. This commit ignores all content-length headers coming from the user, because we need to have the sole authority on the content-length because we transmit the body.
2022-07-20chore: use import.meta.resolve() in tests (#15256)Bartek Iwańczuk
2022-07-20chore: align some Web API type definitions to lib.dom.d.ts (#15219)ayame113
2022-06-19fix(ext/fetch): add `accept-language` default header to fetch (#14882)Mark Ladyshau
2022-05-18fix: add types for `Response.json` (#14655)Luca Casonato
2022-03-16feat(ext/fetch): Allow Response status 101 (#13969)Ryan Dahl
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2022-02-16tests: deflake a bunch of net related tests (#13685)Luca Casonato
2022-01-20chore: update copyright year (#13434)Yoshiya Hinosawa
2021-12-16feat(fetch): support abort reasons in fetch (#13106)Andreu Botella
2021-11-23refactor: remove "unitTest" wrapper from cli/tests/unit (#12750)Bartek Iwańczuk
2021-11-09fix(fetch): set content-length for empty POST/PUT (#12703)Luca Casonato
This commit changes `fetch` to set `content-length: 0` on POST and PUT requests with no body.
2021-11-01feat(ext/fetch): support fetching local files (#12545)Kitson Kelly
Closes #11925 Closes #2150 Co-authored-by: Bert Belder <bertbelder@gmail.com>
2021-10-25fix(tls): Make TLS clients support HTTP/2 (#12530)Andreu Botella
`fetch()` and client-side websocket used to support HTTP/2, but this regressed in #11491. This patch reenables it by explicitly adding `h2` and `http/1.1` to the list of ALPN protocols on the HTTP and websocket clients.
2021-09-30feat(tls): custom in memory CA certificates (#12219)Luca Casonato
This adds support for using in memory CA certificates for `Deno.startTLS`, `Deno.connectTLS` and `Deno.createHttpClient`. `certFile` is deprecated in `startTls` and `connectTls`, and removed from `Deno.createHttpClient`.
2021-09-29fix(ext/fetch): avoid panic when header is invalid (#12244)Ahab
2021-09-23test(cli): align unit test permissions with runtime test permissions (#12189)Casper Beyer
2021-09-22chore: replace calls to assertThrowsAsync with assertRejects (#12176)Casper Beyer
2021-09-17chore(tests): fix flaky fetchPostBodyTypedArray (#12104)David Sherret
2021-09-13fix(ext/fetch): Properly cancel upload stream when aborting (#11966)Nayeem Rahman
Co-authored-by: Luca Casonato <lucacasonato@yahoo.com>
2021-08-25feat(fetch): mTLS client certificates for fetch() (#11721)Sean Michael Wykes
This commit adds support for specifying client certificates when using fetch, by means of `Deno.createHttpClient`.
2021-08-11chore: move test files to testdata directory (#11601)David Sherret
2021-08-05refactor(cli/tests): remove unnecessary void return types (#11577)Leo K
2021-08-02Revert "fix(extensions/fetch): Add Origin header to outgoing requests for ↵Bartek Iwańczuk
fetch (#11557)" (#11565) This reverts commit f87aa44d94240327fb4ab1dc756d70f71247edb4.
2021-08-02fix(extensions/fetch): Add Origin header to outgoing requests for fetch (#11557)Feng Yu
2021-07-20tests: re-enable disabled Response.formData test (#11453)Luca Casonato
2021-07-05refactor: asynchronous blob backing store (#10969)Jimmy Wärting
Co-authored-by: Luca Casonato <hello@lcas.dev>
2021-07-05fix(fetch): OPTIONS should be allowed a non-null body (#11242)Craig Morten
2021-06-30fix: panic in request body streaming (#11191)Luca Casonato
2021-06-22fix(extensions/fetch): Filter out custom HOST headers (#11020)Vladimir Ivanov
This commit updates "fetch" API to ignore custom "Host" headers and return value provided by "reqwest".
2021-05-26fix(fetch): make prototype properties writable (#10769)Luca Casonato
2021-05-03fix(op_crates/fetch): check fetch() argument length (#10474)Anonymous
2021-04-29fix(op_crate/fetch): infinite loop on fill headers (#10406)William Perron
Fixes a pesky bug in the fetch implementation where if the init part is specified in `fetch` instead of the `Request` constructor, the fillHeaders function receives two references to the same object, causing it to append to the same list being iterated over.
2021-04-20chore: align fetch to spec (#10203)Luca Casonato
This commit aligns the `fetch` API and the `Request` / `Response` classes belonging to it to the spec. This commit enables all the relevant `fetch` WPT tests. Spec compliance is now at around 90%. Performance is essentially identical now (within 1% of 1.9.0).
2021-04-19chore: align `Headers` to spec (#10199)Luca Casonato
This commit aligns `Headers` to spec. It also removes the now unused 03_dom_iterable.js file. We now pass all relevant `Headers` WPT. We do not implement any sort of header filtering, as we are a server side runtime. This is likely not the most efficient implementation of `Headers` yet. It is however spec compliant. Once all the APIs in the `HTTP` hot loop are correct we can start optimizing them. It is likely that this commit reduces bench throughput temporarily.
2021-04-09chore: upgrade dependencies (#10094)Bartek Iwańczuk
This commit upgrades: - swc_ecmascript - swc_bundler - deno_doc - deno_lint - dprint-plugin-typescript
2021-04-06chore: deprecate Deno.Buffer and read/write utils (#9793)Luca Casonato
This commit marks the `Deno.Buffer` / `Deno.readAll` / `Deno.readAllSync` / `Deno.writeAll` / `Deno.writeAllSync` utils as deprecated, and schedules them for removal in Deno 2.0. These utilities are implemented in pure JS, so should not be part of the Deno namespace. These utilities are now available in std/io/buffer and std/io/util: https://github.com/denoland/deno_std/pull/808. This additionallty removes all internal dependance on Deno.Buffer.
2021-03-18fix: fallback to default UA and CA data for Deno.createHttpClient() (#9830)Aaron O'Mullan