@optimizely/ocp-cli 1.3.4-beta.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/directory/Unpublish.d.ts +0 -2
- package/dist/commands/directory/Unpublish.js +21 -59
- package/dist/commands/directory/Unpublish.js.map +1 -1
- package/dist/lib/Rivendell.d.ts +6 -0
- package/dist/lib/Rivendell.js +8 -0
- package/dist/lib/Rivendell.js.map +1 -1
- package/dist/oo-cli.manifest.json +2 -2
- package/package.json +1 -1
- package/src/commands/directory/Unpublish.ts +20 -64
- package/src/lib/Rivendell.ts +8 -0
- package/src/test/e2e/__tests__/directory/directory.test.ts +17 -13
- package/src/test/e2e/__tests__/review/review.test.ts +14 -9
- package/src/test/e2e/config/test-data-config.ts +1 -1
- package/src/test/e2e/fixtures/baselines/directory/info.txt +1 -1
- package/src/test/e2e/lib/base-test.ts +7 -4
- package/src/test/e2e/utils/baseline-normalizer.ts +9 -3
- package/src/test/e2e/utils/cli-executor.ts +16 -1
|
@@ -15,7 +15,6 @@ const handleInterrupt_1 = require("../../lib/handleInterrupt");
|
|
|
15
15
|
const TerminalSpinner_1 = require("../../lib/TerminalSpinner");
|
|
16
16
|
const Rivendell_1 = require("../../lib/Rivendell");
|
|
17
17
|
var AppVersionState = Rivendell_1.Rivendell.AppVersionState;
|
|
18
|
-
var SortDirection = Rivendell_1.Rivendell.SortDirection;
|
|
19
18
|
const formatError_1 = require("../../lib/formatError");
|
|
20
19
|
const Shards_1 = require("../../lib/Shards");
|
|
21
20
|
const TerminalConfirm_1 = require("../../lib/TerminalConfirm");
|
|
@@ -41,14 +40,19 @@ let UnpublishCommand = class UnpublishCommand {
|
|
|
41
40
|
}
|
|
42
41
|
const manifest = JSON.parse(primaryAppVersion.manifestJson);
|
|
43
42
|
const shards = await (0, Shards_1.applicableShards)(this.availability, manifest);
|
|
43
|
+
for (const shard of shards) {
|
|
44
|
+
const canUnpublishResult = await Rivendell_1.Rivendell.canUnpublish(appId, version, shard);
|
|
45
|
+
if (!canUnpublishResult.canPerformAction) {
|
|
46
|
+
console.error(chalk.red(`Cannot unpublish in availability zone ${shard}:`));
|
|
47
|
+
console.error(chalk.red(canUnpublishResult.reason));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
44
51
|
if (!await TerminalConfirm_1.TerminalConfirm.ask(chalk.red('Unpublishing is not reversible. Are you sure you want to unpublish? [y/n]'), this.noPrompt, true)) {
|
|
45
52
|
(0, die_1.die)('Operation cancelled.');
|
|
46
53
|
}
|
|
47
54
|
for (const shard of shards) {
|
|
48
|
-
|
|
49
|
-
process.exit();
|
|
50
|
-
}
|
|
51
|
-
console.log(chalk.green(`Unpublishing ${this.appVersion} is from ${shard}.`));
|
|
55
|
+
console.log(chalk.green(`Unpublishing ${this.appVersion} from ${shard}.`));
|
|
52
56
|
try {
|
|
53
57
|
const appVersion = await Rivendell_1.Rivendell.fetchAppVersion({ appId, version }, shard);
|
|
54
58
|
const appState = appVersion.state;
|
|
@@ -65,11 +69,17 @@ let UnpublishCommand = class UnpublishCommand {
|
|
|
65
69
|
await this.watchForCompletion({ appId, version }, shard);
|
|
66
70
|
}
|
|
67
71
|
catch (error) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
// If it's a bad request error, just log the error message
|
|
73
|
+
if (error.response && error.response.status === 400) {
|
|
74
|
+
console.log(chalk.yellow(`Unable to unpublish in shard ${shard}: ${(0, formatError_1.formatError)(error)}`));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
success = false;
|
|
78
|
+
console.error(chalk.red(`Error unpublishing in shard ${shard}: ${(0, formatError_1.formatError)(error)}`));
|
|
79
|
+
if (shards[shards.length - 1] !== shard &&
|
|
80
|
+
!await TerminalConfirm_1.TerminalConfirm.ask('Continue with other shards?', this.noPrompt, true)) {
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
73
83
|
}
|
|
74
84
|
}
|
|
75
85
|
}
|
|
@@ -81,54 +91,6 @@ let UnpublishCommand = class UnpublishCommand {
|
|
|
81
91
|
(0, die_1.die)(chalk.red(`Failed to unpublish ${this.appVersion} from all shards.`));
|
|
82
92
|
}
|
|
83
93
|
}
|
|
84
|
-
async uninstallEverywhere(appId, version, shard) {
|
|
85
|
-
return new Promise((resolve, reject) => {
|
|
86
|
-
const criteria = {
|
|
87
|
-
appId,
|
|
88
|
-
version,
|
|
89
|
-
sorts: [{
|
|
90
|
-
field: 'trackerId', direction: SortDirection.DESC
|
|
91
|
-
}]
|
|
92
|
-
};
|
|
93
|
-
Rivendell_1.Rivendell.searchAppInstallations(criteria, shard)
|
|
94
|
-
.then(async (installations) => {
|
|
95
|
-
if (!installations.length) {
|
|
96
|
-
resolve(true);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
const doIt = async () => {
|
|
100
|
-
try {
|
|
101
|
-
for (const appInstallation of installations) {
|
|
102
|
-
await this.uninstall(appInstallation, shard);
|
|
103
|
-
}
|
|
104
|
-
resolve(true);
|
|
105
|
-
}
|
|
106
|
-
catch (e) {
|
|
107
|
-
reject(e);
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
if (this.force) {
|
|
111
|
-
await doIt();
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
const trackers = installations.map((installation) => installation.trackerId);
|
|
115
|
-
console.log(`${this.appVersion} is currently installed in ${trackers.length} account(s) in ${shard}:`);
|
|
116
|
-
console.log(` (${trackers.join(', ')})\n`);
|
|
117
|
-
console.log(chalk.red('Are you sure you want to uninstall from all these accounts? [y/n]'));
|
|
118
|
-
// when noPrompt flag is enabled, default answer is no for destructive operation
|
|
119
|
-
if (await TerminalConfirm_1.TerminalConfirm.ask(chalk.red('Are you sure you want to uninstall from all these accounts?'), this.noPrompt, false)) {
|
|
120
|
-
await doIt();
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
})
|
|
125
|
-
.catch((e) => reject(e));
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
async uninstall(appInstallation, shard) {
|
|
129
|
-
await Rivendell_1.Rivendell.uninstall(appInstallation.id, shard);
|
|
130
|
-
console.log(chalk.gray(`Uninstalled ${appInstallation.appId} from ${appInstallation.trackerId} in ${shard}`));
|
|
131
|
-
}
|
|
132
94
|
async watchForCompletion(context, shard) {
|
|
133
95
|
console.log(chalk.gray(`Watching for unpublish to complete in ${shard}... CTRL+C to stop checking.`));
|
|
134
96
|
return new Promise((resolve, reject) => {
|
|
@@ -187,7 +149,7 @@ __decorate([
|
|
|
187
149
|
], UnpublishCommand.prototype, "noPrompt", void 0);
|
|
188
150
|
__decorate([
|
|
189
151
|
oo_cli_1.command,
|
|
190
|
-
(0, oo_cli_1.help)('Unpublish an app version
|
|
152
|
+
(0, oo_cli_1.help)('Unpublish an app version')
|
|
191
153
|
], UnpublishCommand.prototype, "unpublish", null);
|
|
192
154
|
UnpublishCommand = __decorate([
|
|
193
155
|
(0, oo_cli_1.namespace)('directory')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Unpublish.js","sourceRoot":"","sources":["../../../src/commands/directory/Unpublish.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA+B;AAC/B,mCAAqE;AAErE,uCAAkC;AAClC,qEAAgE;AAChE,+DAA0D;AAC1D,+DAA0D;AAC1D,mDAA8C;AAC9C,IAAO,eAAe,GAAG,qBAAS,CAAC,eAAe,CAAC;AACnD,
|
|
1
|
+
{"version":3,"file":"Unpublish.js","sourceRoot":"","sources":["../../../src/commands/directory/Unpublish.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/Rivendell.d.ts
CHANGED
|
@@ -353,6 +353,12 @@ export declare namespace Rivendell {
|
|
|
353
353
|
* Trigger a unpublish.
|
|
354
354
|
*/
|
|
355
355
|
function unpublish(appId: string, version: string, shard: string): Promise<void>;
|
|
356
|
+
/**
|
|
357
|
+
* Check if an app version can be unpublished.
|
|
358
|
+
*/
|
|
359
|
+
function canUnpublish(appId: string, version: string, shard: string): Promise<{
|
|
360
|
+
[key: string]: any;
|
|
361
|
+
}>;
|
|
356
362
|
/**
|
|
357
363
|
* Trigger a abandon.
|
|
358
364
|
*/
|
package/dist/lib/Rivendell.js
CHANGED
|
@@ -263,6 +263,14 @@ var Rivendell;
|
|
|
263
263
|
await RivendellApi_1.RivendellApi.request('PATCH', path(shard, `versions/${appId}@${version}`), { state: AppVersionState.STOPPED });
|
|
264
264
|
}
|
|
265
265
|
Rivendell.unpublish = unpublish;
|
|
266
|
+
/**
|
|
267
|
+
* Check if an app version can be unpublished.
|
|
268
|
+
*/
|
|
269
|
+
async function canUnpublish(appId, version, shard) {
|
|
270
|
+
const response = await RivendellApi_1.RivendellApi.get(path(shard, `versions/${appId}@${version}/can_unpublish`));
|
|
271
|
+
return response.body;
|
|
272
|
+
}
|
|
273
|
+
Rivendell.canUnpublish = canUnpublish;
|
|
266
274
|
/**
|
|
267
275
|
* Trigger a abandon.
|
|
268
276
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rivendell.js","sourceRoot":"","sources":["../../src/lib/Rivendell.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAI5C,IAAiB,SAAS,CAiqBzB;AAjqBD,WAAiB,SAAS;IAExB,IAAY,eAYX;IAZD,WAAY,eAAe;QACzB,8BAAW,CAAA;QACX,0CAAuB,CAAA;QACvB,gDAA6B,CAAA;QAC7B,wCAAqB,CAAA;QACrB,gDAA6B,CAAA;QAC7B,sCAAmB,CAAA;QACnB,0DAAuC,CAAA;QACvC,wCAAqB,CAAA;QACrB,8CAA2B,CAAA;QAC3B,sCAAmB,CAAA;QACnB,0CAAuB,CAAA;IACzB,CAAC,EAZW,eAAe,GAAf,yBAAe,KAAf,yBAAe,QAY1B;IAED,IAAY,YAKX;IALD,WAAY,YAAY;QACtB,2CAA4B,CAAA;QAC5B,uCAAuB,CAAA;QACvB,qCAAuB,CAAA;QACvB,6CAA6B,CAAA;IAC/B,CAAC,EALW,YAAY,GAAZ,sBAAY,KAAZ,sBAAY,QAKvB;IAED,IAAY,UAKX;IALD,WAAY,UAAU;QACpB,yBAAW,CAAA;QACX,+BAAiB,CAAA;QACjB,iCAAmB,CAAA;QACnB,mCAAqB,CAAA;IACvB,CAAC,EALW,UAAU,GAAV,oBAAU,KAAV,oBAAU,QAKrB;IAED,IAAY,SAGX;IAHD,WAAY,SAAS;QACnB,kCAAqB,CAAA;QACrB,gCAAmB,CAAA;IACrB,CAAC,EAHW,SAAS,GAAT,mBAAS,KAAT,mBAAS,QAGpB;IAED,IAAY,WAIX;IAJD,WAAY,WAAW;QACrB,kCAAmB,CAAA;QACnB,kCAAmB,CAAA;QACnB,8BAAe,CAAA;IACjB,CAAC,EAJW,WAAW,GAAX,qBAAW,KAAX,qBAAW,QAItB;IAED,IAAY,eAGX;IAHD,WAAY,eAAe;QACzB,gCAAa,CAAA;QACb,4CAAyB,CAAA;IAC3B,CAAC,EAHW,eAAe,GAAf,yBAAe,KAAf,yBAAe,QAG1B;IAED,IAAY,SAOX;IAPD,WAAY,SAAS;QACnB,gCAAmB,CAAA;QACnB,oCAAuB,CAAA;QACvB,gCAAmB,CAAA;QACnB,kCAAqB,CAAA;QACrB,4BAAe,CAAA;QACf,sCAAyB,CAAA;IAC3B,CAAC,EAPW,SAAS,GAAT,mBAAS,KAAT,mBAAS,QAOpB;IAED,IAAY,cAGX;IAHD,WAAY,cAAc;QACxB,yCAAuB,CAAA;QACvB,yCAAuB,CAAA;IACzB,CAAC,EAHW,cAAc,GAAd,wBAAc,KAAd,wBAAc,QAGzB;IAED,IAAY,QAMX;IAND,WAAY,QAAQ;QAClB,2BAAe,CAAA;QACf,yBAAa,CAAA;QACb,yBAAa,CAAA;QACb,2BAAe,CAAA;QACf,2BAAe,CAAA;IACjB,CAAC,EANW,QAAQ,GAAR,kBAAQ,KAAR,kBAAQ,QAMnB;IAED,IAAY,0BAKX;IALD,WAAY,0BAA0B;QACpC,6CAAe,CAAA;QACf,+CAAiB,CAAA;QACjB,yDAA2B,CAAA;QAC3B,iEAAmC,CAAA;IACrC,CAAC,EALW,0BAA0B,GAA1B,oCAA0B,KAA1B,oCAA0B,QAKrC;IAiJD,IAAY,aASX;IATD,WAAY,aAAa;QACvB,wCAAuB,CAAA;QACvB,4DAA2C,CAAA;QAC3C,0EAAyD,CAAA;QACzD,wDAAuC,CAAA;QACvC,wEAAuD,CAAA;QACvD,8DAA6C,CAAA;QAC7C,4EAA2D,CAAA;QAC3D,sCAAqB,CAAA;IACvB,CAAC,EATW,aAAa,GAAb,uBAAa,KAAb,uBAAa,QASxB;IAMD,IAAY,aAGX;IAHD,WAAY,aAAa;QACvB,4BAAW,CAAA;QACX,8BAAa,CAAA;IACf,CAAC,EAHW,aAAa,GAAb,uBAAa,KAAb,uBAAa,QAGxB;IAOD,IAAY,QAIX;IAJD,WAAY,QAAQ;QAClB,yBAAa,CAAA;QACb,mCAAuB,CAAA;QACvB,2BAAe,CAAA;IACjB,CAAC,EAJW,QAAQ,GAAR,kBAAQ,KAAR,kBAAQ,QAInB;IAkED,SAAS,IAAI,CAAC,KAAa,EAAE,QAAgB;QAC3C,OAAO,GAAG,KAAK,IAAI,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;QAC9D,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CACrC,IAAI,CAAC,KAAK,EAAE,wBAAwB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAJqB,wBAAc,iBAInC,CAAA;IAEM,KAAK,UAAU,MAAM;QAC1B,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAY,eAAe,CAAC,CAAC;QACpE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,gBAAM,SAG3B,CAAA;IAEM,KAAK,UAAU,OAAO;QAC3B,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC,IAAI,KAAK,eAAe,IAAI,EAAE,CAAC,IAAI,KAAK,mBAAmB,CAAC;IACxE,CAAC;IAHqB,iBAAO,UAG5B,CAAA;IAED;;;;;;;OAOG;IACI,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,IAAY,EACZ,WAAgB,EAChB,WAAoB,EACpB,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAC,CAAC,CAAC;QAC5G,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IATqB,qBAAW,cAShC,CAAA;IAED;;;OAGG;IACI,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,KAAK,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,kBAAQ,WAG7B,CAAA;IAED;;;OAGG;IACI,KAAK,UAAU,YAAY,CAAC,UAAkB;QACnD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAY,WAAW,UAAU,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,sBAAY,eAGjC,CAAA;IAED;;;OAGG;IACI,KAAK,UAAU,iBAAiB,CAAC,QAAkC,EAAE,KAAa;QACvF,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAe,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC;QACjG,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,2BAAiB,oBAGtC,CAAA;IAED;;;OAGG;IACI,KAAK,UAAU,eAAe,CAAC,UAAsB,EAAE,KAAa;QACzE,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CACrC,IAAI,CAAC,KAAK,EAAE,YAAY,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAJqB,yBAAe,kBAIpC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,OAAe,EACf,UAAkB,EAClB,YAA+B,EAC/B,uBAAgC,EAChC,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CACtC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAC,CAAC,CAAC;QAChG,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAXqB,4BAAkB,qBAWvC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,OAAe,EACf,UAAkB,EAClB,YAA+B,EAC/B,uBAAgC,EAChC,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CACrC,IAAI,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,OAAO,EAAE,CAAC,EAAE,EAAC,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAC,CAAC,CAAC;QACpG,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAXqB,0BAAgB,mBAWrC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,OAAe;QAEf,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;QAC3C,MAAM,2BAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;IANqB,0BAAgB,mBAMrC,CAAA;IACD;;;OAGG;IACI,KAAK,UAAU,sBAAsB,CAC1C,QAAuC,EACvC,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAoB,IAAI,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC3G,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IANqB,gCAAsB,yBAM3C,CAAA;IAED;;;OAGG;IACI,KAAK,UAAU,cAAc,CAAC,QAA+B,EAAE,KAAa;QACjF,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAY,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9F,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,wBAAc,iBAGnC,CAAA;IAED;;;;OAIG;IACI,KAAK,UAAU,oBAAoB,CAAC,KAAa,EAAE,SAAiB,EAAE,KAAK,GAAG,EAAE;QACrF,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAC,EAAE,KAAK,CAAC,CAAC;QACvF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,kBAAkB,SAAS,EAAE,CAAC,CAAC;SACxE;QAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAPqB,8BAAoB,uBAOzC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,OAAO,CAC3B,KAAa,EACb,OAAe,EACf,SAAiB,EACjB,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CACtC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAC,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IATqB,iBAAO,UAS5B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,SAAS,CAAC,iBAAyB,EAAE,KAAa;QACtE,MAAM,2BAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IAFqB,mBAAS,YAE9B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,OAAO,CAC3B,iBAAyB,EACzB,KAAa,EACb,OAAe,EACf,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CACrC,IAAI,CAAC,KAAK,EAAE,iBAAiB,iBAAiB,EAAE,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IATqB,iBAAO,UAS5B,CAAA;IAEM,KAAK,UAAU,YAAY,CAAC,SAAiB,EAAE,KAAa;QACjE,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAU,IAAI,CAAC,KAAK,EAAE,YAAY,SAAS,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,sBAAY,eAGjC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,OAAO,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;QACzE,MAAM,2BAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,OAAO,EAAE,CAAC,EAAE,EAAC,KAAK,EAAE,eAAe,CAAC,OAAO,EAAC,CAAC,CAAC;IACrH,CAAC;IAFqB,iBAAO,UAE5B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;QAC3E,MAAM,2BAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,OAAO,EAAE,CAAC,EAAE,EAAC,KAAK,EAAE,eAAe,CAAC,OAAO,EAAC,CAAC,CAAC;IACrH,CAAC;IAFqB,mBAAS,YAE9B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,OAAO,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;QACzE,MAAM,2BAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,OAAO,EAAE,CAAC,EAC7E,EAAC,KAAK,EAAE,eAAe,CAAC,SAAS,EAAC,CAAC,CAAC;IACxC,CAAC;IAHqB,iBAAO,UAG5B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,KAAa,EACb,OAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,SAAkB;QAElB,MAAM,2BAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,2BAA2B,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAC,CAAC,CAAC;IACtH,CAAC;IATqB,qBAAW,cAShC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,KAAa,EACb,OAAe,EACf,SAAkB;QAElB,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CACtC,IAAI,CAAC,KAAK,EAAE,kCAAkC,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAC,CAAC,CAAC;QAChF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IATqB,qBAAW,cAShC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,UAAU,CAAC,EAAU;QACzC,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAQ,UAAU,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,oBAAU,aAG/B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,KAAK,CAAC,KAAa,EAAE,OAAe,EAAE,kBAA2B;QACrF,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CACtC,QAAQ,EACR,EAAC,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAC,CACrC,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IANqB,eAAK,QAM1B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,MAAM,CAAC,KAAa,EAAE,OAAe;QACzD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAQ,eAAe,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;QACnF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,gBAAM,SAG3B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,KAAa,EACb,OAAe,EACf,QAAgB;QAEhB,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAiB,QAAQ,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;QACvG,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IARqB,2BAAiB,oBAQtC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,MAAM;QAC1B,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAU,QAAQ,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IAJqB,gBAAM,SAI3B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,UAAU,CAAC,QAA2B,EAAE,KAAa;QACzE,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAQ,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,oBAAU,aAG/B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,YAAY,CAAC,KAAa,EAAE,KAAa;QAC7D,MAAM,2BAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAFqB,sBAAY,eAEjC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,OAAe,EACf,SAAiB,EACjB,UAAkB,EAClB,KAAa;QAEb,MAAM,IAAI,GAAG,EAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAVqB,oBAAU,aAU/B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,KAAa;QACzD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,kBAAQ,WAG7B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,qBAAqB,CAAC,KAAa,EAAE,KAAa;QACtE,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAmB,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,gBAAgB,CAAC,CAAC,CAAC;QACtG,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,+BAAqB,wBAG1C,CAAA;IAED;;OAEG;IACH,IAAI,SAAc,CAAC;IACZ,KAAK,UAAU,GAAG,CAAC,KAAa;QACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YACpE,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAc,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;YAChF,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACzC;QAED,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IARqB,aAAG,MAQxB,CAAA;IAED,SAAS,QAAQ,CAAC,KAAa;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO;YACL,KAAK;YACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;AACH,CAAC,EAjqBgB,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAiqBzB"}
|
|
1
|
+
{"version":3,"file":"Rivendell.js","sourceRoot":"","sources":["../../src/lib/Rivendell.ts"],"names":[],"mappings":"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"}
|
|
@@ -522,7 +522,7 @@
|
|
|
522
522
|
"key": "unpublish",
|
|
523
523
|
"command": "unpublish",
|
|
524
524
|
"aliases": [],
|
|
525
|
-
"help": "Unpublish an app version
|
|
525
|
+
"help": "Unpublish an app version",
|
|
526
526
|
"documentation": "TBD",
|
|
527
527
|
"flags": [
|
|
528
528
|
{
|
|
@@ -1468,7 +1468,7 @@
|
|
|
1468
1468
|
}
|
|
1469
1469
|
],
|
|
1470
1470
|
"package": {
|
|
1471
|
-
"version": "1.
|
|
1471
|
+
"version": "1.4.0",
|
|
1472
1472
|
"name": "@optimizely/ocp-cli",
|
|
1473
1473
|
"license": "Apache-2.0",
|
|
1474
1474
|
"executable": "ocp"
|
package/package.json
CHANGED
|
@@ -7,8 +7,6 @@ import {handleInterrupt} from '../../lib/handleInterrupt';
|
|
|
7
7
|
import {TerminalSpinner} from '../../lib/TerminalSpinner';
|
|
8
8
|
import {Rivendell} from '../../lib/Rivendell';
|
|
9
9
|
import AppVersionState = Rivendell.AppVersionState;
|
|
10
|
-
import SortDirection = Rivendell.SortDirection;
|
|
11
|
-
import AppInstallation = Rivendell.AppInstallation;
|
|
12
10
|
import {formatError} from '../../lib/formatError';
|
|
13
11
|
import {applicableShards} from '../../lib/Shards';
|
|
14
12
|
import {TerminalConfirm} from '../../lib/TerminalConfirm';
|
|
@@ -36,7 +34,7 @@ export class UnpublishCommand {
|
|
|
36
34
|
public noPrompt: boolean = false;
|
|
37
35
|
|
|
38
36
|
@command
|
|
39
|
-
@help('Unpublish an app version
|
|
37
|
+
@help('Unpublish an app version')
|
|
40
38
|
public async unpublish() {
|
|
41
39
|
handleInterrupt();
|
|
42
40
|
|
|
@@ -57,6 +55,14 @@ export class UnpublishCommand {
|
|
|
57
55
|
|
|
58
56
|
const manifest = JSON.parse(primaryAppVersion.manifestJson);
|
|
59
57
|
const shards = await applicableShards(this.availability, manifest);
|
|
58
|
+
for (const shard of shards) {
|
|
59
|
+
const canUnpublishResult = await Rivendell.canUnpublish(appId, version, shard);
|
|
60
|
+
if (!canUnpublishResult.canPerformAction) {
|
|
61
|
+
console.error(chalk.red(`Cannot unpublish in availability zone ${shard}:`));
|
|
62
|
+
console.error(chalk.red(canUnpublishResult.reason));
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
60
66
|
|
|
61
67
|
if (!await TerminalConfirm.ask(
|
|
62
68
|
chalk.red('Unpublishing is not reversible. Are you sure you want to unpublish? [y/n]'), this.noPrompt, true)) {
|
|
@@ -64,12 +70,7 @@ export class UnpublishCommand {
|
|
|
64
70
|
}
|
|
65
71
|
|
|
66
72
|
for (const shard of shards) {
|
|
67
|
-
|
|
68
|
-
process.exit();
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
console.log(chalk.green(`Unpublishing ${this.appVersion} is from ${shard}.`));
|
|
72
|
-
|
|
73
|
+
console.log(chalk.green(`Unpublishing ${this.appVersion} from ${shard}.`));
|
|
73
74
|
try {
|
|
74
75
|
const appVersion = await Rivendell.fetchAppVersion({appId, version}, shard);
|
|
75
76
|
const appState = appVersion.state as AppVersionState;
|
|
@@ -87,11 +88,16 @@ export class UnpublishCommand {
|
|
|
87
88
|
console.log(chalk.green(`${this.appVersion} is being unpublished in ${shard}.`));
|
|
88
89
|
await this.watchForCompletion({appId, version}, shard);
|
|
89
90
|
} catch (error: any) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
91
|
+
// If it's a bad request error, just log the error message
|
|
92
|
+
if (error.response && error.response.status === 400) {
|
|
93
|
+
console.log(chalk.yellow(`Unable to unpublish in shard ${shard}: ${formatError(error)}`));
|
|
94
|
+
} else {
|
|
95
|
+
success = false;
|
|
96
|
+
console.error(chalk.red(`Error unpublishing in shard ${shard}: ${formatError(error)}`));
|
|
97
|
+
if (shards[shards.length - 1] !== shard &&
|
|
98
|
+
!await TerminalConfirm.ask('Continue with other shards?', this.noPrompt, true)) {
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
95
101
|
}
|
|
96
102
|
}
|
|
97
103
|
}
|
|
@@ -104,56 +110,6 @@ export class UnpublishCommand {
|
|
|
104
110
|
}
|
|
105
111
|
}
|
|
106
112
|
|
|
107
|
-
private async uninstallEverywhere(appId: string, version: string, shard: string): Promise<boolean> {
|
|
108
|
-
return new Promise((resolve, reject) => {
|
|
109
|
-
const criteria = {
|
|
110
|
-
appId,
|
|
111
|
-
version,
|
|
112
|
-
sorts: [{
|
|
113
|
-
field: 'trackerId', direction: SortDirection.DESC
|
|
114
|
-
}]
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
Rivendell.searchAppInstallations(criteria, shard)
|
|
118
|
-
.then(async (installations) => {
|
|
119
|
-
if (!installations.length) {
|
|
120
|
-
resolve(true);
|
|
121
|
-
} else {
|
|
122
|
-
const doIt = async () => {
|
|
123
|
-
try {
|
|
124
|
-
for (const appInstallation of installations) {
|
|
125
|
-
await this.uninstall(appInstallation, shard);
|
|
126
|
-
}
|
|
127
|
-
resolve(true);
|
|
128
|
-
} catch (e) {
|
|
129
|
-
reject(e);
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
if (this.force) {
|
|
134
|
-
await doIt();
|
|
135
|
-
} else {
|
|
136
|
-
const trackers = installations.map((installation) => installation.trackerId);
|
|
137
|
-
console.log(`${this.appVersion} is currently installed in ${trackers.length} account(s) in ${shard}:`);
|
|
138
|
-
console.log(` (${trackers.join(', ')})\n`);
|
|
139
|
-
console.log(chalk.red('Are you sure you want to uninstall from all these accounts? [y/n]'));
|
|
140
|
-
// when noPrompt flag is enabled, default answer is no for destructive operation
|
|
141
|
-
if (await TerminalConfirm.ask(
|
|
142
|
-
chalk.red('Are you sure you want to uninstall from all these accounts?'), this.noPrompt, false)) {
|
|
143
|
-
await doIt();
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
})
|
|
148
|
-
.catch((e) => reject(e));
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
private async uninstall(appInstallation: AppInstallation, shard: string) {
|
|
153
|
-
await Rivendell.uninstall(appInstallation.id, shard);
|
|
154
|
-
console.log(chalk.gray(`Uninstalled ${appInstallation.appId} from ${appInstallation.trackerId} in ${shard}`));
|
|
155
|
-
}
|
|
156
|
-
|
|
157
113
|
private async watchForCompletion(context: AppContext, shard: string) {
|
|
158
114
|
console.log(chalk.gray(`Watching for unpublish to complete in ${shard}... CTRL+C to stop checking.`));
|
|
159
115
|
return new Promise<void>((resolve, reject) => {
|
package/src/lib/Rivendell.ts
CHANGED
|
@@ -522,6 +522,14 @@ export namespace Rivendell {
|
|
|
522
522
|
await RivendellApi.request('PATCH', path(shard, `versions/${appId}@${version}`), {state: AppVersionState.STOPPED});
|
|
523
523
|
}
|
|
524
524
|
|
|
525
|
+
/**
|
|
526
|
+
* Check if an app version can be unpublished.
|
|
527
|
+
*/
|
|
528
|
+
export async function canUnpublish(appId: string, version: string, shard: string): Promise<{[key: string]: any}> {
|
|
529
|
+
const response = await RivendellApi.get<{[key: string]: any}>(path(shard, `versions/${appId}@${version}/can_unpublish`));
|
|
530
|
+
return response.body;
|
|
531
|
+
}
|
|
532
|
+
|
|
525
533
|
/**
|
|
526
534
|
* Trigger a abandon.
|
|
527
535
|
*/
|
|
@@ -165,9 +165,10 @@ describe('Directory Commands E2E Tests', () => {
|
|
|
165
165
|
expect(result.stdout).toContain(testData.appId);
|
|
166
166
|
});
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
// Temporarily skipped: allStatuses flag is supported but the command doesn't work in staging environment
|
|
169
|
+
it.skip('should include all statuses when flag is set', async () => {
|
|
169
170
|
const result = await testInstance.runListCommand(undefined, { allStatuses: true });
|
|
170
|
-
|
|
171
|
+
|
|
171
172
|
// The command might succeed or fail depending on the data, but it should run
|
|
172
173
|
expect([0, 1]).toContain(result.exitCode);
|
|
173
174
|
if (result.exitCode === 0) {
|
|
@@ -177,7 +178,7 @@ describe('Directory Commands E2E Tests', () => {
|
|
|
177
178
|
|
|
178
179
|
it('should work with availability zone parameter', async () => {
|
|
179
180
|
const result = await testInstance.runListCommand(undefined, { availability: 'us' });
|
|
180
|
-
|
|
181
|
+
|
|
181
182
|
expect(result.exitCode).toBe(0);
|
|
182
183
|
expect(result.stdout).toBeTruthy();
|
|
183
184
|
});
|
|
@@ -191,14 +192,15 @@ describe('Directory Commands E2E Tests', () => {
|
|
|
191
192
|
|
|
192
193
|
it('should work with availability zone parameter (long form)', async () => {
|
|
193
194
|
const result = await testInstance.runListCommand(undefined, { availability: 'us', useShortFlags: false });
|
|
194
|
-
|
|
195
|
+
|
|
195
196
|
expect(result.exitCode).toBe(0);
|
|
196
197
|
expect(result.stdout).toBeTruthy();
|
|
197
198
|
});
|
|
198
199
|
|
|
199
|
-
|
|
200
|
+
// Temporarily skipped: allStatuses flag is supported but the command doesn't work in staging environment
|
|
201
|
+
it.skip('should work with multiple flags (allStatuses + availability)', async () => {
|
|
200
202
|
const result = await testInstance.runListCommand(undefined, { allStatuses: true, availability: 'us' });
|
|
201
|
-
|
|
203
|
+
|
|
202
204
|
// The command might succeed or fail depending on the data, but it should run
|
|
203
205
|
expect([0, 1]).toContain(result.exitCode);
|
|
204
206
|
if (result.exitCode === 0) {
|
|
@@ -206,9 +208,10 @@ describe('Directory Commands E2E Tests', () => {
|
|
|
206
208
|
}
|
|
207
209
|
});
|
|
208
210
|
|
|
209
|
-
|
|
211
|
+
// Temporarily skipped: allStatuses flag is supported but the command doesn't work in staging environment
|
|
212
|
+
it.skip('should work with multiple flags using short form for availability', async () => {
|
|
210
213
|
const result = await testInstance.runListCommand(undefined, { allStatuses: true, availability: 'us', useShortFlags: true });
|
|
211
|
-
|
|
214
|
+
|
|
212
215
|
// The command might succeed or fail depending on the data, but it should run
|
|
213
216
|
expect([0, 1]).toContain(result.exitCode);
|
|
214
217
|
if (result.exitCode === 0) {
|
|
@@ -541,29 +544,30 @@ describe('Directory Commands E2E Tests', () => {
|
|
|
541
544
|
});
|
|
542
545
|
});
|
|
543
546
|
|
|
544
|
-
|
|
547
|
+
// Temporarily skipped: allStatuses flag is supported but the command doesn't work in staging environment
|
|
548
|
+
describe.skip('allStatuses flag variations', () => {
|
|
545
549
|
it('should accept allStatuses flag (long form)', async () => {
|
|
546
550
|
const result = await testInstance.executePublic(['directory', 'list', '--allStatuses']);
|
|
547
|
-
|
|
551
|
+
|
|
548
552
|
// The command might succeed or fail depending on the data, but it should run
|
|
549
553
|
expect([0, 1]).toContain(result.exitCode);
|
|
550
554
|
});
|
|
551
555
|
|
|
552
556
|
it('should work with combined flags (allStatuses + availability short form)', async () => {
|
|
553
557
|
const result = await testInstance.executePublic(['directory', 'list', '--allStatuses', '-a=us']);
|
|
554
|
-
|
|
558
|
+
|
|
555
559
|
expect([0, 1]).toContain(result.exitCode);
|
|
556
560
|
});
|
|
557
561
|
|
|
558
562
|
it('should work with combined flags (allStatuses + availability long form)', async () => {
|
|
559
563
|
const result = await testInstance.executePublic(['directory', 'list', '--allStatuses', '--availability=us']);
|
|
560
|
-
|
|
564
|
+
|
|
561
565
|
expect([0, 1]).toContain(result.exitCode);
|
|
562
566
|
});
|
|
563
567
|
|
|
564
568
|
it('should work with combined flags in different order', async () => {
|
|
565
569
|
const result = await testInstance.executePublic(['directory', 'list', '--availability=us', '--allStatuses']);
|
|
566
|
-
|
|
570
|
+
|
|
567
571
|
expect([0, 1]).toContain(result.exitCode);
|
|
568
572
|
});
|
|
569
573
|
});
|
|
@@ -119,24 +119,29 @@ describe('Review Commands E2E Tests', () => {
|
|
|
119
119
|
|
|
120
120
|
it('should display review statuses correctly', async () => {
|
|
121
121
|
const result = await testInstance.runListCommand();
|
|
122
|
-
|
|
122
|
+
|
|
123
123
|
expect(result.exitCode).toBe(0);
|
|
124
124
|
expect(result.stdout).toBeTruthy();
|
|
125
|
-
|
|
125
|
+
|
|
126
126
|
// Should contain valid review statuses
|
|
127
127
|
const validStatuses = ['IN_REVIEW', 'APPROVED', 'REJECTED'];
|
|
128
|
-
const containsValidStatus = validStatuses.some(status =>
|
|
128
|
+
const containsValidStatus = validStatuses.some(status =>
|
|
129
129
|
result.stdout.includes(status)
|
|
130
130
|
);
|
|
131
|
-
|
|
131
|
+
|
|
132
|
+
// Strip beta warning before checking for data lines
|
|
133
|
+
const outputWithoutWarning = result.stdout.replace(/You are running beta version[^\n]+\n/g, '');
|
|
134
|
+
|
|
132
135
|
// If there are any reviews, they should have valid statuses
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
+
// Check for lines that look like data (contain app IDs with version patterns)
|
|
137
|
+
const hasDataLines = outputWithoutWarning.split('\n').some(line =>
|
|
138
|
+
line.trim() &&
|
|
139
|
+
!line.includes('App ID') &&
|
|
136
140
|
!line.includes('---') &&
|
|
137
|
-
line.includes('
|
|
141
|
+
!line.includes('Active environment') &&
|
|
142
|
+
/\d+\.\d+/.test(line) // Contains version number pattern
|
|
138
143
|
);
|
|
139
|
-
|
|
144
|
+
|
|
140
145
|
if (hasDataLines) {
|
|
141
146
|
expect(containsValidStatus).toBe(true);
|
|
142
147
|
}
|
|
@@ -16,7 +16,7 @@ export interface TestDataConfig {
|
|
|
16
16
|
*/
|
|
17
17
|
export const TEST_DATA: TestDataConfig = {
|
|
18
18
|
appId: process.env.OCP_TEST_APP_ID || "hub_shakedown",
|
|
19
|
-
appVersion: process.env.OCP_TEST_APP_VERSION || "
|
|
19
|
+
appVersion: process.env.OCP_TEST_APP_VERSION || "3.1.0-dev.3",
|
|
20
20
|
trackerId: process.env.OCP_TEST_TRACKER_ID || "Z6jCndly_E2WzpvDkcKBKA",
|
|
21
21
|
jobId: process.env.OCP_TEST_JOB_ID || "shakedown_job",
|
|
22
22
|
};
|
|
@@ -113,22 +113,25 @@ export abstract class BaseE2ETest {
|
|
|
113
113
|
protected assertOutputMatchesBaseline(result: CLIExecutionResult, baselinePath: string, maxLines?: number): void {
|
|
114
114
|
const baseline = this.loadBaseline(baselinePath);
|
|
115
115
|
let actualOutput = result.stdout;
|
|
116
|
-
|
|
116
|
+
|
|
117
|
+
// Strip beta version warning before truncation so it doesn't affect line count
|
|
118
|
+
actualOutput = actualOutput.replace(/You are running beta version[^\n]+\n/g, '');
|
|
119
|
+
|
|
117
120
|
// If maxLines is specified, truncate both actual and baseline to first N lines
|
|
118
121
|
if (maxLines) {
|
|
119
122
|
actualOutput = this.truncateToLines(actualOutput, maxLines);
|
|
120
123
|
}
|
|
121
|
-
|
|
124
|
+
|
|
122
125
|
const normalizedActual = BaselineNormalizer.normalize(actualOutput);
|
|
123
126
|
const normalizedBaseline = BaselineNormalizer.normalize(baseline);
|
|
124
|
-
|
|
127
|
+
|
|
125
128
|
if (normalizedActual !== normalizedBaseline) {
|
|
126
129
|
console.log('Expected (baseline):');
|
|
127
130
|
console.log(normalizedBaseline);
|
|
128
131
|
console.log('\nActual:');
|
|
129
132
|
console.log(normalizedActual);
|
|
130
133
|
}
|
|
131
|
-
|
|
134
|
+
|
|
132
135
|
expect(normalizedActual).toBe(normalizedBaseline);
|
|
133
136
|
}
|
|
134
137
|
|
|
@@ -9,10 +9,13 @@ export class BaselineNormalizer {
|
|
|
9
9
|
*/
|
|
10
10
|
static normalize(output: string): string {
|
|
11
11
|
let result = output;
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
// Replace deprecation warnings first
|
|
14
14
|
result = result.replace(/\(node:\d+\) \[DEP\d+\] DeprecationWarning: [^\n]+\n/g, '');
|
|
15
15
|
result = result.replace(/\(Use `node --trace-deprecation[^\n]+\n/g, '');
|
|
16
|
+
|
|
17
|
+
// Remove beta version warning
|
|
18
|
+
result = result.replace(/You are running beta version[^\n]+\n/g, '');
|
|
16
19
|
|
|
17
20
|
// Replace environment
|
|
18
21
|
result = result.replace(/Active environment: \w+/g, 'Active environment: <ENVIRONMENT>');
|
|
@@ -25,6 +28,9 @@ export class BaselineNormalizer {
|
|
|
25
28
|
result = result.replace(/createdAt: (?:'[^']+'|null)/g, "createdAt: <CREATED_DATE>");
|
|
26
29
|
result = result.replace(/vendor: [^\n]+/g, 'vendor: <VENDOR>');
|
|
27
30
|
|
|
31
|
+
// Replace personal_apps - normalize to empty array
|
|
32
|
+
result = result.replace(/personal_apps:\s*\n(?: - id: [^\n]+\n)+/g, 'personal_apps: []\n');
|
|
33
|
+
|
|
28
34
|
// Replace vendor_apps - keep structure but normalize to single entry
|
|
29
35
|
result = result.replace(/vendor_apps:\s*\n(?: - id: [^\n]+\n?)+/g, 'vendor_apps:\n - id: <APP_ID>');
|
|
30
36
|
|
|
@@ -34,8 +40,8 @@ export class BaselineNormalizer {
|
|
|
34
40
|
// Replace job IDs (UUIDs)
|
|
35
41
|
result = result.replace(/[a-f0-9-]{36}/g, '<JOB_ID>');
|
|
36
42
|
|
|
37
|
-
// Replace version numbers (semantic versions including dev/beta/
|
|
38
|
-
result = result.replace(/\d+\.\d+\.\d+(?:-
|
|
43
|
+
// Replace version numbers (semantic versions including dev/beta/private)
|
|
44
|
+
result = result.replace(/\d+\.\d+\.\d+(?:-dev\.\d+|-beta\.\d+|-private)?/g, '<VERSION>');
|
|
39
45
|
|
|
40
46
|
// Replace whois table data (normalize account info in table format)
|
|
41
47
|
// Match lines that start with digits followed by spaces (account ID)
|
|
@@ -73,6 +73,9 @@ export class CLIExecutor extends EventEmitter {
|
|
|
73
73
|
status: 'running'
|
|
74
74
|
};
|
|
75
75
|
|
|
76
|
+
// Log command being executed
|
|
77
|
+
console.log(`[E2E] Executing: ocp ${args.join(' ')}`);
|
|
78
|
+
|
|
76
79
|
try {
|
|
77
80
|
// Prepare environment variables
|
|
78
81
|
const processEnv = this.prepareEnvironment(options.env);
|
|
@@ -113,6 +116,13 @@ export class CLIExecutor extends EventEmitter {
|
|
|
113
116
|
signal: result.signal
|
|
114
117
|
};
|
|
115
118
|
|
|
119
|
+
// Log full output for failed commands
|
|
120
|
+
if (cliResult.exitCode !== 0) {
|
|
121
|
+
console.log(`[E2E] Command failed (exit code ${cliResult.exitCode}): ocp ${args.join(' ')}`);
|
|
122
|
+
console.log(`[E2E] STDOUT:\n${cliResult.stdout}`);
|
|
123
|
+
console.log(`[E2E] STDERR:\n${cliResult.stderr}`);
|
|
124
|
+
}
|
|
125
|
+
|
|
116
126
|
// Update process info
|
|
117
127
|
processInfo.status = 'completed';
|
|
118
128
|
processInfo.endTime = Date.now();
|
|
@@ -158,6 +168,11 @@ export class CLIExecutor extends EventEmitter {
|
|
|
158
168
|
processInfo.endTime = Date.now();
|
|
159
169
|
processInfo.duration = executionTime;
|
|
160
170
|
|
|
171
|
+
// Log full output for failed commands
|
|
172
|
+
console.log(`[E2E] Command failed (exit code ${cliResult.exitCode}): ocp ${args.join(' ')}`);
|
|
173
|
+
console.log(`[E2E] STDOUT:\n${cliResult.stdout}`);
|
|
174
|
+
console.log(`[E2E] STDERR:\n${cliResult.stderr}`);
|
|
175
|
+
|
|
161
176
|
const cliError = new CLIExecutionError(
|
|
162
177
|
`Process execution failed: ${error.message}`,
|
|
163
178
|
cliResult,
|
|
@@ -165,7 +180,7 @@ export class CLIExecutor extends EventEmitter {
|
|
|
165
180
|
);
|
|
166
181
|
|
|
167
182
|
this.emit('processError', { processInfo: { ...processInfo }, error: cliError });
|
|
168
|
-
|
|
183
|
+
|
|
169
184
|
// For compatibility, return the result instead of throwing
|
|
170
185
|
return cliResult;
|
|
171
186
|
}
|