mswjs / interceptors

Low-level network interception library.
https://npm.im/@mswjs/interceptors
MIT License
565 stars 127 forks source link

Nock compatibility #575

Open mikicho opened 5 months ago

mikicho commented 5 months ago

Transfer Encoding @mikicho

support transfer-encoding: chunked

https://github.com/mswjs/interceptors/pull/596

preemtive timeout

We decided to remove this feature from Nock. It not relevant for fetch. We should consider if/how we want to support this for httpClient. this is a nice feature.

Headers

Recorder

kettanaito commented 5 months ago

Thanks for putting this down, @mikicho! Let's split these between ourselves and finish the interceptor. Please, if you are working on a task, put your GitHub handle next to it so I'd know, and I will do the same.

As usual, we can start with adding a test for the thing, verifying if it's not passing already, and then opening pull requests to #515. Does that sound good to you?

kettanaito commented 5 months ago

socket emits connect and secureConnect

This should already be the case:

Not sure if we have tests for this, may be indirectly tested and still missing test cases just for the connect and secureConnect events.

Edit: I'm assigning this to myself, will ensure those events are emitted correctly.

kettanaito commented 2 months ago

Added implementation for following redirect responses in fetch: #627.

kettanaito commented 2 months ago

should be safe to call in the middle of a request

@mikicho, can you elaborate on this scenario, please? Nock itself works by patching http.get and friends, so the interceptor is applied before any requests happen. I think I'm just misunderstanding what "to call" refers to here, to be honest.

Do you mean a scenario like this?

http.get()

interceptor.on('request', ({ controller }) => controller.respondWith(new Response()))
mikicho commented 2 months ago

This is more of a nock-side issue, which I don't think we should tackle on the interceptors side. The gist is that nock used to be sync (which is incompatible with how Node) and it was safe to call reset in the middle of a request. Currently, I have just dropped "support" for it and I'm waiting to see if anyone complains

kettanaito commented 2 months ago

I lack enough familiarity with Nock to say this for certain, but applying/removing mocking in a middle of a request sounds like a bad idea. Imo, the request must be handled according to the interception state at the time of being issued.