Path: blob/main/components/gitpod-protocol/src/util/parse-workspace-id.spec.ts
2500 views
/**1* Copyright (c) 2020 Gitpod GmbH. All rights reserved.2* Licensed under the GNU Affero General Public License (AGPL).3* See License.AGPL.txt in the project root for license information.4*/56import * as chai from "chai";7import { suite, test } from "@testdeck/mocha";8import {9isWorkspaceId,10matchesInstanceIdOrLegacyWorkspaceIdExactly,11matchesNewWorkspaceIdExactly,12parseWorkspaceIdFromHostname,13} from "./parse-workspace-id";14const expect = chai.expect;1516@suite17export class ParseWorkspaceIdTest {18@test public parseWorkspaceIdFromHostname_fromWorkspaceLocation() {19const actual = parseWorkspaceIdFromHostname("moccasin-ferret-155799b3.ws-eu01.gitpod.io");20expect(actual).to.equal("moccasin-ferret-155799b3");21}2223@test public parseWorkspaceIdFromHostname_fromWorkspacePortLocation() {24const actual = parseWorkspaceIdFromHostname("3000-moccasin-ferret-155799b3.ws-eu01.gitpod.io");25expect(actual).to.equal("moccasin-ferret-155799b3");26}2728@test public parseWorkspaceIdFromHostname_fromWorkspacePortLocationWithWebviewPrefix() {29const actual = parseWorkspaceIdFromHostname("webview-3000-moccasin-ferret-155799b3.ws-eu01.gitpod.io");30expect(actual).to.equal("moccasin-ferret-155799b3");31}3233@test public parseWorkspaceIdFromHostname_fromWorkspacePortLocationWithWebviewPrefixCustomHost() {34const actual = parseWorkspaceIdFromHostname(35"webview-3000-moccasin-ferret-155799b3.ws-eu01.some.subdomain.somehost.com",36);37expect(actual).to.equal("moccasin-ferret-155799b3");38}3940// legacy mode41@test public parseLegacyWorkspaceIdFromHostname_fromWorkspaceLocation() {42const actual = parseWorkspaceIdFromHostname("b7e0eaf8-ec73-44ec-81ea-04859263b656.ws-eu01.gitpod.io");43expect(actual).to.equal("b7e0eaf8-ec73-44ec-81ea-04859263b656");44}4546@test public parseLegacyWorkspaceIdFromHostname_fromWorkspacePortLocation() {47const actual = parseWorkspaceIdFromHostname("3000-b7e0eaf8-ec73-44ec-81ea-04859263b656.ws-eu01.gitpod.io");48expect(actual).to.equal("b7e0eaf8-ec73-44ec-81ea-04859263b656");49}5051@test public parseLegacyWorkspaceIdFromHostname_fromWorkspacePortLocationWithWebviewPrefix() {52const actual = parseWorkspaceIdFromHostname(53"webview-3000-b7e0eaf8-ec73-44ec-81ea-04859263b656.ws-eu01.gitpod.io",54);55expect(actual).to.equal("b7e0eaf8-ec73-44ec-81ea-04859263b656");56}5758@test public parseLegacyWorkspaceIdFromHostname_fromWorkspacePortLocationWithWebviewPrefixCustomHost() {59const actual = parseWorkspaceIdFromHostname(60"webview-3000-ca81a50f-09d7-465c-acd9-264a747d5351.ws-eu01.some.subdomain.somehost.com",61);62expect(actual).to.equal("ca81a50f-09d7-465c-acd9-264a747d5351");63}6465// match - instance ID66@test public matchesInstanceIdOrLegacyWorkspaceIdExactly_positive() {67const actual = matchesInstanceIdOrLegacyWorkspaceIdExactly("b7e0eaf8-ec73-44ec-81ea-04859263b656");68expect(actual).to.be.true;69}70@test public matchesInstanceIdOrLegacyWorkspaceIdExactly_negative() {71const actual = matchesInstanceIdOrLegacyWorkspaceIdExactly("b7e0eaf8-ec73-44ec-81a-04859263b656");72expect(actual).to.be.false;73}7475// match - new workspace ID76@test public matchesWorkspaceIdExactly_new_positive() {77const actual = matchesNewWorkspaceIdExactly("moccasin-ferret-155799b3");78expect(actual).to.be.true;79}80@test public matchesWorkspaceIdExactly_new_negative() {81const actual = matchesNewWorkspaceIdExactly("moccasin-ferret-15599b3");82expect(actual).to.be.false;83}8485@test public isWorkspaceId_positive_new() {86const actual = isWorkspaceId("moccasin-ferret-155799b3");87expect(actual).to.be.true;88}89@test public isWorkspaceId_positive_legacy() {90const actual = isWorkspaceId("b7e0eaf8-ec73-44ec-81ea-04859263b656");91expect(actual).to.be.true;92}93@test public isWorkspaceId_negative_empty() {94const actual = isWorkspaceId(undefined);95expect(actual).to.be.false;96}97}98module.exports = new ParseWorkspaceIdTest();99100101