diff --git a/src/sql/workbench/services/objectExplorer/common/objectExplorerService.ts b/src/sql/workbench/services/objectExplorer/common/objectExplorerService.ts index fd6e607747..68e31c7b78 100644 --- a/src/sql/workbench/services/objectExplorer/common/objectExplorerService.ts +++ b/src/sql/workbench/services/objectExplorer/common/objectExplorerService.ts @@ -227,7 +227,13 @@ export class ObjectExplorerService implements IObjectExplorerService { * Gets called when session is created */ public onSessionCreated(handle: number, session: azdata.ObjectExplorerSession): void { - this.handleSessionCreated(session); + if (session && session.success) { + this.handleSessionCreated(session); + } else { + let errorMessage = session && session.errorMessage ? session.errorMessage : + nls.localize('OeSessionFailedError', 'Failed to create Object Explorer session'); + error(errorMessage); + } } private async handleSessionCreated(session: azdata.ObjectExplorerSession): Promise { @@ -237,7 +243,7 @@ export class ObjectExplorerService implements IObjectExplorerService { if (this._sessions[session.sessionId]) { connection = this._sessions[session.sessionId].connection; - if (session && session.success && session.rootNode) { + if (session.success && session.rootNode) { let server = this.toTreeNode(session.rootNode, null); server.connection = connection; server.session = session; diff --git a/src/sqltest/parts/connection/objectExplorerService.test.ts b/src/sqltest/parts/connection/objectExplorerService.test.ts index 35757aafa8..55545fd0f7 100644 --- a/src/sqltest/parts/connection/objectExplorerService.test.ts +++ b/src/sqltest/parts/connection/objectExplorerService.test.ts @@ -33,7 +33,7 @@ suite('SQL Object Explorer Service tests', () => { let objectExplorerExpandInfoRefresh: NodeExpandInfoWithProviderId; let sessionId = '1234'; let failedSessionId = '12345'; - let numberOfFailedSession: number = 0; + let numberOfSuccessfulSessions: number = 0; let serverTreeView: TypeMoq.Mock; const providerId = 'MSSQL'; @@ -286,8 +286,8 @@ suite('SQL Object Explorer Service tests', () => { sqlOEProvider.setup(x => x.closeSession(TypeMoq.It.isAny())).returns(() => Promise.resolve(objectExplorerCloseSessionResponse)); objectExplorerService.onUpdateObjectExplorerNodes(args => { - if (args && args.errorMessage !== undefined) { - numberOfFailedSession++; + if (args && args.errorMessage === undefined) { + numberOfSuccessfulSessions++; } }); @@ -320,11 +320,11 @@ suite('SQL Object Explorer Service tests', () => { objectExplorerService.createNewSession('MSSQL', connectionToFail).then(session => { assert.equal(session !== null || session !== undefined, true); assert.equal(session.sessionId, failedSessionId); - let currentNumberOfFailedSession = numberOfFailedSession; + let currentNumberOfSuccessfulSessions = numberOfSuccessfulSessions; objectExplorerService.onSessionCreated(1, objectExplorerFailedSession); let node = objectExplorerService.getObjectExplorerNode(connection); assert.equal(node, undefined); - assert.equal(currentNumberOfFailedSession + 1, numberOfFailedSession); + assert.equal(currentNumberOfSuccessfulSessions, numberOfSuccessfulSessions); done(); }, err => { // Must call done here so test indicates it's finished if errors occur