- 
    Type:
Bug
 - 
    Resolution: Fixed
 - 
    Priority:
Major - P3
 - 
    Affects Version/s: None
 - 
    Component/s: None
 
- 
        3
 - 
        Not Needed
 - 
        None
 
- 
        v4.x
 
- 
        Not Needed
 - 
        
 
- 
        None
 - 
        None
 - 
        None
 - 
        None
 - 
        None
 - 
        None
 
What problem are you facing?
The platform field of the client metadata is being set to:
"Node.js v16.13.0, LE (unified)|Node.js v16.13.0, LE (unified)"
the text after the vertical bar is supposed to be text from a driver wrapper or other custom driverInfo settings.
What driver and relevant dependency versions are you using?
Steps to reproduce?
connect a 4.x client to mongod and inspect the connection logs.
Acceptance Criteria
- Prevent many calls to makeClientMetadata from duplicating the platform string
 - Refactor initial handshake generation.
 - Add unit testing to cover makeClientMetadata
 - Test that driverInfo options are appended only once
	
- Users can provide driverInfo name, version, and platform, which should be appended to the Node.js results of those properties separated by a bar character '|'
 - Example: If I pass this driverInfo option into the MongoClient
{ driverInfo: { platform: 'myPlatform', name: 'myName', version: 'myVersion' } }the metadata should have:
{ driver: { name: 'nodejs|myName', version: '4.7.0|myVersion' } platform: 'Node.js v16.13.0, LE (unified)|myPlatform' }Each property (name, version, platform) is optional in driverInfo, we only append '|' + user data if passed a non-empty string.
 
 
- Assert the results always have the following shape: (See linked reference slides)
{ driver: { name: 'nodejs', version: '4.7.0' }, os: { type: 'Darwin', name: 'darwin', architecture: 'x64', version: '21.5.0' }, platform: 'Node.js v16.13.0, LE (unified)' }