-
Notifications
You must be signed in to change notification settings - Fork 1.8k
feat(NODE-7046)!: remove AWS uri/options support #4689
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
Merged
Changes from all commits
Commits
Show all changes
26 commits
Select commit
Hold shift + click to select a range
9a47fca
feat(NODE-7046): remove AWS uri support
durran 5c6d9de
test: skip relevant tests
durran 28539cb
fix: arg placement
durran c6545f3
chore: submodule update
durran f68d8ef
feat: throw if credentials set
durran 813cac4
fix: assume role
durran 1c45bb2
test: bring back regular
durran e6c0bfd
test: regen config
durran cd6e6f7
test: aws handler
durran b5aaf29
chore: submodule
durran b842edc
Merge branch 'main' into NODE-7046
durran 4b8c7d4
test: sync
durran 22caa48
chore: comments
durran 349827b
test: fix tests
durran 21ca884
chore: submmodule
durran 53274dc
refactor: back to internal
durran fe3959d
Merge branch 'main' into NODE-7046
durran c963108
chore: comments
durran f393d5a
Update test/integration/node-specific/examples/aws_handler.js
durran b8882c9
Update src/connection_string.ts
durran 8af4446
Update src/connection_string.ts
durran c5a53b1
Merge branch 'main' into NODE-7046
durran 5caa5f5
test: aws test
durran 3edd7f9
fix: lint
durran 4f730d9
chore: comments
durran 5df4860
fix: lint
durran File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,3 @@ | ||
| [submodule "drivers-evergreen-tools"] | ||
| path = drivers-evergreen-tools | ||
| url = https://github.com/mongodb-labs/drivers-evergreen-tools.git | ||
| url = https://github.com/mongodb-labs/drivers-evergreen-tools.git |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,100 @@ | ||
| import * as process from 'node:process'; | ||
|
|
||
| import { expect } from 'chai'; | ||
|
|
||
| import { AWSSDKCredentialProvider, type MongoClient, MongoServerError } from '../../mongodb'; | ||
|
|
||
| const isMongoDBAWSAuthEnvironment = (process.env.MONGODB_URI ?? '').includes('MONGODB-AWS'); | ||
|
|
||
| describe('MONGODB-AWS Prose Tests', function () { | ||
| let client: MongoClient; | ||
|
|
||
| beforeEach(function () { | ||
| if (!isMongoDBAWSAuthEnvironment) { | ||
| this.currentTest.skipReason = 'requires MONGODB_URI to contain MONGODB-AWS auth mechanism'; | ||
| return this.skip(); | ||
| } | ||
| }); | ||
|
|
||
| afterEach(async () => { | ||
| await client?.close(); | ||
| }); | ||
|
|
||
| // NOTE: Logic for scenarios 1-6 is handled via the evergreen variant configs. | ||
| // Scenarios 1-6 from the previous section with a user provided AWS_CREDENTIAL_PROVIDER auth mechanism | ||
| // property. This credentials MAY be obtained from the default credential provider from the AWS SDK. | ||
| // If the default provider does not cover all scenarios above, those not covered MAY be skipped. | ||
| // In these tests the driver MUST also assert that the user provided credential provider was called | ||
| // in each test. This may be via a custom function or object that wraps the calls to the custom provider | ||
| // and asserts that it was called at least once. For test scenarios where the drivers tools scripts put | ||
| // the credentials in the MONGODB_URI, drivers MAY extract the credentials from the URI and return the AWS | ||
| // credentials directly from the custom provider instead of using the AWS SDK default provider. | ||
| context('1. Custom Credential Provider Authenticates', function () { | ||
| let providerCount = 0; | ||
|
|
||
| it('authenticates with a user provided credentials provider', async function () { | ||
| const credentialProvider = AWSSDKCredentialProvider.awsSDK; | ||
| const provider = async () => { | ||
| providerCount++; | ||
| return await credentialProvider.fromNodeProviderChain().apply(); | ||
| }; | ||
| client = this.configuration.newClient(process.env.MONGODB_URI, { | ||
| authMechanismProperties: { | ||
| AWS_CREDENTIAL_PROVIDER: provider | ||
| } | ||
| }); | ||
|
|
||
| const result = await client | ||
| .db('aws') | ||
| .collection('aws_test') | ||
| .estimatedDocumentCount() | ||
| .catch(error => error); | ||
|
|
||
| expect(result).to.not.be.instanceOf(MongoServerError); | ||
| expect(result).to.be.a('number'); | ||
| expect(providerCount).to.be.greaterThan(0); | ||
| }); | ||
| }); | ||
|
|
||
| context('2. Custom Credential Provider Authentication Precedence', function () { | ||
| // Run this test in an environment with AWS credentials configured as environment variables | ||
| // (e.g. AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_SESSION_TOKEN) | ||
| // Create a MongoClient configured to use AWS auth. Example: mongodb://localhost:27017/?authMechanism=MONGODB-AWS. | ||
| // Configure a custom credential provider to pass valid AWS credentials. The provider must track if it was called. | ||
| // Expect authentication to succeed and the custom credential provider was called. | ||
| context('Case 2: Custom Provider Takes Precedence Over Environment Variables', function () { | ||
| let providerCount = 0; | ||
| let provider; | ||
|
|
||
| beforeEach(function () { | ||
| if (client?.options.credentials.username || !process.env.AWS_ACCESS_KEY_ID) { | ||
| this.skipReason = 'Test only runs when credentials are present in the environment'; | ||
| return this.skip(); | ||
| } | ||
| const credentialProvider = AWSSDKCredentialProvider.awsSDK; | ||
| provider = async () => { | ||
| providerCount++; | ||
| return await credentialProvider.fromNodeProviderChain().apply(); | ||
| }; | ||
| }); | ||
|
|
||
| it('authenticates with a user provided credentials provider', async function () { | ||
| client = this.configuration.newClient(process.env.MONGODB_URI, { | ||
| authMechanismProperties: { | ||
| AWS_CREDENTIAL_PROVIDER: provider | ||
| } | ||
| }); | ||
|
|
||
| const result = await client | ||
| .db('aws') | ||
| .collection('aws_test') | ||
| .estimatedDocumentCount() | ||
| .catch(error => error); | ||
|
|
||
| expect(result).to.not.be.instanceOf(MongoServerError); | ||
| expect(result).to.be.a('number'); | ||
| expect(providerCount).to.be.greaterThan(0); | ||
| }); | ||
| }); | ||
| }); | ||
| }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -440,6 +440,21 @@ | |
| } | ||
| } | ||
| }, | ||
| { | ||
dariakp marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| "description": "should throw an exception if username provided (MONGODB-AWS)", | ||
| "uri": "mongodb://[email protected]/?authMechanism=MONGODB-AWS", | ||
| "valid": false | ||
| }, | ||
| { | ||
| "description": "should throw an exception if username and password provided (MONGODB-AWS)", | ||
| "uri": "mongodb://user:[email protected]/?authMechanism=MONGODB-AWS", | ||
| "valid": false | ||
| }, | ||
| { | ||
| "description": "should throw an exception if AWS_SESSION_TOKEN provided (MONGODB-AWS)", | ||
| "uri": "mongodb://localhost/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:token", | ||
| "valid": false | ||
| }, | ||
| { | ||
| "description": "should recognise the mechanism with test environment (MONGODB-OIDC)", | ||
| "uri": "mongodb://localhost/?authMechanism=MONGODB-OIDC&authMechanismProperties=ENVIRONMENT:test", | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -320,6 +320,15 @@ tests: | |
| mechanism: MONGODB-AWS | ||
| mechanism_properties: | ||
| AWS_SESSION_TOKEN: token!@#$%^&*()_+ | ||
| - description: should throw an exception if username provided (MONGODB-AWS) | ||
dariakp marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| uri: mongodb://[email protected]/?authMechanism=MONGODB-AWS | ||
| valid: false | ||
| - description: should throw an exception if username and password provided (MONGODB-AWS) | ||
| uri: mongodb://user:[email protected]/?authMechanism=MONGODB-AWS | ||
| valid: false | ||
| - description: should throw an exception if AWS_SESSION_TOKEN provided (MONGODB-AWS) | ||
| uri: mongodb://localhost/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:token | ||
| valid: false | ||
| - description: should recognise the mechanism with test environment (MONGODB-OIDC) | ||
| uri: mongodb://localhost/?authMechanism=MONGODB-OIDC&authMechanismProperties=ENVIRONMENT:test | ||
| valid: true | ||
|
|
@@ -468,4 +477,4 @@ tests: | |
| (MONGODB-OIDC) | ||
| uri: mongodb://user:pass@localhost/?authMechanism=MONGODB-OIDC&authMechanismProperties=ENVIRONMENT:k8s | ||
| valid: false | ||
| credential: null | ||
| credential: null | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.