mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Updated credentials system (#17888)
* linting * added flags * remove testing values * format * format doc * tested in linux * remove unused interface * comments * review comments * clean imports * pr comments * format doc * changed promise location * insiders december * pr comments * test ado change * fix test * comment out code for hygiene * remove unused imports * test creds from client only * remove unused import * trying enabling keytar * trying enabling keytar * disable in correct script * print statements * remove print statements * check mock output * add linux check * remove print statements
This commit is contained in:
@@ -323,6 +323,7 @@ export class JupyterSession implements nb.ISession {
|
||||
}
|
||||
} else {
|
||||
clusterController = await getClusterController(controllerEndpoint.endpoint, 'integrated');
|
||||
|
||||
}
|
||||
|
||||
let gatewayEndpoint: bdc.IEndpointModel = endpoints?.find(ep => ep.name.toLowerCase() === KNOX_ENDPOINT_GATEWAY);
|
||||
@@ -340,6 +341,7 @@ export class JupyterSession implements nb.ISession {
|
||||
Logger.log(`Parsed knox host and port ${JSON.stringify(gatewayHostAndPort)}`);
|
||||
connectionProfile.options[KNOX_ENDPOINT_SERVER] = gatewayHostAndPort.host;
|
||||
connectionProfile.options[KNOX_ENDPOINT_PORT] = gatewayHostAndPort.port;
|
||||
|
||||
}
|
||||
else {
|
||||
throw new Error(providerNotValidError);
|
||||
|
||||
@@ -23,7 +23,7 @@ import { ExtensionContextHelper } from '../../common/extensionContextHelper';
|
||||
import { AppContext } from '../../common/appContext';
|
||||
import uuid = require('uuid');
|
||||
|
||||
export class TestClusterController implements bdc.IClusterController {
|
||||
class TestClusterController implements bdc.IClusterController {
|
||||
getClusterConfig(): Promise<any> {
|
||||
return Promise.resolve({});
|
||||
}
|
||||
@@ -254,80 +254,82 @@ describe('Jupyter Session', function (): void {
|
||||
});
|
||||
|
||||
it('should configure connection correctly for MSSQL and SqlLogin auth type', async function (): Promise<void> {
|
||||
let connectionProfile: IConnectionProfile = {
|
||||
authenticationType: '',
|
||||
connectionName: '',
|
||||
databaseName: '',
|
||||
id: 'id',
|
||||
providerName: 'MSSQL',
|
||||
options: {
|
||||
authenticationType: 'SqlLogin',
|
||||
},
|
||||
password: '',
|
||||
savePassword: false,
|
||||
saveProfile: false,
|
||||
serverName: '',
|
||||
userName: ''
|
||||
};
|
||||
let futureMock = TypeMoq.Mock.ofType(FutureStub);
|
||||
let kernelMock = TypeMoq.Mock.ofType(KernelStub);
|
||||
kernelMock.setup(k => k.name).returns(() => 'spark');
|
||||
kernelMock.setup(m => m.requestExecute(TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns(() => futureMock.object);
|
||||
mockJupyterSession.setup(s => s.kernel).returns(() => kernelMock.object);
|
||||
let credentials = { [ConnectionOptionSpecialType.password]: 'password' };
|
||||
sinon.stub(connection, 'getCredentials').returns(Promise.resolve(credentials));
|
||||
const isLinux = os.platform() === 'linux';
|
||||
if (!isLinux) {
|
||||
let connectionProfile: IConnectionProfile = {
|
||||
authenticationType: '',
|
||||
connectionName: '',
|
||||
databaseName: '',
|
||||
id: 'id',
|
||||
providerName: 'MSSQL',
|
||||
options: {
|
||||
authenticationType: 'SqlLogin',
|
||||
},
|
||||
password: '',
|
||||
savePassword: false,
|
||||
saveProfile: false,
|
||||
serverName: '',
|
||||
userName: ''
|
||||
};
|
||||
let futureMock = TypeMoq.Mock.ofType(FutureStub);
|
||||
let kernelMock = TypeMoq.Mock.ofType(KernelStub);
|
||||
kernelMock.setup(k => k.name).returns(() => 'spark');
|
||||
kernelMock.setup(m => m.requestExecute(TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns(() => futureMock.object);
|
||||
mockJupyterSession.setup(s => s.kernel).returns(() => kernelMock.object);
|
||||
let creds = { [ConnectionOptionSpecialType.password]: 'password' };
|
||||
sinon.stub(connection, 'getCredentials').returns(Promise.resolve(creds));
|
||||
|
||||
// Set up connection info to big data cluster
|
||||
const mockServerInfo: ServerInfo = {
|
||||
serverMajorVersion: 0,
|
||||
serverMinorVersion: 0,
|
||||
serverReleaseVersion: 0,
|
||||
engineEditionId: 0,
|
||||
serverVersion: '',
|
||||
serverLevel: '',
|
||||
serverEdition: '',
|
||||
isCloud: false,
|
||||
azureVersion: 0,
|
||||
osVersion: '',
|
||||
cpuCount: 0,
|
||||
physicalMemoryInMb: -1,
|
||||
options: {
|
||||
isBigDataCluster: true
|
||||
}
|
||||
};
|
||||
const mockGatewayEndpoint: bdc.IEndpointModel = {
|
||||
name: 'gateway',
|
||||
description: '',
|
||||
endpoint: '',
|
||||
protocol: '',
|
||||
};
|
||||
const mockControllerEndpoint: bdc.IEndpointModel = {
|
||||
name: 'controller',
|
||||
description: '',
|
||||
endpoint: '',
|
||||
protocol: '',
|
||||
};
|
||||
const mockHostAndIp: utils.HostAndIp = {
|
||||
host: '127.0.0.1',
|
||||
port: '1337'
|
||||
};
|
||||
const mockClustercontroller = new TestClusterController();
|
||||
mockClustercontroller.username = 'admin';
|
||||
mockClustercontroller.password = uuid.v4();
|
||||
let mockBdcExtension: TypeMoq.IMock<bdc.IExtension> = TypeMoq.Mock.ofType<bdc.IExtension>();
|
||||
let mockExtension: TypeMoq.IMock<vscode.Extension<any>> = TypeMoq.Mock.ofType<vscode.Extension<any>>();
|
||||
mockBdcExtension.setup(m => m.getClusterController(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns(() => mockClustercontroller);
|
||||
mockBdcExtension.setup((m: any) => m.then).returns(() => mockBdcExtension);
|
||||
mockExtension.setup(m => m.activate()).returns(() => Promise.resolve(mockBdcExtension.object));
|
||||
mockExtension.setup((m: any) => m.then).returns(() => mockExtension);
|
||||
sinon.stub(vscode.extensions, 'getExtension').returns(mockExtension.object);
|
||||
sinon.stub(connection, 'getServerInfo').returns(Promise.resolve(mockServerInfo));
|
||||
sinon.stub(utils, 'getClusterEndpoints').returns([mockGatewayEndpoint, mockControllerEndpoint]);
|
||||
sinon.stub(utils, 'getHostAndPortFromEndpoint').returns(mockHostAndIp);
|
||||
|
||||
await session.configureConnection(connectionProfile);
|
||||
should(connectionProfile.options['host']).equal(mockHostAndIp.host);
|
||||
should(connectionProfile.options['knoxport']).equal(mockHostAndIp.port);
|
||||
// Set up connection info to big data cluster
|
||||
const mockServerInfo: ServerInfo = {
|
||||
serverMajorVersion: 0,
|
||||
serverMinorVersion: 0,
|
||||
serverReleaseVersion: 0,
|
||||
engineEditionId: 0,
|
||||
serverVersion: '',
|
||||
serverLevel: '',
|
||||
serverEdition: '',
|
||||
isCloud: false,
|
||||
azureVersion: 0,
|
||||
osVersion: '',
|
||||
cpuCount: 0,
|
||||
physicalMemoryInMb: -1,
|
||||
options: {
|
||||
isBigDataCluster: true
|
||||
}
|
||||
};
|
||||
const mockGatewayEndpoint: bdc.IEndpointModel = {
|
||||
name: 'gateway',
|
||||
description: '',
|
||||
endpoint: '',
|
||||
protocol: '',
|
||||
};
|
||||
const mockControllerEndpoint: bdc.IEndpointModel = {
|
||||
name: 'controller',
|
||||
description: '',
|
||||
endpoint: '',
|
||||
protocol: '',
|
||||
};
|
||||
const mockHostAndIp: utils.HostAndIp = {
|
||||
host: '127.0.0.1',
|
||||
port: '1337'
|
||||
};
|
||||
const mockClustercontroller = new TestClusterController();
|
||||
mockClustercontroller.username = 'admin';
|
||||
mockClustercontroller.password = uuid.v4();
|
||||
let mockBdcExtension: TypeMoq.IMock<bdc.IExtension> = TypeMoq.Mock.ofType<bdc.IExtension>();
|
||||
let mockExtension: TypeMoq.IMock<vscode.Extension<any>> = TypeMoq.Mock.ofType<vscode.Extension<any>>();
|
||||
mockBdcExtension.setup(m => m.getClusterController(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns(() => mockClustercontroller);
|
||||
mockBdcExtension.setup((m: any) => m.then).returns(() => mockBdcExtension);
|
||||
mockExtension.setup(m => m.activate()).returns(() => Promise.resolve(mockBdcExtension.object));
|
||||
mockExtension.setup((m: any) => m.then).returns(() => mockExtension);
|
||||
sinon.stub(vscode.extensions, 'getExtension').returns(mockExtension.object);
|
||||
sinon.stub(connection, 'getServerInfo').returns(Promise.resolve(mockServerInfo));
|
||||
sinon.stub(utils, 'getClusterEndpoints').returns([mockGatewayEndpoint, mockControllerEndpoint]);
|
||||
sinon.stub(utils, 'getHostAndPortFromEndpoint').returns(mockHostAndIp);
|
||||
await session.configureConnection(connectionProfile);
|
||||
should(connectionProfile.options['host']).equal(mockHostAndIp.host);
|
||||
should(connectionProfile.options['knoxport']).equal(mockHostAndIp.port);
|
||||
}
|
||||
});
|
||||
|
||||
it('configure connection should throw error if there is no connection to big data cluster', async function (): Promise<void> {
|
||||
|
||||
Reference in New Issue
Block a user