Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
2 changes: 1 addition & 1 deletion global.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { OneOrMore } from './src/mongo_types';
import { type OneOrMore } from './src/mongo_types';
import type { TestConfiguration } from './test/tools/runner/config';

declare global {
Expand Down
9 changes: 7 additions & 2 deletions src/cmap/connection_pool_events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,19 @@ export abstract class ConnectionPoolMonitoringEvent {
*/
export class ConnectionPoolCreatedEvent extends ConnectionPoolMonitoringEvent {
/** The options used to create this connection pool */
options?: ConnectionPoolOptions;
options: Omit<ConnectionPoolOptions, 'credentials'> & { credentials?: Record<never, never> };
/** @internal */
name = CONNECTION_POOL_CREATED;

/** @internal */
constructor(pool: ConnectionPool) {
super(pool);
this.options = pool.options;
if (pool.options.credentials != null) {
// Intentionally remove credentials: NODE-5460
this.options = { ...pool.options, credentials: {} };
} else {
this.options = pool.options;
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import { expect } from 'chai';
import { once } from 'events';

import { type MongoClient } from '../../mongodb';
import { loadSpecTests } from '../../spec';
import { type CmapTest, runCmapTestSuite } from '../../tools/cmap_spec_runner';
import { runUnifiedSuite } from '../../tools/unified-spec-runner/runner';
Expand All @@ -23,4 +27,37 @@ describe('Connection Monitoring and Pooling (Node Driver)', function () {
'../integration/connection-monitoring-and-pooling/unified-cmap-node-specs'
);
runUnifiedSuite(unifiedTests);

describe('ConnectionPoolCreatedEvent', () => {
let client: MongoClient;
beforeEach(async function () {
client = this.configuration.newClient();
});

afterEach(async function () {
await client.close();
});

describe('constructor()', () => {
it('when auth is enabled redacts credentials from options', {
metadata: { requires: { auth: 'enabled' } },
async test() {
const poolCreated = once(client, 'connectionPoolCreated');
await client.connect();
const [event] = await poolCreated;
expect(event).to.have.deep.nested.property('options.credentials', {});
}
});

it('when auth is disabled does not add a credentials property to options', {
metadata: { requires: { auth: 'disabled' } },
async test() {
const poolCreated = once(client, 'connectionPoolCreated');
await client.connect();
const [event] = await poolCreated;
expect(event).to.not.have.nested.property('options.credentials');
}
});
});
});
});