chorusone / rvcr Goto Github PK
View Code? Open in Web Editor NEWRecord-and-replay testing middleware for reqwest http client.
License: Apache License 2.0
Record-and-replay testing middleware for reqwest http client.
License: Apache License 2.0
So I got a bit further this time but it seems there is some API change in reqwest-middleware
version 0.2
that breaks RVCR. I got further with 0.1.6
but on 0.2
onwards I get the following type error when trying to follow the example:
code:
let middleware: VCRMiddleware = VCRMiddleware::try_from(bundle.clone())
.unwrap()
.with_mode(VCRMode::Record);
let vcr_client: ClientWithMiddleware = ClientBuilder::new(reqwest::Client::new())
.with(middleware) //<< error occurs here
.build();
output:
error[E0277]: expected a `Fn<(Request, &'a mut task_local_extensions::extensions::Extensions, Next<'a>)>` closure, found `VCRMiddleware`
--> framework/tests/acceptance.rs:19:15
|
19 | .with(middleware)
| ---- ^^^^^^^^^^ expected an `Fn<(Request, &'a mut task_local_extensions::extensions::Extensions, Next<'a>)>` closure, found `VCRMiddleware`
| |
| required by a bound introduced by this call
|
= help: the trait `for<'a> Fn<(Request, &'a mut task_local_extensions::extensions::Extensions, Next<'a>)>` is not implemented for `VCRMiddleware`
= note: required for `VCRMiddleware` to implement `reqwest_middleware::Middleware`
I'm not totally sure what's going on here. The Middleware
trait still exists in the latest sourcecode for reqwest-middleware
and is specified in that function, M
must implement Middleware
. I'm guessing that the definition of Middleware
has changed, and this compiler output is a bit misleading.
Hi, first of all, it's awesome to see a library inspired by Ruby vcr. Nice work!
When making requests to an API as a client, not a server, the extra complexity of async is often not needed. In fact, the use case of consuming an API and using vcr to test it is exactly the case where, in my opinion, async is likely not needed.
Are there plans to add support for the synchronous, blocking client reqwest::blocking::Client
? I don't think reqwest-middleware
supports it, so either that would need to happen or another approach would need to be taken.
Would you be open to a basic, non-full-featured, implementation of Filter Sensitive Data?
I can't promise any timeline or that I'd do it at all, but I want to check with you before working on it.
Thanks!
Hey, thanks for publishing this it looks really helpful and I'm excited to give it a try. I hit a problem quickly though, Cargo.toml
sets chrono
to version = "=0.4.20"
. The =
forces that specific version and not any newer version so my project that uses 0.4.24
is not compatible. Specifically the error is:
❯ cargo add rvcr
Updating crates.io index
Adding rvcr v0.1.1 to dependencies.
Updating crates.io index
error: failed to select a version for `chrono`.
... required by package `termibot v3.0.0 (/home/mattsi/dev/rust/termibot/bot)`
versions that meet the requirements `^0.4.24` are: 0.4.26, 0.4.25, 0.4.24
all possible versions conflict with previously selected packages.
previously selected package `chrono v0.4.20`
... which satisfies dependency `chrono = "=0.4.20"` of package `rvcr v0.1.1`
... which satisfies dependency `rvcr = "^0.1.1"` of package `framework v0.1.0 (/home/mattsi/dev/rust/termibot/framework)`
failed to select a version for `chrono` which could resolve this conflict
Is there an explicit reason why newer chrono
versions aren't supported? I had a quick look in the git history but couldn't see any documented reason.
Reqwest updated to 0.12 recently and their implementation of reqwest changed. This required reqwest middleware to update it's implementation which in turn made rvcr incompatible with it's most recent version.
Please can we update reqwest middleware to 0.3
The current 2 options for storing and retrieving messages are limiting, we need a more advanced method for indexing messages.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.