diff --git a/package-lock.json b/package-lock.json index 6d52502..aa8960c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "node-lambda": "bin/node-lambda" }, "devDependencies": { + "aws-sdk-client-mock": "^4.1.0", "aws-sdk-mock": "^6.0.4", "chai": "^5.0.0", "mocha": "^10.1.0", @@ -2367,6 +2368,21 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz", "integrity": "sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==" }, + "node_modules/@types/sinon": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", + "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", + "dev": true, + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "dev": true + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -2763,6 +2779,17 @@ "node": ">= 10.0.0" } }, + "node_modules/aws-sdk-client-mock": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.1.0.tgz", + "integrity": "sha512-h/tOYTkXEsAcV3//6C1/7U4ifSpKyJvb6auveAepqqNJl6TdZaPFEtKjBQNf8UxQdDP850knB2i/whq4zlsxJw==", + "dev": true, + "dependencies": { + "@types/sinon": "^17.0.3", + "sinon": "^18.0.1", + "tslib": "^2.1.0" + } + }, "node_modules/aws-sdk-mock": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-6.2.0.tgz", @@ -9527,6 +9554,21 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz", "integrity": "sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==" }, + "@types/sinon": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", + "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", + "dev": true, + "requires": { + "@types/sinonjs__fake-timers": "*" + } + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "dev": true + }, "abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -9810,6 +9852,17 @@ "xml2js": "0.6.2" } }, + "aws-sdk-client-mock": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.1.0.tgz", + "integrity": "sha512-h/tOYTkXEsAcV3//6C1/7U4ifSpKyJvb6auveAepqqNJl6TdZaPFEtKjBQNf8UxQdDP850knB2i/whq4zlsxJw==", + "dev": true, + "requires": { + "@types/sinon": "^17.0.3", + "sinon": "^18.0.1", + "tslib": "^2.1.0" + } + }, "aws-sdk-mock": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-6.2.0.tgz", diff --git a/package.json b/package.json index 6044459..e32ecc3 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "proxy-agent": "^6.2.0" }, "devDependencies": { + "aws-sdk-client-mock": "^4.1.0", "aws-sdk-mock": "^6.0.4", "chai": "^5.0.0", "mocha": "^10.1.0", diff --git a/test/main.js b/test/main.js index af77e3b..b350515 100644 --- a/test/main.js +++ b/test/main.js @@ -11,13 +11,14 @@ let assert import('chai').then(chai => { assert = chai.assert }) -const sinon = require('sinon') const awsMock = require('aws-sdk-mock') awsMock.setSDK(path.resolve('node_modules/aws-sdk')) // Migrating to v3. -const { LambdaClient } = require('@aws-sdk/client-lambda') +const { mockClient } = require('aws-sdk-client-mock') +const { LambdaClient, CreateFunctionCommand } = require('@aws-sdk/client-lambda') +const mockLambdaClient = mockClient(LambdaClient) const lambdaClient = new LambdaClient({ region: 'us-east-1' }) const originalProgram = { @@ -163,12 +164,11 @@ describe('lib/main', function () { execFileSync('npm', ['ci'], { cwd: sourceDirectoryForTest }) // for sdk v3 - const stub = sinon.stub(lambdaClient, 'send') - stub.returns(lambdaMockSettings.createFunction) + mockLambdaClient.reset() + mockLambdaClient.on(CreateFunctionCommand).resolves(lambdaMockSettings.createFunction) }) after(() => { _awsRestore() - sinon.restore() // for sdk v3 }) beforeEach(() => { diff --git a/yarn.lock b/yarn.lock index 84487fc..acbf1c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1103,6 +1103,18 @@ resolved "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz" integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA== +"@types/sinon@^17.0.3": + version "17.0.3" + resolved "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz" + integrity sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "8.1.5" + resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz" + integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" @@ -1324,6 +1336,15 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +aws-sdk-client-mock@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.1.0.tgz" + integrity sha512-h/tOYTkXEsAcV3//6C1/7U4ifSpKyJvb6auveAepqqNJl6TdZaPFEtKjBQNf8UxQdDP850knB2i/whq4zlsxJw== + dependencies: + "@types/sinon" "^17.0.3" + sinon "^18.0.1" + tslib "^2.1.0" + aws-sdk-mock@^6.0.4: version "6.2.0" resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-6.2.0.tgz" @@ -3950,7 +3971,7 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^2.0.1, tslib@^2.5.0, tslib@^2.6.2: +tslib@^2.0.1, tslib@^2.1.0, tslib@^2.5.0, tslib@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==