stripe-node icon indicating copy to clipboard operation
stripe-node copied to clipboard

Default Node `httpClient` configuration does not get mocked by MSW nor upcoming Nock version

Open kanadgupta opened this issue 4 months ago • 0 comments

Describe the bug

Hi there. I'm using nock@beta and it is no longer able to intercept requests from this library when using the default Node.js httpClient settings (i.e., this HTTP client).

This is because nock is adding support for native fetch and now uses @mswjs/interceptors to intercept requests (which is also used by msw).

The workaround is fairly trivial — configure the Stripe SDK to use fetch (see the workaround section here). But once nock@14 is released, it will not support this library without additional end user configuration. Based on a handful of issues in this repo, I cannot imagine this is the desired behavior:

https://github.com/stripe/stripe-node/issues/1844 https://github.com/stripe/stripe-node/pull/1854 https://github.com/stripe/stripe-node/pull/1866

To Reproduce

See https://github.com/kanadgupta/nock-beta-stripe-sdk

Expected behavior

The current Nock beta and its underlying interceptor library (@mswjs/interceptors) should be able to mock requests from the Stripe SDK without having to set the httpClient configuration option.

Code snippets

No response

OS

macOS

Node version

Node v20.16.0

Library version

stripe-node 17.2.1

API version

2024-09-30.acacia

Additional context

I initially filed a bug report in the nock repo: https://github.com/nock/nock/issues/2785

It appears that this is happening due to a known limitation where @mswjs/interceptors is unable to intercept certain requests with node:http. The maintainer documented a way to fix this here: https://github.com/mswjs/msw/issues/2259#issuecomment-2379379566

kanadgupta avatar Oct 21 '24 15:10 kanadgupta