@sasjs/cli 3.6.5 → 3.7.1

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.
@@ -57,314 +57,549 @@ var test_2 = require("../../../utils/test");
57
57
  var utils_2 = require("../../../utils");
58
58
  var dotenv_1 = __importDefault(require("dotenv"));
59
59
  var __1 = require("../..");
60
+ var node_1 = __importDefault(require("@sasjs/adapter/node"));
60
61
  describe('sasjs test', function () {
61
- var target = generateTarget();
62
- var testUrl = function (test) {
63
- return "".concat(target.serverUrl, "/").concat(target.serverType === utils_1.ServerType.SasViya
64
- ? 'SASJobExecution'
65
- : 'SASStoredProcess', "/?_program=/Public/app/cli-tests/").concat(target.name, "/tests/").concat(test, "&_debug=2477&_contextName=").concat(encodeURIComponent(target.contextName));
66
- };
67
- var testUrlLink = function (test) { return "\"=HYPERLINK(\"\"".concat(testUrl(test), "\"\")\""); };
68
- beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
69
- return __generator(this, function (_a) {
70
- switch (_a.label) {
71
- case 0: return [4 /*yield*/, (0, test_2.createTestApp)(__dirname, target.name)];
72
- case 1:
73
- _a.sent();
74
- return [4 /*yield*/, copyTestFiles(target.name)];
75
- case 2:
76
- _a.sent();
77
- return [4 /*yield*/, (0, __1.build)(target)];
78
- case 3:
79
- _a.sent();
80
- return [4 /*yield*/, (0, __1.deploy)(target, false)];
81
- case 4:
82
- _a.sent();
83
- process.logger = new utils_1.Logger(utils_1.LogLevel.Off);
84
- return [2 /*return*/];
85
- }
86
- });
87
- }); });
88
- afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
89
- return __generator(this, function (_a) {
90
- switch (_a.label) {
91
- case 0: return [4 /*yield*/, (0, test_2.removeTestServerFolder)("/Public/app/cli-tests/".concat(target.name), target)];
92
- case 1:
93
- _a.sent();
94
- return [4 /*yield*/, (0, test_2.removeTestApp)(__dirname, target.name)];
95
- case 2:
96
- _a.sent();
97
- return [2 /*return*/];
98
- }
99
- });
100
- }); });
101
- it('should execute tests and create result CSV, XML and JSON files using default source and output locations', function () { return __awaiter(void 0, void 0, void 0, function () {
102
- var expectedResultsJson, expectedResultsCsv, resultsFolderPath, resultsJsonPath, resultsJson, resultsCsvPath, parsedResults, resultsCsv, resultsXmlPath, resultsXml, expectedResultsXml, coverageLcovPath, expectedCoverageLcov, coverageLcov;
103
- return __generator(this, function (_a) {
104
- switch (_a.label) {
105
- case 0:
106
- expectedResultsJson = {
107
- sasjs_test_meta: [
108
- {
109
- test_target: 'testsetup',
110
- results: [
111
- {
112
- test_loc: 'tests/testsetup.sas',
113
- sasjs_test_id: '',
114
- result: 'not provided',
115
- test_url: testUrl('testsetup')
116
- }
117
- ]
118
- },
119
- {
120
- test_target: 'exampleprogram',
121
- results: [
122
- {
123
- test_loc: 'tests/jobs/jobs/exampleprogram.test.sas',
124
- sasjs_test_id: '',
125
- result: 'not provided',
126
- test_url: testUrl('jobs/jobs/exampleprogram.test')
127
- }
128
- ]
129
- },
130
- {
131
- test_target: 'standalone',
132
- results: [
133
- {
134
- test_loc: 'tests/jobs/jobs/standalone.test.sas',
135
- sasjs_test_id: '',
136
- result: 'not provided',
137
- test_url: testUrl('jobs/jobs/standalone.test')
138
- }
139
- ]
140
- },
141
- {
142
- test_target: 'examplemacro',
143
- results: [
144
- {
145
- test_loc: 'tests/macros/examplemacro.test.sas',
146
- sasjs_test_id: '',
147
- result: [
148
- {
149
- TEST_DESCRIPTION: 'examplemacro test.1 description',
150
- TEST_RESULT: 'PASS'
151
- }
152
- ],
153
- test_url: testUrl('macros/examplemacro.test')
154
- }
155
- ]
156
- },
157
- {
158
- test_target: 'dostuff',
159
- results: [
160
- {
161
- test_loc: 'tests/services/admin/dostuff.test.0.sas',
162
- sasjs_test_id: '',
163
- result: [
164
- {
165
- TEST_DESCRIPTION: 'dostuff 0 test description',
166
- TEST_RESULT: 'FAIL'
167
- }
168
- ],
169
- test_url: testUrl('services/admin/dostuff.test.0')
170
- },
171
- {
172
- test_loc: 'tests/services/admin/dostuff.test.1.sas',
173
- sasjs_test_id: '',
174
- result: [
175
- {
176
- TEST_DESCRIPTION: 'dostuff 1 test description',
177
- TEST_RESULT: 'PASS'
178
- }
179
- ],
180
- test_url: testUrl('services/admin/dostuff.test.1')
181
- }
182
- ]
183
- },
184
- {
185
- test_target: 'testteardown',
186
- results: [
187
- {
188
- test_loc: 'tests/testteardown.sas',
189
- sasjs_test_id: '',
190
- result: 'not provided',
191
- test_url: testUrl('testteardown')
192
- }
193
- ]
194
- }
195
- ]
196
- };
197
- expectedResultsCsv = "test_target,test_loc,sasjs_test_id,test_suite_result,test_description,test_url\ntestsetup,tests/testsetup.sas,sasjs_test_id,not provided,,".concat(testUrlLink('testsetup'), "\nexampleprogram,tests/jobs/jobs/exampleprogram.test.sas,sasjs_test_id,not provided,,").concat(testUrlLink('jobs/jobs/exampleprogram.test'), "\nstandalone,tests/jobs/jobs/standalone.test.sas,sasjs_test_id,not provided,,").concat(testUrlLink('jobs/jobs/standalone.test'), "\nexamplemacro,tests/macros/examplemacro.test.sas,sasjs_test_id,PASS,examplemacro test.1 description,").concat(testUrlLink('macros/examplemacro.test'), "\ndostuff,tests/services/admin/dostuff.test.0.sas,sasjs_test_id,FAIL,dostuff 0 test description,").concat(testUrlLink('services/admin/dostuff.test.0'), "\ndostuff,tests/services/admin/dostuff.test.1.sas,sasjs_test_id,PASS,dostuff 1 test description,").concat(testUrlLink('services/admin/dostuff.test.1'), "\ntestteardown,tests/testteardown.sas,sasjs_test_id,not provided,,").concat(testUrlLink('testteardown'), "\n");
198
- return [4 /*yield*/, (0, test_1.runTest)(target)];
199
- case 1:
200
- _a.sent();
201
- resultsFolderPath = path_1.default.join(__dirname, target.name, 'sasjsresults');
202
- resultsJsonPath = path_1.default.join(resultsFolderPath, 'testResults.json');
203
- return [4 /*yield*/, expect((0, utils_1.folderExists)(resultsFolderPath)).resolves.toEqual(true)];
204
- case 2:
205
- _a.sent();
206
- return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsJsonPath)).resolves.toEqual(true)];
207
- case 3:
208
- _a.sent();
209
- return [4 /*yield*/, (0, utils_1.readFile)(resultsJsonPath)];
210
- case 4:
211
- resultsJson = _a.sent();
212
- resultsCsvPath = path_1.default.join(resultsFolderPath, 'testResults.csv');
213
- return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsCsvPath)).resolves.toEqual(true)];
214
- case 5:
215
- _a.sent();
216
- parsedResults = JSON.parse(resultsJson);
217
- parsedResults.sasjs_test_meta = parsedResults.sasjs_test_meta.flatMap(function (res) { return (__assign(__assign({}, res), { results: res.results.map(function (r) { return (__assign(__assign({}, r), { sasjs_test_id: '' })); }) })); });
218
- expect(parsedResults).toEqual(expectedResultsJson);
219
- return [4 /*yield*/, (0, utils_1.readFile)(resultsCsvPath)];
220
- case 6:
221
- resultsCsv = _a.sent();
222
- resultsCsv = resultsCsv.replace(/\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b/g, 'sasjs_test_id');
223
- expect(resultsCsv).toEqual(expectedResultsCsv);
224
- resultsXmlPath = path_1.default.join(resultsFolderPath, 'testResults.xml');
225
- return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsXmlPath)).resolves.toEqual(true)];
226
- case 7:
227
- _a.sent();
228
- return [4 /*yield*/, (0, utils_1.readFile)(resultsXmlPath)];
229
- case 8:
230
- resultsXml = _a.sent();
231
- expectedResultsXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testsuites id=\"\" name=\"SASjs Test Meta\" tests=\"7\" failures=\"5\">\n <testsuite id=\"testsetup\" name=\"testsetup\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"exampleprogram\" name=\"exampleprogram\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"standalone\" name=\"standalone\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"examplemacro\" name=\"examplemacro\" tests=\"1\" failures=\"0\">\n <testcase id=\"\">\n </testcase>\n </testsuite>\n <testsuite id=\"dostuff\" name=\"dostuff\" tests=\"2\" failures=\"1\">\n <testcase id=\"\">\n <failure>Description: dostuff 0 test description</failure>\n </testcase>\n <testcase id=\"\">\n </testcase>\n </testsuite>\n <testsuite id=\"testteardown\" name=\"testteardown\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n</testsuites>";
232
- resultsXml = resultsXml.replace(/testsuites id="[^ ]*"/gm, "testsuites id=\"\"");
233
- resultsXml = resultsXml.replace(/testcase id="[^ ]*"/gm, "testcase id=\"\"");
234
- expect(resultsXml).toEqual(expectedResultsXml);
235
- coverageLcovPath = path_1.default.join(resultsFolderPath, 'coverage.lcov');
236
- return [4 /*yield*/, expect((0, utils_1.fileExists)(coverageLcovPath)).resolves.toEqual(true)];
237
- case 9:
238
- _a.sent();
239
- expectedCoverageLcov = "TN:testsetup.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:exampleprogram.test.sas\nSF:jobs/jobs/exampleprogram.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:standalone.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:examplemacro.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:shouldFail.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:dostuff.test.0.sas\nSF:services/admin/dostuff.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:dostuff.test.1.sas\nSF:services/admin/dostuff.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:testteardown.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record";
240
- return [4 /*yield*/, (0, utils_1.readFile)(coverageLcovPath)];
241
- case 10:
242
- coverageLcov = _a.sent();
243
- expect(coverageLcov).toEqual(expectedCoverageLcov);
244
- return [2 /*return*/];
245
- }
246
- });
247
- }); });
248
- it('should execute filtered tests and create result CSV, XML and JSON files using custom source and output locations', function () { return __awaiter(void 0, void 0, void 0, function () {
249
- var expectedResultsJson, expectedResultsCsv, outputFolder, movedTestFlow, resultsFolderPath, resultsJsonPath, resultsJson, resultsCsvPath, parsedResults, resultsCsv, logFolder, logPath, log, resultsXmlPath, resultsXml, expectedResultsXml;
250
- return __generator(this, function (_a) {
251
- switch (_a.label) {
252
- case 0:
253
- expectedResultsJson = {
254
- sasjs_test_meta: [
255
- {
256
- test_target: 'testsetup',
257
- results: [
258
- {
259
- test_loc: 'tests/testsetup.sas',
260
- sasjs_test_id: '',
261
- result: 'not provided',
262
- test_url: testUrl('testsetup')
263
- }
264
- ]
265
- },
266
- {
267
- test_target: 'standalone',
268
- results: [
269
- {
270
- test_loc: 'tests/jobs/jobs/standalone.test.sas',
271
- sasjs_test_id: '',
272
- result: 'not provided',
273
- test_url: testUrl('jobs/jobs/standalone.test')
274
- }
275
- ]
276
- },
277
- {
278
- test_target: 'dostuff',
279
- results: [
280
- {
281
- test_loc: 'tests/services/admin/dostuff.test.0.sas',
282
- sasjs_test_id: '',
283
- result: [
284
- {
285
- TEST_DESCRIPTION: 'dostuff 0 test description',
286
- TEST_RESULT: 'FAIL'
287
- }
288
- ],
289
- test_url: testUrl('services/admin/dostuff.test.0')
290
- }
291
- ]
292
- },
293
- {
294
- test_target: 'testteardown',
295
- results: [
296
- {
297
- test_loc: 'tests/testteardown.sas',
298
- sasjs_test_id: '',
299
- result: 'not provided',
300
- test_url: testUrl('testteardown')
301
- }
302
- ]
303
- }
304
- ]
305
- };
306
- expectedResultsCsv = "test_target,test_loc,sasjs_test_id,test_suite_result,test_description,test_url\ntestsetup,tests/testsetup.sas,sasjs_test_id,not provided,,".concat(testUrlLink('testsetup'), "\nstandalone,tests/jobs/jobs/standalone.test.sas,sasjs_test_id,not provided,,").concat(testUrlLink('jobs/jobs/standalone.test'), "\ndostuff,tests/services/admin/dostuff.test.0.sas,sasjs_test_id,FAIL,dostuff 0 test description,").concat(testUrlLink('services/admin/dostuff.test.0'), "\ntestteardown,tests/testteardown.sas,sasjs_test_id,not provided,,").concat(testUrlLink('testteardown'), "\n");
307
- outputFolder = 'customOutPut';
308
- movedTestFlow = 'movedTestFlow.json';
309
- return [4 /*yield*/, (0, utils_1.copy)(path_1.default.join(__dirname, target.name, 'sasjsbuild', 'testFlow.json'), path_1.default.join(__dirname, target.name, movedTestFlow))];
310
- case 1:
311
- _a.sent();
312
- return [4 /*yield*/, (0, test_1.runTest)(target, ['jobs/standalone', 'shouldFail', 'services/admin/dostuff.test.0'], outputFolder, movedTestFlow)];
313
- case 2:
314
- _a.sent();
315
- resultsFolderPath = path_1.default.join(__dirname, target.name, outputFolder);
316
- resultsJsonPath = path_1.default.join(resultsFolderPath, 'testResults.json');
317
- return [4 /*yield*/, expect((0, utils_1.folderExists)(resultsFolderPath)).resolves.toEqual(true)];
318
- case 3:
319
- _a.sent();
320
- return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsJsonPath)).resolves.toEqual(true)];
321
- case 4:
322
- _a.sent();
323
- return [4 /*yield*/, (0, utils_1.readFile)(resultsJsonPath)];
324
- case 5:
325
- resultsJson = _a.sent();
326
- resultsCsvPath = path_1.default.join(resultsFolderPath, 'testResults.csv');
327
- return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsCsvPath)).resolves.toEqual(true)];
328
- case 6:
329
- _a.sent();
330
- parsedResults = JSON.parse(resultsJson);
331
- parsedResults.sasjs_test_meta = parsedResults.sasjs_test_meta.flatMap(function (res) { return (__assign(__assign({}, res), { results: res.results.map(function (r) { return (__assign(__assign({}, r), { sasjs_test_id: '' })); }) })); });
332
- expect(parsedResults).toEqual(expectedResultsJson);
333
- return [4 /*yield*/, (0, utils_1.readFile)(resultsCsvPath)];
334
- case 7:
335
- resultsCsv = _a.sent();
336
- resultsCsv = resultsCsv.replace(/\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b/g, 'sasjs_test_id');
337
- expect(resultsCsv).toEqual(expectedResultsCsv);
338
- logFolder = path_1.default.join(resultsFolderPath, 'logs');
339
- logPath = path_1.default.join(logFolder, 'macros_shouldFail.test.log');
340
- return [4 /*yield*/, expect((0, utils_1.listFilesInFolder)(logFolder)).resolves.toEqual([
341
- 'jobs_jobs_standalone.test.log',
342
- 'macros_shouldFail.test.log',
343
- 'services_admin_dostuff.test.0.log',
344
- 'testsetup.log',
345
- 'testteardown.log'
346
- ])];
347
- case 8:
348
- _a.sent();
349
- return [4 /*yield*/, (0, utils_1.readFile)(logPath)];
350
- case 9:
351
- log = _a.sent();
352
- expect(log.length).toBeGreaterThan(0);
353
- resultsXmlPath = path_1.default.join(resultsFolderPath, 'testResults.xml');
354
- return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsXmlPath)).resolves.toEqual(true)];
355
- case 10:
356
- _a.sent();
357
- return [4 /*yield*/, (0, utils_1.readFile)(resultsXmlPath)];
358
- case 11:
359
- resultsXml = _a.sent();
360
- expectedResultsXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testsuites id=\"\" name=\"SASjs Test Meta\" tests=\"4\" failures=\"4\">\n <testsuite id=\"testsetup\" name=\"testsetup\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"standalone\" name=\"standalone\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"dostuff\" name=\"dostuff\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Description: dostuff 0 test description</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"testteardown\" name=\"testteardown\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n</testsuites>";
361
- resultsXml = resultsXml.replace(/testsuites id="[^ ]*"/gm, "testsuites id=\"\"");
362
- resultsXml = resultsXml.replace(/testcase id="[^ ]*"/gm, "testcase id=\"\"");
363
- expect(resultsXml).toEqual(expectedResultsXml);
364
- return [2 /*return*/];
365
- }
366
- });
367
- }); });
62
+ var expectedCoverageLcov = "TN:testsetup.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:exampleprogram.test.sas\nSF:jobs/jobs/exampleprogram.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:standalone.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:examplemacro.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:shouldFail.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:dostuff.test.0.sas\nSF:services/admin/dostuff.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:dostuff.test.1.sas\nSF:services/admin/dostuff.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:testteardown.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record";
63
+ describe('SASVIYA', function () {
64
+ var target = generateTarget();
65
+ var testUrl = function (test) {
66
+ return "".concat(target.serverUrl, "/SASJobExecution/?_program=/Public/app/cli-tests/").concat(target.name, "/tests/").concat(test, "&_debug=2477&_contextName=").concat(encodeURIComponent(target.contextName));
67
+ };
68
+ var testUrlLink = function (test) { return "\"=HYPERLINK(\"\"".concat(testUrl(test), "\"\")\""); };
69
+ beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
70
+ return __generator(this, function (_a) {
71
+ switch (_a.label) {
72
+ case 0: return [4 /*yield*/, (0, test_2.createTestApp)(__dirname, target.name)];
73
+ case 1:
74
+ _a.sent();
75
+ return [4 /*yield*/, copyTestFiles(target.name)];
76
+ case 2:
77
+ _a.sent();
78
+ return [4 /*yield*/, (0, __1.build)(target)];
79
+ case 3:
80
+ _a.sent();
81
+ return [4 /*yield*/, (0, __1.deploy)(target, false)];
82
+ case 4:
83
+ _a.sent();
84
+ process.logger = new utils_1.Logger(utils_1.LogLevel.Off);
85
+ return [2 /*return*/];
86
+ }
87
+ });
88
+ }); });
89
+ afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
90
+ return __generator(this, function (_a) {
91
+ switch (_a.label) {
92
+ case 0: return [4 /*yield*/, (0, test_2.removeTestServerFolder)("/Public/app/cli-tests/".concat(target.name), target)];
93
+ case 1:
94
+ _a.sent();
95
+ return [4 /*yield*/, (0, test_2.removeTestApp)(__dirname, target.name)];
96
+ case 2:
97
+ _a.sent();
98
+ return [2 /*return*/];
99
+ }
100
+ });
101
+ }); });
102
+ it('should execute tests and create result CSV, XML and JSON files using default source and output locations', function () { return __awaiter(void 0, void 0, void 0, function () {
103
+ var expectedResultsJson, expectedResultsCsv, resultsFolderPath, resultsJsonPath, resultsJson, resultsCsvPath, parsedResults, resultsCsv, resultsXmlPath, resultsXml, expectedResultsXml, coverageLcovPath, coverageLcov;
104
+ return __generator(this, function (_a) {
105
+ switch (_a.label) {
106
+ case 0:
107
+ expectedResultsJson = {
108
+ sasjs_test_meta: [
109
+ {
110
+ test_target: 'testsetup',
111
+ results: [
112
+ {
113
+ test_loc: 'tests/testsetup.sas',
114
+ sasjs_test_id: '',
115
+ result: 'not provided',
116
+ test_url: testUrl('testsetup')
117
+ }
118
+ ]
119
+ },
120
+ {
121
+ test_target: 'exampleprogram',
122
+ results: [
123
+ {
124
+ test_loc: 'tests/jobs/jobs/exampleprogram.test.sas',
125
+ sasjs_test_id: '',
126
+ result: 'not provided',
127
+ test_url: testUrl('jobs/jobs/exampleprogram.test')
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ test_target: 'standalone',
133
+ results: [
134
+ {
135
+ test_loc: 'tests/jobs/jobs/standalone.test.sas',
136
+ sasjs_test_id: '',
137
+ result: 'not provided',
138
+ test_url: testUrl('jobs/jobs/standalone.test')
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ test_target: 'examplemacro',
144
+ results: [
145
+ {
146
+ test_loc: 'tests/macros/examplemacro.test.sas',
147
+ sasjs_test_id: '',
148
+ result: [
149
+ {
150
+ TEST_DESCRIPTION: 'examplemacro test.1 description',
151
+ TEST_RESULT: 'PASS'
152
+ }
153
+ ],
154
+ test_url: testUrl('macros/examplemacro.test')
155
+ }
156
+ ]
157
+ },
158
+ {
159
+ test_target: 'dostuff',
160
+ results: [
161
+ {
162
+ test_loc: 'tests/services/admin/dostuff.test.0.sas',
163
+ sasjs_test_id: '',
164
+ result: [
165
+ {
166
+ TEST_DESCRIPTION: 'dostuff 0 test description',
167
+ TEST_RESULT: 'FAIL'
168
+ }
169
+ ],
170
+ test_url: testUrl('services/admin/dostuff.test.0')
171
+ },
172
+ {
173
+ test_loc: 'tests/services/admin/dostuff.test.1.sas',
174
+ sasjs_test_id: '',
175
+ result: [
176
+ {
177
+ TEST_DESCRIPTION: 'dostuff 1 test description',
178
+ TEST_RESULT: 'PASS'
179
+ }
180
+ ],
181
+ test_url: testUrl('services/admin/dostuff.test.1')
182
+ }
183
+ ]
184
+ },
185
+ {
186
+ test_target: 'testteardown',
187
+ results: [
188
+ {
189
+ test_loc: 'tests/testteardown.sas',
190
+ sasjs_test_id: '',
191
+ result: 'not provided',
192
+ test_url: testUrl('testteardown')
193
+ }
194
+ ]
195
+ }
196
+ ]
197
+ };
198
+ expectedResultsCsv = "test_target,test_loc,sasjs_test_id,test_suite_result,test_description,test_url\ntestsetup,tests/testsetup.sas,sasjs_test_id,not provided,,".concat(testUrlLink('testsetup'), "\nexampleprogram,tests/jobs/jobs/exampleprogram.test.sas,sasjs_test_id,not provided,,").concat(testUrlLink('jobs/jobs/exampleprogram.test'), "\nstandalone,tests/jobs/jobs/standalone.test.sas,sasjs_test_id,not provided,,").concat(testUrlLink('jobs/jobs/standalone.test'), "\nexamplemacro,tests/macros/examplemacro.test.sas,sasjs_test_id,PASS,examplemacro test.1 description,").concat(testUrlLink('macros/examplemacro.test'), "\ndostuff,tests/services/admin/dostuff.test.0.sas,sasjs_test_id,FAIL,dostuff 0 test description,").concat(testUrlLink('services/admin/dostuff.test.0'), "\ndostuff,tests/services/admin/dostuff.test.1.sas,sasjs_test_id,PASS,dostuff 1 test description,").concat(testUrlLink('services/admin/dostuff.test.1'), "\ntestteardown,tests/testteardown.sas,sasjs_test_id,not provided,,").concat(testUrlLink('testteardown'), "\n");
199
+ return [4 /*yield*/, (0, test_1.runTest)(target)];
200
+ case 1:
201
+ _a.sent();
202
+ resultsFolderPath = path_1.default.join(__dirname, target.name, 'sasjsresults');
203
+ resultsJsonPath = path_1.default.join(resultsFolderPath, 'testResults.json');
204
+ return [4 /*yield*/, expect((0, utils_1.folderExists)(resultsFolderPath)).resolves.toEqual(true)];
205
+ case 2:
206
+ _a.sent();
207
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsJsonPath)).resolves.toEqual(true)];
208
+ case 3:
209
+ _a.sent();
210
+ return [4 /*yield*/, (0, utils_1.readFile)(resultsJsonPath)];
211
+ case 4:
212
+ resultsJson = _a.sent();
213
+ resultsCsvPath = path_1.default.join(resultsFolderPath, 'testResults.csv');
214
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsCsvPath)).resolves.toEqual(true)];
215
+ case 5:
216
+ _a.sent();
217
+ parsedResults = JSON.parse(resultsJson);
218
+ parsedResults.sasjs_test_meta = parsedResults.sasjs_test_meta.flatMap(function (res) { return (__assign(__assign({}, res), { results: res.results.map(function (r) { return (__assign(__assign({}, r), { sasjs_test_id: '' })); }) })); });
219
+ expect(parsedResults).toEqual(expectedResultsJson);
220
+ return [4 /*yield*/, (0, utils_1.readFile)(resultsCsvPath)];
221
+ case 6:
222
+ resultsCsv = _a.sent();
223
+ resultsCsv = resultsCsv.replace(/\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b/g, 'sasjs_test_id');
224
+ expect(resultsCsv).toEqual(expectedResultsCsv);
225
+ resultsXmlPath = path_1.default.join(resultsFolderPath, 'testResults.xml');
226
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsXmlPath)).resolves.toEqual(true)];
227
+ case 7:
228
+ _a.sent();
229
+ return [4 /*yield*/, (0, utils_1.readFile)(resultsXmlPath)];
230
+ case 8:
231
+ resultsXml = _a.sent();
232
+ expectedResultsXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testsuites id=\"\" name=\"SASjs Test Meta\" tests=\"7\" failures=\"5\">\n <testsuite id=\"testsetup\" name=\"testsetup\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"exampleprogram\" name=\"exampleprogram\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"standalone\" name=\"standalone\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"examplemacro\" name=\"examplemacro\" tests=\"1\" failures=\"0\">\n <testcase id=\"\">\n </testcase>\n </testsuite>\n <testsuite id=\"dostuff\" name=\"dostuff\" tests=\"2\" failures=\"1\">\n <testcase id=\"\">\n <failure>Description: dostuff 0 test description</failure>\n </testcase>\n <testcase id=\"\">\n </testcase>\n </testsuite>\n <testsuite id=\"testteardown\" name=\"testteardown\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n</testsuites>";
233
+ resultsXml = resultsXml.replace(/testsuites id="[^ ]*"/gm, "testsuites id=\"\"");
234
+ resultsXml = resultsXml.replace(/testcase id="[^ ]*"/gm, "testcase id=\"\"");
235
+ expect(resultsXml).toEqual(expectedResultsXml);
236
+ coverageLcovPath = path_1.default.join(resultsFolderPath, 'coverage.lcov');
237
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(coverageLcovPath)).resolves.toEqual(true)];
238
+ case 9:
239
+ _a.sent();
240
+ return [4 /*yield*/, (0, utils_1.readFile)(coverageLcovPath)];
241
+ case 10:
242
+ coverageLcov = _a.sent();
243
+ expect(coverageLcov).toEqual(expectedCoverageLcov);
244
+ return [2 /*return*/];
245
+ }
246
+ });
247
+ }); });
248
+ it('should execute filtered tests and create result CSV, XML and JSON files using custom source and output locations', function () { return __awaiter(void 0, void 0, void 0, function () {
249
+ var expectedResultsJson, expectedResultsCsv, outputFolder, movedTestFlow, resultsFolderPath, resultsJsonPath, resultsJson, resultsCsvPath, parsedResults, resultsCsv, logFolder, logPath, log, resultsXmlPath, resultsXml, expectedResultsXml;
250
+ return __generator(this, function (_a) {
251
+ switch (_a.label) {
252
+ case 0:
253
+ expectedResultsJson = {
254
+ sasjs_test_meta: [
255
+ {
256
+ test_target: 'testsetup',
257
+ results: [
258
+ {
259
+ test_loc: 'tests/testsetup.sas',
260
+ sasjs_test_id: '',
261
+ result: 'not provided',
262
+ test_url: testUrl('testsetup')
263
+ }
264
+ ]
265
+ },
266
+ {
267
+ test_target: 'standalone',
268
+ results: [
269
+ {
270
+ test_loc: 'tests/jobs/jobs/standalone.test.sas',
271
+ sasjs_test_id: '',
272
+ result: 'not provided',
273
+ test_url: testUrl('jobs/jobs/standalone.test')
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ test_target: 'dostuff',
279
+ results: [
280
+ {
281
+ test_loc: 'tests/services/admin/dostuff.test.0.sas',
282
+ sasjs_test_id: '',
283
+ result: [
284
+ {
285
+ TEST_DESCRIPTION: 'dostuff 0 test description',
286
+ TEST_RESULT: 'FAIL'
287
+ }
288
+ ],
289
+ test_url: testUrl('services/admin/dostuff.test.0')
290
+ }
291
+ ]
292
+ },
293
+ {
294
+ test_target: 'testteardown',
295
+ results: [
296
+ {
297
+ test_loc: 'tests/testteardown.sas',
298
+ sasjs_test_id: '',
299
+ result: 'not provided',
300
+ test_url: testUrl('testteardown')
301
+ }
302
+ ]
303
+ }
304
+ ]
305
+ };
306
+ expectedResultsCsv = "test_target,test_loc,sasjs_test_id,test_suite_result,test_description,test_url\ntestsetup,tests/testsetup.sas,sasjs_test_id,not provided,,".concat(testUrlLink('testsetup'), "\nstandalone,tests/jobs/jobs/standalone.test.sas,sasjs_test_id,not provided,,").concat(testUrlLink('jobs/jobs/standalone.test'), "\ndostuff,tests/services/admin/dostuff.test.0.sas,sasjs_test_id,FAIL,dostuff 0 test description,").concat(testUrlLink('services/admin/dostuff.test.0'), "\ntestteardown,tests/testteardown.sas,sasjs_test_id,not provided,,").concat(testUrlLink('testteardown'), "\n");
307
+ outputFolder = 'customOutPut';
308
+ movedTestFlow = 'movedTestFlow.json';
309
+ return [4 /*yield*/, (0, utils_1.copy)(path_1.default.join(__dirname, target.name, 'sasjsbuild', 'testFlow.json'), path_1.default.join(__dirname, target.name, movedTestFlow))];
310
+ case 1:
311
+ _a.sent();
312
+ return [4 /*yield*/, (0, test_1.runTest)(target, ['jobs/standalone', 'shouldFail', 'services/admin/dostuff.test.0'], outputFolder, movedTestFlow)];
313
+ case 2:
314
+ _a.sent();
315
+ resultsFolderPath = path_1.default.join(__dirname, target.name, outputFolder);
316
+ resultsJsonPath = path_1.default.join(resultsFolderPath, 'testResults.json');
317
+ return [4 /*yield*/, expect((0, utils_1.folderExists)(resultsFolderPath)).resolves.toEqual(true)];
318
+ case 3:
319
+ _a.sent();
320
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsJsonPath)).resolves.toEqual(true)];
321
+ case 4:
322
+ _a.sent();
323
+ return [4 /*yield*/, (0, utils_1.readFile)(resultsJsonPath)];
324
+ case 5:
325
+ resultsJson = _a.sent();
326
+ resultsCsvPath = path_1.default.join(resultsFolderPath, 'testResults.csv');
327
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsCsvPath)).resolves.toEqual(true)];
328
+ case 6:
329
+ _a.sent();
330
+ parsedResults = JSON.parse(resultsJson);
331
+ parsedResults.sasjs_test_meta = parsedResults.sasjs_test_meta.flatMap(function (res) { return (__assign(__assign({}, res), { results: res.results.map(function (r) { return (__assign(__assign({}, r), { sasjs_test_id: '' })); }) })); });
332
+ expect(parsedResults).toEqual(expectedResultsJson);
333
+ return [4 /*yield*/, (0, utils_1.readFile)(resultsCsvPath)];
334
+ case 7:
335
+ resultsCsv = _a.sent();
336
+ resultsCsv = resultsCsv.replace(/\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b/g, 'sasjs_test_id');
337
+ expect(resultsCsv).toEqual(expectedResultsCsv);
338
+ logFolder = path_1.default.join(resultsFolderPath, 'logs');
339
+ logPath = path_1.default.join(logFolder, 'macros_shouldFail.test.log');
340
+ return [4 /*yield*/, expect((0, utils_1.listFilesInFolder)(logFolder)).resolves.toEqual([
341
+ 'jobs_jobs_standalone.test.log',
342
+ 'macros_shouldFail.test.log',
343
+ 'services_admin_dostuff.test.0.log',
344
+ 'testsetup.log',
345
+ 'testteardown.log'
346
+ ])];
347
+ case 8:
348
+ _a.sent();
349
+ return [4 /*yield*/, (0, utils_1.readFile)(logPath)];
350
+ case 9:
351
+ log = _a.sent();
352
+ expect(log.length).toBeGreaterThan(0);
353
+ resultsXmlPath = path_1.default.join(resultsFolderPath, 'testResults.xml');
354
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsXmlPath)).resolves.toEqual(true)];
355
+ case 10:
356
+ _a.sent();
357
+ return [4 /*yield*/, (0, utils_1.readFile)(resultsXmlPath)];
358
+ case 11:
359
+ resultsXml = _a.sent();
360
+ expectedResultsXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testsuites id=\"\" name=\"SASjs Test Meta\" tests=\"4\" failures=\"4\">\n <testsuite id=\"testsetup\" name=\"testsetup\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"standalone\" name=\"standalone\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"dostuff\" name=\"dostuff\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Description: dostuff 0 test description</failure>\n </testcase>\n </testsuite>\n <testsuite id=\"testteardown\" name=\"testteardown\" tests=\"1\" failures=\"1\">\n <testcase id=\"\">\n <failure>Status was not provided</failure>\n </testcase>\n </testsuite>\n</testsuites>";
361
+ resultsXml = resultsXml.replace(/testsuites id="[^ ]*"/gm, "testsuites id=\"\"");
362
+ resultsXml = resultsXml.replace(/testcase id="[^ ]*"/gm, "testcase id=\"\"");
363
+ expect(resultsXml).toEqual(expectedResultsXml);
364
+ return [2 /*return*/];
365
+ }
366
+ });
367
+ }); });
368
+ });
369
+ describe('SASJS', function () {
370
+ var sasjs = new node_1.default();
371
+ var target = generateTarget(utils_1.ServerType.Sasjs);
372
+ var t = "/Public/app/cli-tests/".concat(target.name, "/tests/").concat(test);
373
+ var testUrl = function (test) {
374
+ return "".concat((0, test_1.getTestUrl)(target, "/Public/app/cli-tests/".concat(target.name, "/tests/").concat(test)), "&_contextName=").concat(encodeURIComponent(target.contextName));
375
+ };
376
+ var testUrlLink = function (test) { return "\"=HYPERLINK(\"\"".concat(testUrl(test), "\"\")\""); };
377
+ beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
378
+ return __generator(this, function (_a) {
379
+ switch (_a.label) {
380
+ case 0: return [4 /*yield*/, (0, test_2.createTestApp)(__dirname, target.name)];
381
+ case 1:
382
+ _a.sent();
383
+ return [4 /*yield*/, copyTestFiles(target.name)];
384
+ case 2:
385
+ _a.sent();
386
+ return [4 /*yield*/, (0, __1.build)(target)];
387
+ case 3:
388
+ _a.sent();
389
+ process.logger = new utils_1.Logger(utils_1.LogLevel.Off);
390
+ return [2 /*return*/];
391
+ }
392
+ });
393
+ }); });
394
+ afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
395
+ return __generator(this, function (_a) {
396
+ switch (_a.label) {
397
+ case 0: return [4 /*yield*/, (0, test_2.removeTestApp)(__dirname, target.name)];
398
+ case 1:
399
+ _a.sent();
400
+ return [2 /*return*/];
401
+ }
402
+ });
403
+ }); });
404
+ it('should execute tests and create result CSV, XML and JSON files using default source and output locations', function () { return __awaiter(void 0, void 0, void 0, function () {
405
+ var testDescription, testResult, expectedResultsJson, expectedResultsCsv, resultsFolderPath, resultsJsonPath, resultsJson, resultsCsvPath, parsedResults, resultsCsv, resultsXmlPath, resultsXml, expectedResultsXml, coverageLcovPath, coverageLcov;
406
+ return __generator(this, function (_a) {
407
+ switch (_a.label) {
408
+ case 0:
409
+ testDescription = 'random test description';
410
+ testResult = 'PASS';
411
+ expectedResultsJson = {
412
+ sasjs_test_meta: [
413
+ {
414
+ test_target: 'testsetup',
415
+ results: [
416
+ {
417
+ test_loc: 'tests/testsetup.sas',
418
+ sasjs_test_id: '',
419
+ result: [
420
+ {
421
+ TEST_DESCRIPTION: testDescription,
422
+ TEST_RESULT: testResult
423
+ }
424
+ ],
425
+ test_url: testUrl('testsetup')
426
+ }
427
+ ]
428
+ },
429
+ {
430
+ test_target: 'exampleprogram',
431
+ results: [
432
+ {
433
+ test_loc: 'tests/jobs/jobs/exampleprogram.test.sas',
434
+ sasjs_test_id: '',
435
+ result: [
436
+ {
437
+ TEST_DESCRIPTION: testDescription,
438
+ TEST_RESULT: testResult
439
+ }
440
+ ],
441
+ test_url: testUrl('jobs/jobs/exampleprogram.test')
442
+ }
443
+ ]
444
+ },
445
+ {
446
+ test_target: 'standalone',
447
+ results: [
448
+ {
449
+ test_loc: 'tests/jobs/jobs/standalone.test.sas',
450
+ sasjs_test_id: '',
451
+ result: [
452
+ {
453
+ TEST_DESCRIPTION: testDescription,
454
+ TEST_RESULT: testResult
455
+ }
456
+ ],
457
+ test_url: testUrl('jobs/jobs/standalone.test')
458
+ }
459
+ ]
460
+ },
461
+ {
462
+ test_target: 'examplemacro',
463
+ results: [
464
+ {
465
+ test_loc: 'tests/macros/examplemacro.test.sas',
466
+ sasjs_test_id: '',
467
+ result: [
468
+ {
469
+ TEST_DESCRIPTION: testDescription,
470
+ TEST_RESULT: testResult
471
+ }
472
+ ],
473
+ test_url: testUrl('macros/examplemacro.test')
474
+ }
475
+ ]
476
+ },
477
+ {
478
+ test_target: 'shouldFail',
479
+ results: [
480
+ {
481
+ test_loc: 'tests/macros/shouldFail.test.sas',
482
+ sasjs_test_id: '',
483
+ result: [
484
+ {
485
+ TEST_DESCRIPTION: testDescription,
486
+ TEST_RESULT: testResult
487
+ }
488
+ ],
489
+ test_url: testUrl('macros/shouldFail.test')
490
+ }
491
+ ]
492
+ },
493
+ {
494
+ test_target: 'dostuff',
495
+ results: [
496
+ {
497
+ test_loc: 'tests/services/admin/dostuff.test.0.sas',
498
+ sasjs_test_id: '',
499
+ result: [
500
+ {
501
+ TEST_DESCRIPTION: testDescription,
502
+ TEST_RESULT: testResult
503
+ }
504
+ ],
505
+ test_url: testUrl('services/admin/dostuff.test.0')
506
+ },
507
+ {
508
+ test_loc: 'tests/services/admin/dostuff.test.1.sas',
509
+ sasjs_test_id: '',
510
+ result: [
511
+ {
512
+ TEST_DESCRIPTION: testDescription,
513
+ TEST_RESULT: testResult
514
+ }
515
+ ],
516
+ test_url: testUrl('services/admin/dostuff.test.1')
517
+ }
518
+ ]
519
+ },
520
+ {
521
+ test_target: 'testteardown',
522
+ results: [
523
+ {
524
+ test_loc: 'tests/testteardown.sas',
525
+ sasjs_test_id: '',
526
+ result: [
527
+ {
528
+ TEST_DESCRIPTION: testDescription,
529
+ TEST_RESULT: testResult
530
+ }
531
+ ],
532
+ test_url: testUrl('testteardown')
533
+ }
534
+ ]
535
+ }
536
+ ]
537
+ };
538
+ expectedResultsCsv = "test_target,test_loc,sasjs_test_id,test_suite_result,test_description,test_url\ntestsetup,tests/testsetup.sas,sasjs_test_id,".concat(testResult, ",").concat(testDescription, ",").concat(testUrlLink('testsetup'), "\nexampleprogram,tests/jobs/jobs/exampleprogram.test.sas,sasjs_test_id,").concat(testResult, ",").concat(testDescription, ",").concat(testUrlLink('jobs/jobs/exampleprogram.test'), "\nstandalone,tests/jobs/jobs/standalone.test.sas,sasjs_test_id,").concat(testResult, ",").concat(testDescription, ",").concat(testUrlLink('jobs/jobs/standalone.test'), "\nexamplemacro,tests/macros/examplemacro.test.sas,sasjs_test_id,").concat(testResult, ",").concat(testDescription, ",").concat(testUrlLink('macros/examplemacro.test'), "\nshouldFail,tests/macros/shouldFail.test.sas,sasjs_test_id,").concat(testResult, ",").concat(testDescription, ",").concat(testUrlLink('macros/shouldFail.test'), "\ndostuff,tests/services/admin/dostuff.test.0.sas,sasjs_test_id,").concat(testResult, ",").concat(testDescription, ",").concat(testUrlLink('services/admin/dostuff.test.0'), "\ndostuff,tests/services/admin/dostuff.test.1.sas,sasjs_test_id,").concat(testResult, ",").concat(testDescription, ",").concat(testUrlLink('services/admin/dostuff.test.1'), "\ntestteardown,tests/testteardown.sas,sasjs_test_id,").concat(testResult, ",").concat(testDescription, ",").concat(testUrlLink('testteardown'), "\n");
539
+ jest.spyOn(sasjs, 'executeJobSASjs').mockImplementation(function () {
540
+ return Promise.resolve({
541
+ status: 'success',
542
+ _webout: '{"test_results":\r\n' +
543
+ '[\r\n' +
544
+ "{\"TEST_DESCRIPTION\":\"".concat(testDescription, "\" ,\"TEST_RESULT\":\"").concat(testResult, "\" }\r\n") +
545
+ ']}',
546
+ log: '1 The SAS System 11:42 Friday, February 11, 2022\r\n' +
547
+ '\r\n' +
548
+ 'NOTE: Copyright (c) 2016 by SAS Institute Inc., Cary, NC, USA. \r\n' +
549
+ 'NOTE: This session is executing on the X64_10PRO platform.\r\n',
550
+ message: 'success'
551
+ });
552
+ });
553
+ return [4 /*yield*/, (0, test_1.runTest)(target, undefined, undefined, undefined, sasjs)];
554
+ case 1:
555
+ _a.sent();
556
+ resultsFolderPath = path_1.default.join(__dirname, target.name, 'sasjsresults');
557
+ resultsJsonPath = path_1.default.join(resultsFolderPath, 'testResults.json');
558
+ return [4 /*yield*/, expect((0, utils_1.folderExists)(resultsFolderPath)).resolves.toEqual(true)];
559
+ case 2:
560
+ _a.sent();
561
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsJsonPath)).resolves.toEqual(true)];
562
+ case 3:
563
+ _a.sent();
564
+ return [4 /*yield*/, (0, utils_1.readFile)(resultsJsonPath)];
565
+ case 4:
566
+ resultsJson = _a.sent();
567
+ resultsCsvPath = path_1.default.join(resultsFolderPath, 'testResults.csv');
568
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsCsvPath)).resolves.toEqual(true)];
569
+ case 5:
570
+ _a.sent();
571
+ parsedResults = JSON.parse(resultsJson);
572
+ parsedResults.sasjs_test_meta = parsedResults.sasjs_test_meta.flatMap(function (res) { return (__assign(__assign({}, res), { results: res.results.map(function (r) { return (__assign(__assign({}, r), { sasjs_test_id: '' })); }) })); });
573
+ expect(parsedResults).toEqual(expectedResultsJson);
574
+ return [4 /*yield*/, (0, utils_1.readFile)(resultsCsvPath)];
575
+ case 6:
576
+ resultsCsv = _a.sent();
577
+ resultsCsv = resultsCsv.replace(/\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b/g, 'sasjs_test_id');
578
+ expect(resultsCsv).toEqual(expectedResultsCsv);
579
+ resultsXmlPath = path_1.default.join(resultsFolderPath, 'testResults.xml');
580
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(resultsXmlPath)).resolves.toEqual(true)];
581
+ case 7:
582
+ _a.sent();
583
+ return [4 /*yield*/, (0, utils_1.readFile)(resultsXmlPath)];
584
+ case 8:
585
+ resultsXml = _a.sent();
586
+ expectedResultsXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testsuites id=\"\" name=\"SASjs Test Meta\" tests=\"8\" failures=\"0\">\n <testsuite id=\"testsetup\" name=\"testsetup\" tests=\"1\" failures=\"0\">\n <testcase id=\"\">\n </testcase>\n </testsuite>\n <testsuite id=\"exampleprogram\" name=\"exampleprogram\" tests=\"1\" failures=\"0\">\n <testcase id=\"\">\n </testcase>\n </testsuite>\n <testsuite id=\"standalone\" name=\"standalone\" tests=\"1\" failures=\"0\">\n <testcase id=\"\">\n </testcase>\n </testsuite>\n <testsuite id=\"examplemacro\" name=\"examplemacro\" tests=\"1\" failures=\"0\">\n <testcase id=\"\">\n </testcase>\n </testsuite>\n <testsuite id=\"shouldFail\" name=\"shouldFail\" tests=\"1\" failures=\"0\">\n <testcase id=\"\">\n </testcase>\n </testsuite>\n <testsuite id=\"dostuff\" name=\"dostuff\" tests=\"2\" failures=\"0\">\n <testcase id=\"\">\n </testcase>\n <testcase id=\"\">\n </testcase>\n </testsuite>\n <testsuite id=\"testteardown\" name=\"testteardown\" tests=\"1\" failures=\"0\">\n <testcase id=\"\">\n </testcase>\n </testsuite>\n</testsuites>";
587
+ resultsXml = resultsXml.replace(/testsuites id="[^ ]*"/gm, "testsuites id=\"\"");
588
+ resultsXml = resultsXml.replace(/testcase id="[^ ]*"/gm, "testcase id=\"\"");
589
+ expect(resultsXml).toEqual(expectedResultsXml);
590
+ coverageLcovPath = path_1.default.join(resultsFolderPath, 'coverage.lcov');
591
+ return [4 /*yield*/, expect((0, utils_1.fileExists)(coverageLcovPath)).resolves.toEqual(true)];
592
+ case 9:
593
+ _a.sent();
594
+ return [4 /*yield*/, (0, utils_1.readFile)(coverageLcovPath)];
595
+ case 10:
596
+ coverageLcov = _a.sent();
597
+ expect(coverageLcov).toEqual(expectedCoverageLcov);
598
+ return [2 /*return*/];
599
+ }
600
+ });
601
+ }); });
602
+ });
368
603
  });
369
604
  function generateTarget(serverType) {
370
605
  if (serverType === void 0) { serverType = utils_1.ServerType.SasViya; }
@@ -376,7 +611,9 @@ function generateTarget(serverType) {
376
611
  serverType: serverType,
377
612
  serverUrl: (serverType === utils_1.ServerType.SasViya
378
613
  ? process.env.VIYA_SERVER_URL
379
- : process.env.SAS9_SERVER_URL),
614
+ : serverType === utils_1.ServerType.Sas9
615
+ ? process.env.SAS9_SERVER_URL
616
+ : process.env.SASJS_SERVER_URL),
380
617
  appLoc: "/Public/app/cli-tests/".concat(targetName),
381
618
  contextName: utils_2.contextName,
382
619
  macroFolders: ['sasjs/macros'],