mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
ML - Modified sqmlutils version to fix Windows auth issue (#10639)
* Modified sqmlutils version
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
"requiredPythonPackages": [
|
"requiredPythonPackages": [
|
||||||
{
|
{
|
||||||
"name": "sqlmlutils",
|
"name": "sqlmlutils",
|
||||||
"version": "1.0.0"
|
"version": "1.0.1"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"requiredRPackages": [
|
"requiredRPackages": [
|
||||||
|
|||||||
@@ -67,13 +67,14 @@ export class SqlPythonPackageManageProvider extends SqlPackageManageProviderBase
|
|||||||
let port = '1433';
|
let port = '1433';
|
||||||
let server = connection.serverName;
|
let server = connection.serverName;
|
||||||
let database = databaseName ? `, database="${databaseName}"` : '';
|
let database = databaseName ? `, database="${databaseName}"` : '';
|
||||||
|
const auth = connection.userName ? `, uid="${connection.userName}", pwd="${credentials[azdata.ConnectionOptionSpecialType.password]}"` : '';
|
||||||
let index = connection.serverName.indexOf(',');
|
let index = connection.serverName.indexOf(',');
|
||||||
if (index > 0) {
|
if (index > 0) {
|
||||||
port = connection.serverName.substring(index + 1);
|
port = connection.serverName.substring(index + 1);
|
||||||
server = connection.serverName.substring(0, index);
|
server = connection.serverName.substring(0, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
let pythonConnectionParts = `server="${server}", port=${port}, uid="${connection.userName}", pwd="${credentials[azdata.ConnectionOptionSpecialType.password]}"${database})`;
|
let pythonConnectionParts = `server="${server}", port=${port}${auth}${database})`;
|
||||||
let pythonCommandScript = scriptMode === ScriptMode.Install ?
|
let pythonCommandScript = scriptMode === ScriptMode.Install ?
|
||||||
`pkgmanager.install(package="${packageDetails.name}", version="${packageDetails.version}")` :
|
`pkgmanager.install(package="${packageDetails.name}", version="${packageDetails.version}")` :
|
||||||
`pkgmanager.uninstall(package_name="${packageDetails.name}")`;
|
`pkgmanager.uninstall(package_name="${packageDetails.name}")`;
|
||||||
|
|||||||
@@ -132,6 +132,7 @@ describe('SQL Python Package Manager', () => {
|
|||||||
let connection = new azdata.connection.ConnectionProfile();
|
let connection = new azdata.connection.ConnectionProfile();
|
||||||
connection.serverName = 'serverName';
|
connection.serverName = 'serverName';
|
||||||
connection.databaseName = 'databaseName';
|
connection.databaseName = 'databaseName';
|
||||||
|
connection.userName = 'user';
|
||||||
let credentials = { [azdata.ConnectionOptionSpecialType.password]: 'password' };
|
let credentials = { [azdata.ConnectionOptionSpecialType.password]: 'password' };
|
||||||
testContext.apiWrapper.setup(x => x.getCurrentConnection()).returns(() => { return Promise.resolve(connection); });
|
testContext.apiWrapper.setup(x => x.getCurrentConnection()).returns(() => { return Promise.resolve(connection); });
|
||||||
testContext.apiWrapper.setup(x => x.getCredentials(TypeMoq.It.isAny())).returns(() => { return Promise.resolve(credentials); });
|
testContext.apiWrapper.setup(x => x.getCredentials(TypeMoq.It.isAny())).returns(() => { return Promise.resolve(credentials); });
|
||||||
@@ -173,6 +174,7 @@ describe('SQL Python Package Manager', () => {
|
|||||||
let connection = new azdata.connection.ConnectionProfile();
|
let connection = new azdata.connection.ConnectionProfile();
|
||||||
connection.serverName = 'serverName';
|
connection.serverName = 'serverName';
|
||||||
connection.databaseName = 'databaseName';
|
connection.databaseName = 'databaseName';
|
||||||
|
connection.userName = 'user';
|
||||||
let credentials = { [azdata.ConnectionOptionSpecialType.password]: 'password' };
|
let credentials = { [azdata.ConnectionOptionSpecialType.password]: 'password' };
|
||||||
testContext.apiWrapper.setup(x => x.getCurrentConnection()).returns(() => { return Promise.resolve(connection); });
|
testContext.apiWrapper.setup(x => x.getCurrentConnection()).returns(() => { return Promise.resolve(connection); });
|
||||||
testContext.apiWrapper.setup(x => x.getCredentials(TypeMoq.It.isAny())).returns(() => { return Promise.resolve(credentials); });
|
testContext.apiWrapper.setup(x => x.getCredentials(TypeMoq.It.isAny())).returns(() => { return Promise.resolve(credentials); });
|
||||||
@@ -213,6 +215,7 @@ describe('SQL Python Package Manager', () => {
|
|||||||
let connection = new azdata.connection.ConnectionProfile();
|
let connection = new azdata.connection.ConnectionProfile();
|
||||||
connection.serverName = 'serverName,3433';
|
connection.serverName = 'serverName,3433';
|
||||||
connection.databaseName = 'databaseName';
|
connection.databaseName = 'databaseName';
|
||||||
|
connection.userName = 'user';
|
||||||
let credentials = { [azdata.ConnectionOptionSpecialType.password]: 'password' };
|
let credentials = { [azdata.ConnectionOptionSpecialType.password]: 'password' };
|
||||||
testContext.apiWrapper.setup(x => x.getCurrentConnection()).returns(() => { return Promise.resolve(connection); });
|
testContext.apiWrapper.setup(x => x.getCurrentConnection()).returns(() => { return Promise.resolve(connection); });
|
||||||
testContext.apiWrapper.setup(x => x.getCredentials(TypeMoq.It.isAny())).returns(() => { return Promise.resolve(credentials); });
|
testContext.apiWrapper.setup(x => x.getCredentials(TypeMoq.It.isAny())).returns(() => { return Promise.resolve(credentials); });
|
||||||
@@ -237,6 +240,88 @@ describe('SQL Python Package Manager', () => {
|
|||||||
should.deepEqual(packagesUpdated, true);
|
should.deepEqual(packagesUpdated, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('installPackages Should not include credential for windows auth', async function (): Promise<void> {
|
||||||
|
let testContext = createContext();
|
||||||
|
let packagesUpdated = false;
|
||||||
|
let packages: nbExtensionApis.IPackageDetails[] = [
|
||||||
|
{
|
||||||
|
'name': 'a-name',
|
||||||
|
'version': '1.1.2'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'b-name',
|
||||||
|
'version': '1.1.1'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
let connection = new azdata.connection.ConnectionProfile();
|
||||||
|
connection.serverName = 'serverName,3433';
|
||||||
|
connection.databaseName = 'databaseName';
|
||||||
|
let credentials = { [azdata.ConnectionOptionSpecialType.password]: 'password' };
|
||||||
|
testContext.apiWrapper.setup(x => x.getCurrentConnection()).returns(() => { return Promise.resolve(connection); });
|
||||||
|
testContext.apiWrapper.setup(x => x.getCredentials(TypeMoq.It.isAny())).returns(() => { return Promise.resolve(credentials); });
|
||||||
|
testContext.processService.setup(x => x.execScripts(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns((path, scripts: string[]) => {
|
||||||
|
|
||||||
|
if (path && scripts.find(x => x.indexOf('install') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('port=3433') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('server="serverName"') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('database="databaseName"') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('package="a-name"') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('version="1.1.2"') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('pwd="password"') < 0)) {
|
||||||
|
packagesUpdated = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Promise.resolve('');
|
||||||
|
});
|
||||||
|
|
||||||
|
let provider = createProvider(testContext);
|
||||||
|
await provider.installPackages(packages, false, connection.databaseName);
|
||||||
|
|
||||||
|
should.deepEqual(packagesUpdated, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('installPackages Should not include database if not specified', async function (): Promise<void> {
|
||||||
|
let testContext = createContext();
|
||||||
|
let packagesUpdated = false;
|
||||||
|
let packages: nbExtensionApis.IPackageDetails[] = [
|
||||||
|
{
|
||||||
|
'name': 'a-name',
|
||||||
|
'version': '1.1.2'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'b-name',
|
||||||
|
'version': '1.1.1'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
let connection = new azdata.connection.ConnectionProfile();
|
||||||
|
connection.serverName = 'serverName,3433';
|
||||||
|
connection.databaseName = '';
|
||||||
|
let credentials = { [azdata.ConnectionOptionSpecialType.password]: 'password' };
|
||||||
|
testContext.apiWrapper.setup(x => x.getCurrentConnection()).returns(() => { return Promise.resolve(connection); });
|
||||||
|
testContext.apiWrapper.setup(x => x.getCredentials(TypeMoq.It.isAny())).returns(() => { return Promise.resolve(credentials); });
|
||||||
|
testContext.processService.setup(x => x.execScripts(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns((path, scripts: string[]) => {
|
||||||
|
|
||||||
|
if (path && scripts.find(x => x.indexOf('install') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('port=3433') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('server="serverName"') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('database="databaseName"') < 0) &&
|
||||||
|
scripts.find(x => x.indexOf('package="a-name"') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('version="1.1.2"') > 0) &&
|
||||||
|
scripts.find(x => x.indexOf('pwd="password"') < 0)) {
|
||||||
|
packagesUpdated = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Promise.resolve('');
|
||||||
|
});
|
||||||
|
|
||||||
|
let provider = createProvider(testContext);
|
||||||
|
await provider.installPackages(packages, false, connection.databaseName);
|
||||||
|
|
||||||
|
should.deepEqual(packagesUpdated, true);
|
||||||
|
});
|
||||||
|
|
||||||
it('installPackages Should not install any packages give empty list', async function (): Promise<void> {
|
it('installPackages Should not install any packages give empty list', async function (): Promise<void> {
|
||||||
let testContext = createContext();
|
let testContext = createContext();
|
||||||
let packagesUpdated = false;
|
let packagesUpdated = false;
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
import * as should from 'should';
|
|
||||||
import 'mocha';
|
|
||||||
import { createContext } from './utils';
|
|
||||||
import { LanguagesDialog } from '../../../views/externalLanguages/languagesDialog';
|
|
||||||
|
|
||||||
describe('External Languages Dialog', () => {
|
|
||||||
it('Should open dialog successfully ', async function (): Promise<void> {
|
|
||||||
let testContext = createContext();
|
|
||||||
let dialog = new LanguagesDialog(testContext.apiWrapper.object, '');
|
|
||||||
dialog.showDialog();
|
|
||||||
should.notEqual(dialog.addNewLanguageTab, undefined);
|
|
||||||
should.notEqual(dialog.currentLanguagesTab, undefined);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user