@sasjs/cli 3.16.2 → 3.18.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/build/commands/build/build.js +42 -40
- package/build/commands/build/spec/build.spec.js +51 -0
- package/build/commands/build/spec/{cb.spec.server.d.ts → cb.spec.server.viya.d.ts} +0 -0
- package/build/commands/build/spec/{cb.spec.server.js → cb.spec.server.viya.js} +1 -1
- package/build/commands/compile/internal/compileFile.js +6 -3
- package/build/commands/compile/internal/loadDependencies.js +29 -21
- package/build/commands/deploy/spec/cbd.spec.js +24 -19
- package/build/commands/deploy/spec/{cbd.spec.server.d.ts → cbd.spec.server.viya.d.ts} +0 -0
- package/build/commands/deploy/spec/cbd.spec.server.viya.js +334 -0
- package/build/commands/flow/spec/{flow.spec.server.d.ts → flow.spec.server.viya.d.ts} +0 -0
- package/build/commands/flow/spec/{flow.spec.server.js → flow.spec.server.viya.js} +39 -55
- package/build/commands/folder/spec/{folder.spec.server.d.ts → folder.spec.server.viya.d.ts} +0 -0
- package/build/commands/folder/spec/{folder.spec.server.js → folder.spec.server.viya.js} +17 -23
- package/build/commands/init/init.js +7 -10
- package/build/commands/init/spec/{init.spec.server.d.ts → init.spec.d.ts} +0 -0
- package/build/commands/init/spec/{init.spec.server.js → init.spec.js} +0 -0
- package/build/commands/job/spec/{job.spec.server.d.ts → job.spec.server.viya.d.ts} +0 -0
- package/build/commands/job/spec/{job.spec.server.js → job.spec.server.viya.js} +45 -56
- package/build/commands/request/request.js +3 -2
- package/build/commands/request/spec/{request.spec.server.d.ts → request.spec.server.sas9.d.ts} +0 -0
- package/build/commands/request/spec/request.spec.server.sas9.js +283 -0
- package/build/commands/{run/spec/run.spec.server.d.ts → request/spec/request.spec.server.viya.d.ts} +0 -0
- package/build/commands/request/spec/request.spec.server.viya.js +460 -0
- package/build/commands/request/spec/utils.d.ts +23 -0
- package/build/commands/request/spec/utils.js +87 -0
- package/build/commands/{servicepack/spec/servicepack.spec.server.d.ts → run/spec/run.spec.server.sas9.d.ts} +0 -0
- package/build/commands/run/spec/run.spec.server.sas9.js +115 -0
- package/build/commands/run/spec/run.spec.server.viya.d.ts +1 -0
- package/build/commands/run/spec/{run.spec.server.js → run.spec.server.viya.js} +32 -101
- package/build/commands/servicepack/spec/servicepack.spec.server.viya.d.ts +1 -0
- package/build/commands/servicepack/spec/{servicepack.spec.server.js → servicepack.spec.server.viya.js} +1 -1
- package/build/utils/test.js +4 -2
- package/build/utils/utils.d.ts +0 -7
- package/build/utils/utils.js +92 -114
- package/package.json +6 -5
- package/build/commands/deploy/spec/cbd.spec.server.js +0 -331
- package/build/commands/request/spec/request.spec.server.js +0 -709
- package/build/utils/spec/removeComments.spec.d.ts +0 -1
- package/build/utils/spec/removeComments.spec.js +0 -47
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
33
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
34
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
35
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
36
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
37
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
38
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
42
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
43
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
44
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
45
|
+
function step(op) {
|
|
46
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
47
|
+
while (_) try {
|
|
48
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
49
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
50
|
+
switch (op[0]) {
|
|
51
|
+
case 0: case 1: t = op; break;
|
|
52
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
53
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
54
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
55
|
+
default:
|
|
56
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
57
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
58
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
59
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
60
|
+
if (t[2]) _.ops.pop();
|
|
61
|
+
_.trys.pop(); continue;
|
|
62
|
+
}
|
|
63
|
+
op = body.call(thisArg, _);
|
|
64
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
65
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
69
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
70
|
+
};
|
|
71
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
72
|
+
var utils_1 = require("@sasjs/utils");
|
|
73
|
+
var path_1 = __importDefault(require("path"));
|
|
74
|
+
var utils_2 = require("@sasjs/utils");
|
|
75
|
+
var configUtils = __importStar(require("../../../utils/config"));
|
|
76
|
+
var getDeployScriptsModule = __importStar(require("../internal/getDeployScripts"));
|
|
77
|
+
var test_1 = require("../../../utils/test");
|
|
78
|
+
var build_1 = require("../../build/build");
|
|
79
|
+
var deploy_1 = require("../deploy");
|
|
80
|
+
var utils_3 = require("./utils");
|
|
81
|
+
describe('sasjs cbd with Viya', function () {
|
|
82
|
+
describe('sasjs cbd with global config', function () {
|
|
83
|
+
var target;
|
|
84
|
+
beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
85
|
+
return __generator(this, function (_a) {
|
|
86
|
+
switch (_a.label) {
|
|
87
|
+
case 0:
|
|
88
|
+
target = (0, utils_3.generateTarget)(false);
|
|
89
|
+
return [4 /*yield*/, (0, test_1.createTestMinimalApp)(__dirname, target.name)];
|
|
90
|
+
case 1:
|
|
91
|
+
_a.sent();
|
|
92
|
+
return [4 /*yield*/, (0, utils_3.copyJobsAndServices)(target.name)];
|
|
93
|
+
case 2:
|
|
94
|
+
_a.sent();
|
|
95
|
+
return [2 /*return*/];
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}); });
|
|
99
|
+
afterEach(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
100
|
+
return __generator(this, function (_a) {
|
|
101
|
+
switch (_a.label) {
|
|
102
|
+
case 0: return [4 /*yield*/, (0, test_1.removeTestServerFolder)(target.appLoc, target)];
|
|
103
|
+
case 1:
|
|
104
|
+
_a.sent();
|
|
105
|
+
return [4 /*yield*/, (0, test_1.removeTestApp)(__dirname, target.name)];
|
|
106
|
+
case 2:
|
|
107
|
+
_a.sent();
|
|
108
|
+
return [2 /*return*/];
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}); });
|
|
112
|
+
it('should compile, build and deploy', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
113
|
+
var servicePath, jobPath, buildJsonPath, jobContent, jsonContent, _a, _b, serviceContent;
|
|
114
|
+
return __generator(this, function (_c) {
|
|
115
|
+
switch (_c.label) {
|
|
116
|
+
case 0:
|
|
117
|
+
servicePath = path_1.default.join(__dirname, target.name, 'sasjsbuild/services/testJob/job.sas');
|
|
118
|
+
jobPath = path_1.default.join(__dirname, target.name, 'sasjsbuild/jobs/testJob/job.sas');
|
|
119
|
+
buildJsonPath = path_1.default.join(__dirname, target.name, "sasjsbuild/".concat(target.name, ".json"));
|
|
120
|
+
return [4 /*yield*/, expect((0, build_1.build)(target)).toResolve()];
|
|
121
|
+
case 1:
|
|
122
|
+
_c.sent();
|
|
123
|
+
return [4 /*yield*/, expect((0, deploy_1.deploy)(target, false)).toResolve()];
|
|
124
|
+
case 2:
|
|
125
|
+
_c.sent();
|
|
126
|
+
return [4 /*yield*/, expect((0, utils_1.fileExists)(servicePath)).resolves.toEqual(true)];
|
|
127
|
+
case 3:
|
|
128
|
+
_c.sent();
|
|
129
|
+
return [4 /*yield*/, expect((0, utils_1.fileExists)(jobPath)).resolves.toEqual(true)
|
|
130
|
+
/**
|
|
131
|
+
* test to ensure that jobs do not have web service pre code
|
|
132
|
+
*/
|
|
133
|
+
];
|
|
134
|
+
case 4:
|
|
135
|
+
_c.sent();
|
|
136
|
+
return [4 /*yield*/, (0, utils_1.readFile)(jobPath)];
|
|
137
|
+
case 5:
|
|
138
|
+
jobContent = _c.sent();
|
|
139
|
+
expect(jobContent).not.toEqual('');
|
|
140
|
+
expect(/^\* Job Variables start;*/.test(jobContent)).toEqual(true);
|
|
141
|
+
expect(jobContent.includes("* JobInit start;")).toEqual(true);
|
|
142
|
+
expect(jobContent.includes("* JobTerm start;")).toEqual(true);
|
|
143
|
+
_b = (_a = JSON).parse;
|
|
144
|
+
return [4 /*yield*/, (0, utils_1.readFile)(buildJsonPath)];
|
|
145
|
+
case 6:
|
|
146
|
+
jsonContent = _b.apply(_a, [_c.sent()]);
|
|
147
|
+
expect(!!jsonContent.members.find(function (x) { return x.name === 'services'; })).toEqual(true);
|
|
148
|
+
return [4 /*yield*/, (0, utils_1.readFile)(servicePath)];
|
|
149
|
+
case 7:
|
|
150
|
+
serviceContent = _c.sent();
|
|
151
|
+
expect(serviceContent).not.toEqual('');
|
|
152
|
+
expect(/^\* Service Variables start;*/.test(serviceContent)).toEqual(false);
|
|
153
|
+
expect(serviceContent.includes("* ServiceInit start;")).toEqual(true);
|
|
154
|
+
expect(serviceContent.includes("* ServiceTerm start;")).toEqual(true);
|
|
155
|
+
return [2 /*return*/];
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}); });
|
|
159
|
+
});
|
|
160
|
+
describe('sasjs cbd with local config', function () {
|
|
161
|
+
var target;
|
|
162
|
+
var appName;
|
|
163
|
+
beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
164
|
+
return __generator(this, function (_a) {
|
|
165
|
+
switch (_a.label) {
|
|
166
|
+
case 0:
|
|
167
|
+
appName = "cli-tests-cbd-local-".concat((0, utils_2.generateTimestamp)());
|
|
168
|
+
return [4 /*yield*/, (0, test_1.createTestApp)(__dirname, appName)];
|
|
169
|
+
case 1:
|
|
170
|
+
_a.sent();
|
|
171
|
+
target = (0, utils_3.generateTarget)(true);
|
|
172
|
+
return [4 /*yield*/, (0, utils_3.copyJobsAndServices)(appName)];
|
|
173
|
+
case 2:
|
|
174
|
+
_a.sent();
|
|
175
|
+
return [4 /*yield*/, (0, utils_1.copy)(path_1.default.join(__dirname, 'testScript', 'copyscript.sh'), path_1.default.join(process.projectDir, 'sasjs', 'build', 'copyscript.sh'))];
|
|
176
|
+
case 3:
|
|
177
|
+
_a.sent();
|
|
178
|
+
return [2 /*return*/];
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}); });
|
|
182
|
+
afterEach(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
183
|
+
return __generator(this, function (_a) {
|
|
184
|
+
switch (_a.label) {
|
|
185
|
+
case 0: return [4 /*yield*/, (0, test_1.removeTestServerFolder)(target.appLoc, target)];
|
|
186
|
+
case 1:
|
|
187
|
+
_a.sent();
|
|
188
|
+
return [4 /*yield*/, (0, test_1.removeTestApp)(__dirname, appName)];
|
|
189
|
+
case 2:
|
|
190
|
+
_a.sent();
|
|
191
|
+
jest.resetAllMocks();
|
|
192
|
+
return [2 /*return*/];
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}); });
|
|
196
|
+
it('should deploy service pack when deployServicePack is true', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
197
|
+
return __generator(this, function (_a) {
|
|
198
|
+
switch (_a.label) {
|
|
199
|
+
case 0: return [4 /*yield*/, expect((0, build_1.build)(target)).toResolve()];
|
|
200
|
+
case 1:
|
|
201
|
+
_a.sent();
|
|
202
|
+
return [4 /*yield*/, expect((0, deploy_1.deploy)(target, true)).toResolve()];
|
|
203
|
+
case 2:
|
|
204
|
+
_a.sent();
|
|
205
|
+
return [2 /*return*/];
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}); });
|
|
209
|
+
it('should deploy using deployScripts when deployServicePack is false', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
210
|
+
var customTarget;
|
|
211
|
+
return __generator(this, function (_a) {
|
|
212
|
+
switch (_a.label) {
|
|
213
|
+
case 0:
|
|
214
|
+
customTarget = new utils_2.Target(__assign(__assign({}, target.toJson()), { deployConfig: {
|
|
215
|
+
deployServicePack: false,
|
|
216
|
+
deployScripts: ['sasjs/build/copyscript.sh']
|
|
217
|
+
} }));
|
|
218
|
+
return [4 /*yield*/, expect((0, build_1.build)(customTarget)).toResolve()];
|
|
219
|
+
case 1:
|
|
220
|
+
_a.sent();
|
|
221
|
+
return [4 /*yield*/, expect((0, deploy_1.deploy)(customTarget, true)).toResolve()];
|
|
222
|
+
case 2:
|
|
223
|
+
_a.sent();
|
|
224
|
+
return [2 /*return*/];
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}); });
|
|
228
|
+
it('should error when deployServicePack is false and no deployScripts have been specified', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
229
|
+
var customTarget;
|
|
230
|
+
return __generator(this, function (_a) {
|
|
231
|
+
switch (_a.label) {
|
|
232
|
+
case 0:
|
|
233
|
+
customTarget = new utils_2.Target(__assign(__assign({}, target.toJson()), { deployConfig: {
|
|
234
|
+
deployServicePack: false,
|
|
235
|
+
deployScripts: []
|
|
236
|
+
} }));
|
|
237
|
+
jest
|
|
238
|
+
.spyOn(getDeployScriptsModule, 'getDeployScripts')
|
|
239
|
+
.mockImplementation(function () { return Promise.resolve([]); });
|
|
240
|
+
return [4 /*yield*/, (0, build_1.build)(customTarget)];
|
|
241
|
+
case 1:
|
|
242
|
+
_a.sent();
|
|
243
|
+
return [4 /*yield*/, expect((0, deploy_1.deploy)(customTarget, true)).rejects.toEqual(new Error("Deployment failed.\nPlease either enable the 'deployServicePack' option or add deployment script paths to 'deployScripts' in your target's 'deployConfig'."))];
|
|
244
|
+
case 2:
|
|
245
|
+
_a.sent();
|
|
246
|
+
return [2 /*return*/];
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
}); });
|
|
250
|
+
it("should error when an access token is not provided", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
251
|
+
return __generator(this, function (_a) {
|
|
252
|
+
switch (_a.label) {
|
|
253
|
+
case 0:
|
|
254
|
+
jest.spyOn(configUtils, 'getAccessToken').mockImplementation(function () {
|
|
255
|
+
return Promise.reject('Token error');
|
|
256
|
+
});
|
|
257
|
+
return [4 /*yield*/, (0, build_1.build)(target)];
|
|
258
|
+
case 1:
|
|
259
|
+
_a.sent();
|
|
260
|
+
return [4 /*yield*/, expect((0, deploy_1.deploy)(target, true)).rejects.toThrow(new Error("Deployment failed. Request is not authenticated.\nPlease add the following variables to your .env.".concat(target.name, " file:\nCLIENT, SECRET, ACCESS_TOKEN, REFRESH_TOKEN")))];
|
|
261
|
+
case 2:
|
|
262
|
+
_a.sent();
|
|
263
|
+
jest.restoreAllMocks();
|
|
264
|
+
return [2 /*return*/];
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
}); });
|
|
268
|
+
});
|
|
269
|
+
describe('sasjs cbd having stream app', function () {
|
|
270
|
+
var target;
|
|
271
|
+
var appName;
|
|
272
|
+
var streamConfig = {
|
|
273
|
+
assetPaths: [],
|
|
274
|
+
streamWeb: true,
|
|
275
|
+
streamWebFolder: 'webv',
|
|
276
|
+
webSourcePath: 'src',
|
|
277
|
+
streamServiceName: 'clickme'
|
|
278
|
+
};
|
|
279
|
+
beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
280
|
+
return __generator(this, function (_a) {
|
|
281
|
+
switch (_a.label) {
|
|
282
|
+
case 0:
|
|
283
|
+
appName = "cli-tests-cbd-local-stream-".concat((0, utils_2.generateTimestamp)());
|
|
284
|
+
return [4 /*yield*/, (0, test_1.createTestMinimalApp)(__dirname, appName)];
|
|
285
|
+
case 1:
|
|
286
|
+
_a.sent();
|
|
287
|
+
target = (0, utils_3.generateTarget)(true);
|
|
288
|
+
return [2 /*return*/];
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
}); });
|
|
292
|
+
afterEach(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
293
|
+
return __generator(this, function (_a) {
|
|
294
|
+
switch (_a.label) {
|
|
295
|
+
case 0: return [4 /*yield*/, (0, test_1.removeTestServerFolder)(target.appLoc, target)];
|
|
296
|
+
case 1:
|
|
297
|
+
_a.sent();
|
|
298
|
+
return [4 /*yield*/, (0, test_1.removeTestApp)(__dirname, appName)];
|
|
299
|
+
case 2:
|
|
300
|
+
_a.sent();
|
|
301
|
+
jest.resetAllMocks();
|
|
302
|
+
return [2 /*return*/];
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}); });
|
|
306
|
+
it("should deploy compile and build with streamConfig", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
307
|
+
var appLoc, appLocWithSpaces, customTarget, logFileContent, appLocTransformed, streamingApplink;
|
|
308
|
+
return __generator(this, function (_a) {
|
|
309
|
+
switch (_a.label) {
|
|
310
|
+
case 0:
|
|
311
|
+
appLoc = "/Public/app/cli-tests/".concat(target.name);
|
|
312
|
+
appLocWithSpaces = "".concat(appLoc, "/with some/space s");
|
|
313
|
+
customTarget = new utils_2.Target(__assign(__assign({}, target.toJson()), { appLoc: appLocWithSpaces, streamConfig: streamConfig, jobConfig: undefined, serviceConfig: undefined, deployConfig: {
|
|
314
|
+
deployServicePack: false,
|
|
315
|
+
deployScripts: ["sasjsbuild/".concat(target.name, ".sas")]
|
|
316
|
+
} }));
|
|
317
|
+
return [4 /*yield*/, expect((0, build_1.build)(customTarget)).toResolve()];
|
|
318
|
+
case 1:
|
|
319
|
+
_a.sent();
|
|
320
|
+
return [4 /*yield*/, expect((0, deploy_1.deploy)(customTarget, true)).toResolve()];
|
|
321
|
+
case 2:
|
|
322
|
+
_a.sent();
|
|
323
|
+
return [4 /*yield*/, (0, utils_1.readFile)(path_1.default.join(__dirname, appName, 'sasjsbuild', "".concat(target.name, ".log")))];
|
|
324
|
+
case 3:
|
|
325
|
+
logFileContent = _a.sent();
|
|
326
|
+
appLocTransformed = '/with%20some/space%20s';
|
|
327
|
+
streamingApplink = "".concat(target.serverUrl.replace('https://', ''), "/SASJobExecution?_FILE=").concat(appLoc).concat(appLocTransformed, "/services/").concat(streamConfig.streamServiceName, ".html&_debug=2");
|
|
328
|
+
expect(logFileContent.replace(/\s/g, '')).toEqual(expect.stringContaining(streamingApplink));
|
|
329
|
+
return [2 /*return*/];
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
}); });
|
|
333
|
+
});
|
|
334
|
+
});
|
|
File without changes
|
|
@@ -50,8 +50,39 @@ var utils_3 = require("../../../utils");
|
|
|
50
50
|
var __1 = require("../..");
|
|
51
51
|
var execute_1 = require("../execute");
|
|
52
52
|
var node_1 = __importDefault(require("@sasjs/adapter/node"));
|
|
53
|
-
describe('sasjs flow', function () {
|
|
54
|
-
|
|
53
|
+
describe('sasjs flow with Viya', function () {
|
|
54
|
+
dotenv_1.default.config();
|
|
55
|
+
var timestamp = (0, utils_2.generateTimestamp)();
|
|
56
|
+
var targetName = "cli-tests-flow-".concat(timestamp);
|
|
57
|
+
var target = new utils_2.Target({
|
|
58
|
+
name: targetName,
|
|
59
|
+
serverType: utils_2.ServerType.SasViya,
|
|
60
|
+
serverUrl: process.env.VIYA_SERVER_URL,
|
|
61
|
+
appLoc: "/Public/app/cli-tests/".concat(targetName),
|
|
62
|
+
contextName: utils_3.contextName,
|
|
63
|
+
serviceConfig: {
|
|
64
|
+
serviceFolders: ['sasjs/testServices', 'sasjs/testJob', 'sasjs/services'],
|
|
65
|
+
initProgram: 'sasjs/testServices/serviceinit.sas',
|
|
66
|
+
termProgram: 'sasjs/testServices/serviceterm.sas',
|
|
67
|
+
macroVars: {}
|
|
68
|
+
},
|
|
69
|
+
jobConfig: {
|
|
70
|
+
jobFolders: ['sasjs/testJob'],
|
|
71
|
+
initProgram: 'sasjs/testServices/serviceinit.sas',
|
|
72
|
+
termProgram: 'sasjs/testServices/serviceterm.sas',
|
|
73
|
+
macroVars: {}
|
|
74
|
+
},
|
|
75
|
+
authConfig: {
|
|
76
|
+
client: process.env.CLIENT,
|
|
77
|
+
secret: process.env.SECRET,
|
|
78
|
+
access_token: process.env.ACCESS_TOKEN,
|
|
79
|
+
refresh_token: process.env.REFRESH_TOKEN
|
|
80
|
+
},
|
|
81
|
+
deployConfig: {
|
|
82
|
+
deployServicePack: true,
|
|
83
|
+
deployScripts: []
|
|
84
|
+
}
|
|
85
|
+
});
|
|
55
86
|
var sasjs = new node_1.default({
|
|
56
87
|
serverUrl: target.serverUrl,
|
|
57
88
|
httpsAgentOptions: target.httpsAgentOptions,
|
|
@@ -70,14 +101,17 @@ describe('sasjs flow', function () {
|
|
|
70
101
|
return [4 /*yield*/, (0, test_1.createTestApp)(__dirname, target.name)];
|
|
71
102
|
case 2:
|
|
72
103
|
_a.sent();
|
|
73
|
-
return [4 /*yield*/,
|
|
104
|
+
return [4 /*yield*/, (0, utils_1.copy)(path_1.default.join(__dirname, 'testJob'), path_1.default.join(__dirname, target.name, 'sasjs', 'testJob'))];
|
|
74
105
|
case 3:
|
|
75
106
|
_a.sent();
|
|
76
|
-
return [4 /*yield*/, (0,
|
|
107
|
+
return [4 /*yield*/, (0, utils_1.copy)(path_1.default.join(__dirname, 'testServices'), path_1.default.join(__dirname, target.name, 'sasjs', 'testServices'))];
|
|
77
108
|
case 4:
|
|
78
109
|
_a.sent();
|
|
79
|
-
return [4 /*yield*/, (0, __1.
|
|
110
|
+
return [4 /*yield*/, (0, __1.build)(target)];
|
|
80
111
|
case 5:
|
|
112
|
+
_a.sent();
|
|
113
|
+
return [4 /*yield*/, (0, __1.deploy)(target, false)];
|
|
114
|
+
case 6:
|
|
81
115
|
_a.sent();
|
|
82
116
|
process.logger = new utils_2.Logger(utils_2.LogLevel.Off);
|
|
83
117
|
return [2 /*return*/];
|
|
@@ -406,53 +440,3 @@ describe('sasjs flow', function () {
|
|
|
406
440
|
});
|
|
407
441
|
}); });
|
|
408
442
|
});
|
|
409
|
-
function generateTarget(serverType) {
|
|
410
|
-
if (serverType === void 0) { serverType = utils_2.ServerType.SasViya; }
|
|
411
|
-
dotenv_1.default.config();
|
|
412
|
-
var timestamp = (0, utils_2.generateTimestamp)();
|
|
413
|
-
var targetName = "cli-tests-flow-".concat(timestamp);
|
|
414
|
-
return new utils_2.Target({
|
|
415
|
-
name: targetName,
|
|
416
|
-
serverType: serverType,
|
|
417
|
-
serverUrl: (serverType === utils_2.ServerType.SasViya
|
|
418
|
-
? process.env.VIYA_SERVER_URL
|
|
419
|
-
: process.env.SAS9_SERVER_URL),
|
|
420
|
-
appLoc: "/Public/app/cli-tests/".concat(targetName),
|
|
421
|
-
contextName: utils_3.contextName,
|
|
422
|
-
serviceConfig: {
|
|
423
|
-
serviceFolders: ['sasjs/testServices', 'sasjs/testJob', 'sasjs/services'],
|
|
424
|
-
initProgram: 'sasjs/testServices/serviceinit.sas',
|
|
425
|
-
termProgram: 'sasjs/testServices/serviceterm.sas',
|
|
426
|
-
macroVars: {}
|
|
427
|
-
},
|
|
428
|
-
jobConfig: {
|
|
429
|
-
jobFolders: ['sasjs/testJob'],
|
|
430
|
-
initProgram: 'sasjs/testServices/serviceinit.sas',
|
|
431
|
-
termProgram: 'sasjs/testServices/serviceterm.sas',
|
|
432
|
-
macroVars: {}
|
|
433
|
-
},
|
|
434
|
-
authConfig: {
|
|
435
|
-
client: process.env.CLIENT,
|
|
436
|
-
secret: process.env.SECRET,
|
|
437
|
-
access_token: process.env.ACCESS_TOKEN,
|
|
438
|
-
refresh_token: process.env.REFRESH_TOKEN
|
|
439
|
-
},
|
|
440
|
-
deployConfig: {
|
|
441
|
-
deployServicePack: true,
|
|
442
|
-
deployScripts: []
|
|
443
|
-
}
|
|
444
|
-
});
|
|
445
|
-
}
|
|
446
|
-
var copyJobsAndServices = function (appName) { return __awaiter(void 0, void 0, void 0, function () {
|
|
447
|
-
return __generator(this, function (_a) {
|
|
448
|
-
switch (_a.label) {
|
|
449
|
-
case 0: return [4 /*yield*/, (0, utils_1.copy)(path_1.default.join(__dirname, 'testJob'), path_1.default.join(__dirname, appName, 'sasjs', 'testJob'))];
|
|
450
|
-
case 1:
|
|
451
|
-
_a.sent();
|
|
452
|
-
return [4 /*yield*/, (0, utils_1.copy)(path_1.default.join(__dirname, 'testServices'), path_1.default.join(__dirname, appName, 'sasjs', 'testServices'))];
|
|
453
|
-
case 2:
|
|
454
|
-
_a.sent();
|
|
455
|
-
return [2 /*return*/];
|
|
456
|
-
}
|
|
457
|
-
});
|
|
458
|
-
}); };
|
|
File without changes
|
|
@@ -48,8 +48,23 @@ var list_1 = require("../list");
|
|
|
48
48
|
var create_1 = require("../create");
|
|
49
49
|
var move_1 = require("../move");
|
|
50
50
|
var delete_1 = require("../delete");
|
|
51
|
-
describe('sasjs folder
|
|
52
|
-
|
|
51
|
+
describe('sasjs folder with Viya', function () {
|
|
52
|
+
dotenv_1.default.config();
|
|
53
|
+
var timestamp = (0, utils_1.generateTimestamp)();
|
|
54
|
+
var targetName = "cli-tests-folder-".concat(timestamp);
|
|
55
|
+
var target = new utils_1.Target({
|
|
56
|
+
name: targetName,
|
|
57
|
+
appLoc: "/Public/app/cli-tests/".concat(targetName),
|
|
58
|
+
serverType: utils_1.ServerType.SasViya,
|
|
59
|
+
contextName: utils_2.contextName,
|
|
60
|
+
serverUrl: process.env.VIYA_SERVER_URL,
|
|
61
|
+
authConfig: {
|
|
62
|
+
client: process.env.CLIENT,
|
|
63
|
+
secret: process.env.SECRET,
|
|
64
|
+
access_token: process.env.ACCESS_TOKEN,
|
|
65
|
+
refresh_token: process.env.REFRESH_TOKEN
|
|
66
|
+
}
|
|
67
|
+
});
|
|
53
68
|
var sasjs = new node_1.default({
|
|
54
69
|
serverUrl: target.serverUrl,
|
|
55
70
|
httpsAgentOptions: target.httpsAgentOptions,
|
|
@@ -221,27 +236,6 @@ describe('sasjs folder operations', function () {
|
|
|
221
236
|
});
|
|
222
237
|
}); });
|
|
223
238
|
});
|
|
224
|
-
function generateTarget(serverType) {
|
|
225
|
-
if (serverType === void 0) { serverType = utils_1.ServerType.SasViya; }
|
|
226
|
-
dotenv_1.default.config();
|
|
227
|
-
var timestamp = (0, utils_1.generateTimestamp)();
|
|
228
|
-
var targetName = "cli-tests-folder-".concat(timestamp);
|
|
229
|
-
return new utils_1.Target({
|
|
230
|
-
name: targetName,
|
|
231
|
-
appLoc: "/Public/app/cli-tests/".concat(targetName),
|
|
232
|
-
serverType: serverType,
|
|
233
|
-
contextName: utils_2.contextName,
|
|
234
|
-
serverUrl: (serverType === utils_1.ServerType.SasViya
|
|
235
|
-
? process.env.VIYA_SERVER_URL
|
|
236
|
-
: process.env.SAS9_SERVER_URL),
|
|
237
|
-
authConfig: {
|
|
238
|
-
client: process.env.CLIENT,
|
|
239
|
-
secret: process.env.SECRET,
|
|
240
|
-
access_token: process.env.ACCESS_TOKEN,
|
|
241
|
-
refresh_token: process.env.REFRESH_TOKEN
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
239
|
var createTestFolder = function (testFolderPath, sasjs, accessToken) { return __awaiter(void 0, void 0, void 0, function () {
|
|
246
240
|
return __generator(this, function (_a) {
|
|
247
241
|
switch (_a.label) {
|
|
@@ -59,25 +59,22 @@ function init() {
|
|
|
59
59
|
_b.sent();
|
|
60
60
|
return [4 /*yield*/, (0, utils_1.setupGitIgnore)(parentFolderName)];
|
|
61
61
|
case 2:
|
|
62
|
-
_b.sent();
|
|
63
|
-
return [4 /*yield*/, (0, utils_1.setupGhooks)(parentFolderName)];
|
|
64
|
-
case 3:
|
|
65
62
|
_b.sent();
|
|
66
63
|
return [4 /*yield*/, (0, utils_1.setupDoxygen)(parentFolderName)];
|
|
67
|
-
case
|
|
64
|
+
case 3:
|
|
68
65
|
_b.sent();
|
|
69
66
|
return [4 /*yield*/, (0, createConfigFile_1.createConfigFile)(parentFolderName)];
|
|
70
|
-
case
|
|
67
|
+
case 4:
|
|
71
68
|
_b.sent();
|
|
72
69
|
lintConfigPath = path_1.default.join(process.projectDir, parentFolderName, '.sasjslint');
|
|
73
70
|
return [4 /*yield*/, (0, utils_2.fileExists)(lintConfigPath)];
|
|
74
|
-
case
|
|
75
|
-
if (!!(_b.sent())) return [3 /*break*/,
|
|
71
|
+
case 5:
|
|
72
|
+
if (!!(_b.sent())) return [3 /*break*/, 7];
|
|
76
73
|
return [4 /*yield*/, (0, createLintConfigFile_1.createLintConfigFile)(parentFolderName)];
|
|
77
|
-
case
|
|
74
|
+
case 6:
|
|
78
75
|
_b.sent();
|
|
79
|
-
_b.label =
|
|
80
|
-
case
|
|
76
|
+
_b.label = 7;
|
|
77
|
+
case 7: return [2 /*return*/];
|
|
81
78
|
}
|
|
82
79
|
});
|
|
83
80
|
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|