Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(NODE-5127): implement reject kmsRequest on server close #3964

Merged
merged 25 commits into from
Jan 18, 2024
Merged
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
72a0620
fix(NODE-5127): reject kmsRequest on server close
alenakhineika Jan 10, 2024
bfbd8b9
test: add unit test
alenakhineika Jan 11, 2024
05bf2b3
refactor: kmsRequest to async/await
alenakhineika Jan 12, 2024
08ad041
refactor: use promiseWithResolvers
alenakhineika Jan 12, 2024
29beb70
refactor: destroy sockets at the very end
alenakhineika Jan 12, 2024
12356a2
refactor: split rejecters
alenakhineika Jan 15, 2024
ac17114
refactor: listen for error events on tls socket only
alenakhineika Jan 15, 2024
9b01fa3
Merge remote-tracking branch 'origin/main' into NODE-5127-reject-kms-…
alenakhineika Jan 15, 2024
bdfb5e3
fix: try listen for errors again on rawSocket
alenakhineika Jan 15, 2024
f3b9c62
fix: add back destroy socket on resolve
alenakhineika Jan 15, 2024
4536da2
refactor: try again without error handlers on rawSocket
alenakhineika Jan 15, 2024
70f279a
refactor: destroy sockets on finally
alenakhineika Jan 16, 2024
bd7723f
fix: add error listeners to raw socket
alenakhineika Jan 16, 2024
36c10fb
test: add test for a plain endpoint
alenakhineika Jan 16, 2024
e744436
refactor: try with a single socket
alenakhineika Jan 16, 2024
e12e84e
fix: destroy tls socket
alenakhineika Jan 16, 2024
48a985c
refactor: revert
alenakhineika Jan 16, 2024
d9fa8c8
refactor: remove only
alenakhineika Jan 16, 2024
96b0cc8
refactor: try one more way
alenakhineika Jan 17, 2024
a3128fb
refactor: revert
alenakhineika Jan 17, 2024
10c8b3d
refactor: and one more round
alenakhineika Jan 17, 2024
788eeb5
test: close tls socket on server
alenakhineika Jan 17, 2024
1aec2be
refactor: clean up
alenakhineika Jan 17, 2024
16448ca
refactor: this time close really on server
alenakhineika Jan 17, 2024
be4f2ea
Merge branch 'main' into NODE-5127-reject-kms-request-onclose
nbbeeken Jan 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test: close tls socket on server
alenakhineika committed Jan 17, 2024
commit 788eeb5e6c2b40826fb80611348a1dade991b616
23 changes: 5 additions & 18 deletions test/unit/client-side-encryption/state_machine.test.ts
Original file line number Diff line number Diff line change
@@ -288,30 +288,17 @@ describe('StateMachine', function () {

it('throws a MongoCryptError error with a tls endpoint', async function () {
const stateMachine = new StateMachine({
host: 'localhost',
post: server.address().port,
tlsOptions: { aws: { tlsCertificateKeyFile: 'test.pem' } }
} as any);
const request = new MockRequest(Buffer.from('foobar'), -1);
const buffer = Buffer.from('foobar');

this.sinon.stub(fs, 'readFile').callsFake(fileName => {
expect(fileName).to.equal('test.pem');
return Promise.resolve(buffer);
});
this.sinon.stub(tls, 'connect').callsFake((options, callback) => {
this.fakeSocket = new MockSocket(callback);
return this.fakeSocket;
});
const request = new MockRequest(Buffer.from('foobar'), 500);

try {
const kmsRequestPromise = stateMachine.kmsRequest(request);

await promisify(setTimeout)(0);
this.fakeSocket.emit('close');

await kmsRequestPromise;
await stateMachine.kmsRequest(request);
} catch (err) {
expect(err.name).to.equal('MongoCryptError');
expect(err.message).to.equal('KMS request closed');
expect(err.message).to.equal('KMS request failed');
return;
}
expect.fail('missed exception');