Fix workspace loader which should pass its query strings to the underlying alternate IDE

Signed-off-by: Sun Tan <sutan@redhat.com>
6.19.x
Sun Tan 2018-04-10 08:21:15 +00:00 committed by Sun Seng David TAN
parent 6f3842bfeb
commit fe6bc263f6
2 changed files with 32 additions and 2 deletions

View File

@ -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());
});
}

View File

@ -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;