Move the hardcoded account endpoint suffixes out of Constants and into ConfigContext so connection string login works in sovereign clouds and PPE, and widen ConnectionStringParser to accept every configured zone.
Surface Portal Backend rejections in the hosted connect form: read the body off the Response that fetchEncryptedToken throws, and offer a firewall help link on a 403.
Add an E2E test covering SQL connection string login against an account with public network access disabled.
* Add client-side connection-string login for SQL, Tables, and Gremlin
SQL, Tables, and Gremlin now sign data-plane requests client-side with the account key and skip the Portal Backend proxy (generatetoken/accessinputmetadata/authorizationtokens). Adds client-side host/account validation mirroring the backend ValidateHostAndAccount, plus a real CosmosClient connectivity probe that gates opening the Data Explorer. Mongo and Cassandra continue to use the encrypted-token proxy path.
* Localize connection-string login validation and connectivity messages
Move the hardcoded SQL/Tables/Gremlin connection-string login strings into en/Resources.json and reference them via the type-safe Keys object (t(Keys.connectExplorer.errors.*)).
* Drop unused mongodb:// branch from endpoint host extraction
* Remove Data Explorer references from connectivity probe comment
* Reword proxy reference in ConnectionString comment
* Fix trailing whitespace in connectivity probe comment
* Send connection string in Authorization header for Mongo/Cassandra token request
* Add E2E connection string login tests for SQL, Gremlin, and Tables
* Add wrong account key test for SQL connection string login
* Add access token to authorization header for encrypted token flow
* Wire connection string login E2E tests to dedicated connstring accounts in CI
Add TestAuthType and fold connection-string account resolution into getAccountName; seed and target the dedicated *-connstring accounts in CI while falling back to the standard per-API account locally.
* Handle connection string account types in getTestExplorerUrl switch
* Move globalThis.crypto polyfill to fx.ts so it runs for all specs
* Remove connection string validation for connection string login
- Remove validateDirectConnectionStringLogin and its helpers (extractEndpointHostFromConnectionString, extractHostToken, directLoginAllowlistedEndpointZones)
- Remove old extractMasterKeyfromConnectionString (Gremlin-specific), rename extractAccountKeyFromConnectionString to extractMasterKeyfromConnectionString
- Change validateDirectConnectionStringConnectivity to throw on error instead of returning string|undefined
- Simplify direct-login flow: submit connection string to CosmosClient as-is, no format or endpoint validation
- Keep connectivity pre-check (throws if CosmosClient cannot reach account)
- Remove 6 unused localization keys for validation errors
- Update tests to match new behavior
* Send authorization header for connection string login backend calls
* Simplify connection string login error handling
- Lift the login error state into HostedExplorer so failures from the connect form and from a postMessage login share one source of truth
- Show the message returned by the service instead of falling back to a generic unreachable message
- Move isAuthorizationError into AuthorizationUtils alongside the other shared auth helpers
- Widen getErrorMessage to accept unknown so catch variables no longer need a cast
- Show the connect screen error tooltip beside the icon and widen it so long service messages fit
- Consolidate the repeated account lookup and login steps in the SQL connection string spec
* Consolidate hosted login account metadata into a single state
Encrypted-token and direct connection-string logins now write to one accountMetadata state instead of two, which also fixes the connect form staying mounted after a successful SQL/Tables/Gremlin login. Deletes the now-unused useTokenMetadata hook and moves fetchAccessData to Platform/Hosted/Helpers/PortalAccessData.ts.
* Accept connection string logins without validating them
SQL, Tables, and Gremlin logins probed the account before signing in, so a user whose key was wrong or whose account was unreachable was blocked at the connect form. The probe is now gone: the connection string is accepted as-is and any bad key surfaces on the data-plane requests made from inside the explorer.
Removes validateDirectConnectionStringConnectivity, isAuthorizationError, and the connectExplorer.errors.connectFailed string along with their tests.
Also takes documentEndpoint straight from the AccountEndpoint in SQL and Gremlin connection strings instead of rebuilding it from the account name and a hardcoded DNS zone. Tables still derives it, since a Tables connection string only carries the table endpoint.
* Keep the connect form login error local to ConnectExplorer
The error state was lifted into HostedExplorer so a postMessage login could report failures, which meant the connect screen needed a second copy of the error markup for the AAD view. That copy fell outside the connectExplorerContent selector the tooltip styles are scoped to, so it rendered the message as unstyled inline text.
Move the state back into ConnectExplorer and let connectWithConnectionString log the failure as it did before. A failed postMessage login still leaves the user on the connect screen either way.
* Move Portal Backend calls into a PortalBackendClient helper
fetchEncryptedToken and isAccountRestrictedForConnectionStringLogin lived in ConnectExplorer.tsx, so HostedExplorer imported a network call from a React component. Merge them with fetchAccessData into src/Platform/Hosted/Helpers/PortalBackendClient.ts along with the PortalBackendError type, leaving ConnectExplorer as UI only.
* Leave the encrypted token login path as it is on master
The direct connection string login work does not change how Mongo and Cassandra logins fail, so drop the 401/403 handling this branch added around fetchEncryptedToken along with the now unused isAuthorizationError helper.
* Move the Portal Backend connection string calls out of Helpers
Helpers holds pure string utilities, and every other *Client in the repo sits at its domain root, so name the module for the endpoints it wraps and place it beside HostedUtils. Also drop the branch's ConnectScreen.less tooltip restyle, which was unrelated to connection string login.
* Move the Portal Backend client to Common
The module is a plain service client with no dependency on the hosted platform, and CosmosClient and MetricEvents already hand roll their own Portal Backend calls, so Common is where a shared client belongs.
* Add an E2E test that SQL connection string login skips the Portal Backend
Nothing asserted the defining behavior of the direct login path, so reverting the short-circuit in connectWithConnectionString would have gone unnoticed. The listener filters on the connectionstring route so it covers both generatetoken and accessinputmetadata, and leaves the account restriction check alone since that still runs for every API.
* Refer to the Table API as Table in comments
The comments added by this branch alternated between Table and Tables when naming the API alongside SQL and Gremlin. TablesDB is left alone since that is the literal database name, as is the plural noun where it refers to actual tables.
---------
Co-authored-by: Asier Isayas <aisayas@microsoft.com>
* Update Az CLI to use new secrets.
* Add test step for Az login
* Remove test step. Fix up account names in test code.
* Fix the account prefix env. variable.
* Fix it in the CI config as well.
* Try to fix the CI config for some tests
* Clean up access tokens for NoSQL.
* Disable most tests while sorting out account setup. Add debug tracing.
* Comment out most tests.
* Set RG Name var in CI config.
* Fix up tenant id.
* Enable other API tests
* e-enable more tests.
* Re-enable remaining tests.
* Remove all of the test.skip() calls.
* Remove debug traces.
* Remove function to retrieve SQL RBAC token, this is handled by the CI config now.
* Fix rbac token detection for table and resource token tests.
* Minor cleanup and fixing the cleanup config.
* Preview site and storage changes. Cleanup script changes.
* Clean up before PR.
* Fix resource group name in test results email.
* Fix query tab view: respect default setting and add toggle behavior
- Use getDefaultQueryResultsView() when splitterDirection prop is not
provided, so the user's configured default from Settings is respected
- Add onCommandClick to the View split button that toggles between
Vertical and Horizontal layout when the main button is clicked
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add Playwright E2E tests for query tab View toggle and dropdown
- Add View to CommandBarButton enum in test fixtures
- Add test: clicking main View button toggles between vertical/horizontal
- Add test: selecting options from View dropdown changes layout
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add Playwright E2E tests for query tab View toggle and dropdown
- Add View to CommandBarButton enum in test fixtures
- Add test: clicking main View button toggles between vertical/horizontal
- Add test: selecting options from View dropdown changes layout
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix issue that was failing tests when using account keys for access.
* Remove commented code.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Scale the number of test accounts used for SQL tests to one per shard.
* Set PLAYWRIGHT_SHARD_INDEX environment variable in CI workflow.
* Add log statement for the shared index and selected account.
* Remove console log.
* Fix order of accounts so that shard index maps to same account index.
* Try to fix the SQL account scope in ci.yml
* Get tokens for all accounts and use the shard index to pick which one.
* Set tokens without loop.
* Handcode the token use in tests.
* Fix database creation.
* Add debug for rbac token issues.
* Common function for retrieving NoSQL token.
* Disable eslint rule for noconsole temporarily.
* Move getNoSqlRbacToken to separate file.
* Fix ref to new function.
* mock Resource Graph API — fires on auto-subscription selection to populate account dropdown
* Code tidy-up.
* Fix build errors.
---------
Co-authored-by: Bikram Choudhury <bchoudhury@microsoft.com>
* Copilot assisted changes to remove shared throughput options in add database/container.
* Add E2E tests verifying shared throughput option is removed from creation dialogs
Add three new E2E tests to sharedThroughput.spec.ts:
- New Database panel should not show shared throughput checkbox
- New Container panel should not show shared throughput checkbox when creating new database
- Dedicated throughput checkbox still appears for existing shared database (regression guard)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* default throughput bucket
* nit
* show inactive buckets
* add e2e tests for default throughput bucket
* for test sql containers, use throughput of 4000
* remove container throughput on creation
* added offer throughput
* add default throughput bucket info link
* add text localization
* upgrade playwright
* Fix flaky permissionsScreen test by using unrouteAll with ignoreErrors
* fix: move container creation to beforeAll to reduce CI shard timeout
* remove comment
---------
Co-authored-by: Asier Isayas <aisayas@microsoft.com>
* Fix cleanupDBs.js: use async iteration for Azure SDK paged results
* update node version
* fix cleanup script to use new Cosmos SDK APIs correctly
* get rid of global crypto
* fix flakiness
* revert DE pipeline to use Node 18
* nit
---------
Co-authored-by: Asier Isayas <aisayas@microsoft.com>
* Handle partition key path with white space
* add whitespace test case for pkey
* remove trailing whitespace
---------
Co-authored-by: Asier Isayas <aisayas@microsoft.com>
* Add changes for Load more option to work
* Remove localhost
* Add Mongo Pagination tests
* Run npm format
* Fix timeout in tests
* Revert "Fix timeout in tests"
This reverts commit 418b81c490.
* Fix timeout in tests
* Minor fix
* Revert "Minor fix"
This reverts commit 87fe289e3a.
* Revert "Fix timeout in tests"
This reverts commit 11c5748a31.
* Fix timeout
* Add changes for Load more option to work
* Remove localhost
* Add Mongo Pagination tests
* Run npm format
* Fix error in tests
* Cleanup CORSByPass
* Revert "Cleanup CORSByPass"
This reverts commit de11ece337.
* Add sharedThroughput db tests
* Run npm commands
* Run npm format
* Fix error with adding container to shared db test
* Add changes for Load more option to work
* Remove localhost
* Add Mongo Pagination tests
* Run npm format
* Revert "Add Mongo Pagination tests"
This reverts commit 50a244e6f9.
* Minor fixes
* Fix errors
* Minor fix
* Fix tests
* Address comments
* Address comments
* dont refresh tree when opening scale & settings
* disable offline/online migration tests
* delete db after each test
* DEBUG: expand console for mongo testing
* find first execute button for stored procedure
* DEBUG: wait for editor to process changes
* increase wait time to 5s
* verify document text was set
* keep document spec as original
* debug new document and save document count
* when loading a document, wait for document text to appear then click new document
* wait for document to be loaded
* remove debug statement
* wait for results to attach
* do forced wait instead
* cleanup tests
* uncomment container copy tests
* run test account cleanup every 12 hours
* change cleanup frequency to once a day
---------
Co-authored-by: Asier Isayas <aisayas@microsoft.com>
* Temporarily re-enable key based auth for Mongo and Cassandra tests.
* Increase number of shards for playwright tests.
* Another small bump to test shard count.
* click global new... button then collection in playwright tests
* get new table button
* create and delete container for every individual scale test
* for scale and settings, dont create sample data in container
* run scale tests serially
* refactor scale setup and tear down to be within each test
* record network traces
* record network calls on all retries
* when disposing of database during playwright test, refresh tree to remove deleted database
* refresh tree before opening scale and settings
* When opening scale and settings, refresh databases
* reload all databases before loading offers
* increase time for change partition key request
* increase time for change partition key request
* refresh databases in test instead of product code
* when refreshing containers, open console window to check for status completion
* close notification console window after seeing desired log
* create and delete a container for each individual test
* dont delete database after every test. leave it to the CI
* Don't refresh databases when opening Scale+Settings and only delete database if running locally
* only open scale and settings at the beginning of each test suite
* get it back to working
* change settings.spect.ts from serial to parallel
* don't delete database after each test
* update container creation throughpout to be 5000
* run tests with no throughput limit on the account
* adjust scale test to reflect no throughput limit on account
* remove test container throughput
* don't refresh collections when clicking settings in product code
* refactor and run cleanup during pr check
* copy cleanup accounts
* run cleanup after playwright tests
* run cleanup every three hours
* revert ci.yml
* update cpk test
* remove cpk
* remove cleanup accounts and add cpk
* add cpk
* remove cpk changes
* revert ci.yml
* run cleanup every two hours
---------
Co-authored-by: Jade Welton <jawelton@microsoft.com>
Co-authored-by: Asier Isayas <aisayas@microsoft.com>
* Add E2E test changes to support RBAC for Mongo and Cassandra.
* Uncomment Mongo changes.
* Be more selective with which tokens are passed to DE for each test.
* Acquire token for NoSQL account prior to running tests.
* Change client id to user assigned managed identity.
* Change to use managed identity. Add token variables for gremlin and
tables.
* Add RBAC details to test README.
* Add token for SQL readonly database. Skip resource token tests when RBAC
enabled.
* Use hardcoded account name for sql readonly.
* Use specific tag for sql readonly.
* Remove comment.
* fix partition key missing not being able to load the document
* Implement E2E tests for documents with different partitionkeys
* Implement E2E tests for documents with different partitionkeys
* Implement E2E tests for documents with different partitionkeys
* Updated snapshot
* Updated tests for MongoRU and add create/delete tests
* Fixing system partition key showing up in Data Explorer
* fix partition key missing not being able to load the document
* Implement E2E tests for documents with different partitionkeys
* Implement E2E tests for documents with different partitionkeys
* Implement E2E tests for documents with different partitionkeys
* Updated snapshot
* Default to new backend endpoint if the endpoint in current context does not match existing set in constants.
* Remove some env references.
* Added comments with reasoning for selecting new backend by default.
* Update comment.
* Remove all references to useNewPortalBackendEndpoint now that old backend is disabled in all environments.
* Resolve lint issues.
* Removed references to old backend from Cassandra and Mongo Apis
* fix unit tests
---------
Co-authored-by: Asier Isayas <aisayas@microsoft.com>
* Introduce common function for shared throughput default and set to
false.
* Add new file.
* Adjust E2E tests to not set throughput for database create.
* start redesign work
* add left padding to all tree nodes
* fiddling with padding
* align tab bar line with first item in resource tree
* final touch ups
* fix a strange password manager autofill prompt
* add keyboard shortcuts
* revert testing change
* nudge messagebar to layout row height
* tidy up
* switch to Allotment to stop ResizeObserver issues with monaco
* refmt and fix lints
* fabric touch-ups
* update snapshots
* remove explicit react-icons dependency
* reinstall packages
* remove background from FluentProvider
* fix alignment of message bar
* undo temporary workaround
* restore refresh button
* fix e2e tests and reformat
* fix compiler error
* remove uiw/react-split
* uncomment selection change on expand
* Upgrade typescript to 4.9.5
* Fix compile issue and put back files in tsconfig.strict.json
* Update test snapshots
* Fix jest tests by upgrading jest and other related packages.
* Attempt to fix playwright test
* Revert "Attempt to fix playwright test"
This reverts commit 8293f34c9c.
* 2nd attempt to fix example test
* fix waitFor in playwright
* Remove unused describe section
* Attempt to fix e2e test
* Revert "Attempt to fix e2e test"
This reverts commit 9745bcd2ef.
* Upgrade playwright to latest
* Revert "Upgrade playwright to latest"
This reverts commit e2ea1d0189.
* Error test on e2e
* Revert "Error test on e2e"
This reverts commit 124e3764f7.
* Try to select dropdown item by xpath selector
* Revert "Try to select dropdown item by xpath selector"
This reverts commit 8eb42a64e2.
* Attempt to wait until page is fully loaded
* Revert "Attempt to wait until page is fully loaded"
This reverts commit bb43fcea6e.
* Use playwright selectOption to select dropdown option
* Revert "Use playwright selectOption to select dropdown option"
This reverts commit daa8cd0930.
* Select dropdown option with playwright api instead of manual click
* c7ab4c7ecf7b05f32a85568bce1a667ad8c62703Revert "Select dropdown option with playwright api instead of manual click"
This reverts commit c7ab4c7ecf.
* Wait for 5s after dropdown click
* Revert "Wait for 5s after dropdown click"
This reverts commit 847e9ad33f.
* Try forcing click
* Revert "Try forcing click"
This reverts commit 29b9fa1bda.
* Force click on the dropdown and set viewport size bigger.
* Force click on the dropdown and set viewport size bigger.
* try force clicking option
* Skip container test on webkit
* Add branded browsers to e2e tests
---------
Co-authored-by: Ashley Stanton-Nurse <ashleyst@microsoft.com>