Skip to content

Commit 144570d

Browse files
committed
mock ES Imports directly
1 parent 7ae574d commit 144570d

6 files changed

Lines changed: 13 additions & 35 deletions

File tree

dns.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

esm-resolver.cjs

Lines changed: 0 additions & 22 deletions
This file was deleted.

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { lookup as nativeCallbackLookup } from './dns.js' // HACK WARNING
1+
import { lookup as nativeCallbackLookup } from 'dns'
22
import { promisify } from 'util'
33
import got from 'got'
44
import ip from 'ipaddr.js'

index.test.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
1-
import { expect, describe, it } from '@jest/globals'
1+
import { expect, describe, it, jest } from '@jest/globals'
22
import nock from 'nock'
3-
import { gotSsrf } from './index.js'
3+
4+
// We can directly mock the "import { lookup } from 'dns'" call in index.js with jest.
5+
const mockDnsModule = await import('./__mocks__/dns.js')
6+
jest.unstable_mockModule('dns', () => mockDnsModule)
7+
8+
// However, it does mean that we need to do a dynamic import to make sure we load the mocked import.
9+
// See: https://jestjs.io/docs/ecmascript-modules#module-mocking-in-esm
10+
const { gotSsrf } = await import('./index.js')
411

512
nock.disableNetConnect()
613

jest.config.cjs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,5 @@ process.env.JEST_JUNIT_OUTPUT_DIR = 'reports/jest'
33
module.exports = {
44
reporters: ['default', 'jest-junit'],
55
errorOnDeprecated: true,
6-
notify: true,
7-
testEnvironment: 'jest-environment-node',
8-
transform: {},
9-
resolver: '<rootDir>/esm-resolver.cjs'
6+
notify: true
107
}

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@
2525
"devDependencies": {
2626
"@janejeon/eslint-config": "3.0.0-3",
2727
"@janejeon/prettier-config": "^1.1.0",
28-
"enhanced-resolve": "^5.8.3",
2928
"husky": "^8.0.1",
30-
"jest": "^27.2.1",
31-
"jest-junit": "^14.0.0",
29+
"jest": "^29.5.0",
30+
"jest-junit": "^16.0.0",
3231
"lint-staged": "13.0.3",
3332
"nock": "^13.1.3",
3433
"node-notifier": "^10.0.0",

0 commit comments

Comments
 (0)