From fe6bc263f6cf5378d61906bd35831755a7084fb3 Mon Sep 17 00:00:00 2001 From: Sun Tan Date: Tue, 10 Apr 2018 08:21:15 +0000 Subject: [PATCH] Fix workspace loader which should pass its query strings to the underlying alternate IDE Signed-off-by: Sun Tan --- workspace-loader/src/index.ts | 4 ++-- workspace-loader/test/test.spec.ts | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/workspace-loader/src/index.ts b/workspace-loader/src/index.ts index cec37cc47a..9a62b8d3c5 100644 --- a/workspace-loader/src/index.ts +++ b/workspace-loader/src/index.ts @@ -315,13 +315,13 @@ export class WorkspaceLoader { for (let serverId in servers) { let attributes = servers[serverId].attributes; if (attributes['type'] === 'ide') { - this.openURL(servers[serverId].url); + this.openURL(servers[serverId].url + this.getQueryString()); return; } } } - this.openURL(workspace.links.ide); + this.openURL(workspace.links.ide + this.getQueryString()); }); } diff --git a/workspace-loader/test/test.spec.ts b/workspace-loader/test/test.spec.ts index fbfa3b50e0..2d49eeace0 100644 --- a/workspace-loader/test/test.spec.ts +++ b/workspace-loader/test/test.spec.ts @@ -171,6 +171,36 @@ describe('Workspace Loader', () => { }); }); + describe('must open preconfigured IDE with query parameters', () => { + let ideURL = "ide URL" + let workspaceLoader; + + beforeEach((done) => { + let loader = new Loader(); + workspaceLoader = new WorkspaceLoader(loader); + + spyOn(workspaceLoader, 'getWorkspaceKey').and.returnValue("foo/bar"); + spyOn(workspaceLoader, 'getQueryString').and.returnValue("?param=value"); + + spyOn(workspaceLoader, 'getWorkspace').and.callFake(() => { + return new Promise((resolve) => { + fakeWorkspaceConfig.status = 'RUNNING'; + fakeWorkspaceConfig.runtime = {machines: {ide: {servers: {server1: {attributes: {type: "ide"}, url: ideURL}}}}} + resolve(fakeWorkspaceConfig); + done(); + }); + }); + + spyOn(workspaceLoader, "openIDE").and.callThrough(); + spyOn(workspaceLoader, "openURL"); + workspaceLoader.load(); + }); + + it('must be called', () => { + expect(workspaceLoader.openURL).toHaveBeenCalledWith(ideURL + "?param=value"); + }); + }); + describe('must handle workspace when it has IDE server', () => { let workspaceLoader;