diff --git a/src/sql/workbench/contrib/commandLine/electron-browser/commandLine.ts b/src/sql/workbench/contrib/commandLine/electron-browser/commandLine.ts index db61fa59f0..0ede40229d 100644 --- a/src/sql/workbench/contrib/commandLine/electron-browser/commandLine.ts +++ b/src/sql/workbench/contrib/commandLine/electron-browser/commandLine.ts @@ -34,11 +34,10 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment' const connectAuthority = 'connect'; -interface SqlArgs { +export interface SqlArgs { _?: string[]; - aad?: boolean; + authenticationType?: string database?: string; - integrated?: boolean; server?: string; user?: string; command?: string; @@ -220,11 +219,11 @@ export class CommandLineWorkbenchContribution implements IWorkbenchContribution, let profile = new ConnectionProfile(this._capabilitiesService, null); // We want connection store to use any matching password it finds profile.savePassword = true; - profile.providerName = args.provider ? args.provider : Constants.mssqlProviderName; + profile.providerName = args.provider ?? Constants.mssqlProviderName; profile.serverName = args.server; - profile.databaseName = args.database ? args.database : ''; - profile.userName = args.user ? args.user : ''; - profile.authenticationType = args.integrated ? Constants.integrated : args.aad ? Constants.azureMFA : (profile.userName.length > 0) ? Constants.sqlLogin : Constants.integrated; + profile.databaseName = args.database ?? ''; + profile.userName = args.user ?? ''; + profile.authenticationType = args.authenticationType ?? Constants.integrated; profile.connectionName = ''; profile.setOptionValue('applicationName', Constants.applicationName); profile.setOptionValue('databaseDisplayName', profile.databaseName); diff --git a/src/sql/workbench/contrib/commandLine/test/electron-browser/commandLine.test.ts b/src/sql/workbench/contrib/commandLine/test/electron-browser/commandLine.test.ts index 175ce78a2d..169a654079 100644 --- a/src/sql/workbench/contrib/commandLine/test/electron-browser/commandLine.test.ts +++ b/src/sql/workbench/contrib/commandLine/test/electron-browser/commandLine.test.ts @@ -8,7 +8,7 @@ import * as TypeMoq from 'typemoq'; import * as azdata from 'azdata'; import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile'; import { ConnectionProfileGroup } from 'sql/platform/connection/common/connectionProfileGroup'; -import { CommandLineWorkbenchContribution } from 'sql/workbench/contrib/commandLine/electron-browser/commandLine'; +import { CommandLineWorkbenchContribution, SqlArgs } from 'sql/workbench/contrib/commandLine/electron-browser/commandLine'; import * as Constants from 'sql/platform/connection/common/constants'; import { ParsedArgs } from 'vs/platform/environment/node/argv'; import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService'; @@ -35,11 +35,9 @@ import { FileEditorInput } from 'vs/workbench/contrib/files/common/editors/fileE import { FileQueryEditorInput } from 'sql/workbench/contrib/query/common/fileQueryEditorInput'; import { TestDialogService } from 'vs/platform/dialogs/test/common/testDialogService'; -class TestParsedArgs implements ParsedArgs { +class TestParsedArgs implements ParsedArgs, SqlArgs { [arg: string]: any; _: string[]; - aad?: boolean; - add?: boolean; database?: string; command?: string; debugBrkPluginHost?: string; @@ -67,7 +65,6 @@ class TestParsedArgs implements ParsedArgs { help?: boolean; 'install-extension'?: string[]; 'install-source'?: string; - integrated?: boolean; 'list-extensions'?: boolean; locale?: string; log?: string; @@ -97,6 +94,7 @@ class TestParsedArgs implements ParsedArgs { version?: boolean; wait?: boolean; waitMarkerFilePath?: string; + authenticationType?: string; } suite('commandLineService tests', () => { @@ -197,6 +195,8 @@ suite('commandLineService tests', () => { args.server = 'myserver'; args.database = 'mydatabase'; args.user = 'myuser'; + args.authenticationType = Constants.sqlLogin; + connectionManagementService.setup((c) => c.showConnectionDialog()).verifiable(TypeMoq.Times.never()); connectionManagementService.setup(c => c.hasRegisteredServers()).returns(() => true).verifiable(TypeMoq.Times.atMostOnce()); connectionManagementService.setup(c => c.getConnectionGroups(TypeMoq.It.isAny())).returns(() => []); @@ -373,6 +373,7 @@ suite('commandLineService tests', () => { args.server = 'myserver'; args.database = 'mydatabase'; args.user = 'myuser'; + args.authenticationType = Constants.sqlLogin; args._ = ['c:\\dir\\file.sql']; connectionManagementService.setup((c) => c.showConnectionDialog()).verifiable(TypeMoq.Times.never()); connectionManagementService.setup(c => c.hasRegisteredServers()).returns(() => true).verifiable(TypeMoq.Times.atMostOnce()); @@ -436,7 +437,7 @@ suite('commandLineService tests', () => { test('handleUrl opens a new connection if a server name is passed', async () => { // Given a URI pointing to a server - let uri: URI = URI.parse('azuredatastudio://connect?server=myserver&database=mydatabase&user=myuser'); + let uri: URI = URI.parse('azuredatastudio://connect?server=myserver&database=mydatabase&user=myuser&authenticationType=SqlLogin'); const connectionManagementService: TypeMoq.Mock = TypeMoq.Mock.ofType(TestConnectionManagementService, TypeMoq.MockBehavior.Strict); @@ -527,7 +528,7 @@ suite('commandLineService tests', () => { test('handleUrl ignores commands and connects', async () => { // Given I pass a command - let uri: URI = URI.parse('azuredatastudio://connect?command=mycommand&server=myserver&database=mydatabase&user=myuser'); + let uri: URI = URI.parse('azuredatastudio://connect?command=mycommand&server=myserver&database=mydatabase&user=myuser&authenticationType=SqlLogin'); const connectionManagementService: TypeMoq.Mock = TypeMoq.Mock.ofType(TestConnectionManagementService, TypeMoq.MockBehavior.Strict);