Skip to content

Commit

Permalink
Merge branch 'master' into anax-update-readme
Browse files Browse the repository at this point in the history
  • Loading branch information
anaxceron authored Dec 16, 2024
2 parents c3edfd6 + 14986b1 commit a0d8426
Show file tree
Hide file tree
Showing 10 changed files with 139 additions and 28 deletions.
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "8.9.0",
"version": "8.9.1",
"command": {
"publish": {
"ignoreChanges": [
Expand Down
18 changes: 9 additions & 9 deletions npm-shrinkwrap.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@zowe/cli",
"version": "8.9.0",
"version": "8.9.1",
"zoweVersion": "v3.0.0",
"description": "Zowe CLI is a command line interface (CLI) that provides a simple and streamlined way to interact with IBM z/OS.",
"author": "Zowe",
Expand Down Expand Up @@ -62,12 +62,12 @@
"@zowe/imperative": "8.8.3",
"@zowe/provisioning-for-zowe-sdk": "8.8.3",
"@zowe/zos-console-for-zowe-sdk": "8.8.3",
"@zowe/zos-files-for-zowe-sdk": "8.9.0",
"@zowe/zos-jobs-for-zowe-sdk": "8.9.0",
"@zowe/zos-files-for-zowe-sdk": "8.9.1",
"@zowe/zos-jobs-for-zowe-sdk": "8.9.1",
"@zowe/zos-logs-for-zowe-sdk": "8.8.3",
"@zowe/zos-tso-for-zowe-sdk": "8.8.3",
"@zowe/zos-uss-for-zowe-sdk": "8.8.3",
"@zowe/zos-workflows-for-zowe-sdk": "8.9.0",
"@zowe/zos-workflows-for-zowe-sdk": "8.9.1",
"@zowe/zosmf-for-zowe-sdk": "8.8.3",
"find-process": "1.4.7",
"lodash": "4.17.21",
Expand Down
4 changes: 2 additions & 2 deletions packages/workflows/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@zowe/zos-workflows-for-zowe-sdk",
"version": "8.9.0",
"version": "8.9.1",
"description": "Zowe SDK to interact with the z/OS workflows APIs",
"author": "Zowe",
"license": "EPL-2.0",
Expand Down Expand Up @@ -45,7 +45,7 @@
"prepack": "node ../../scripts/prepareLicenses.js"
},
"dependencies": {
"@zowe/zos-files-for-zowe-sdk": "8.9.0"
"@zowe/zos-files-for-zowe-sdk": "8.9.1"
},
"devDependencies": {
"@zowe/cli-test-utils": "8.8.3",
Expand Down
3 changes: 2 additions & 1 deletion packages/zosfiles/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

All notable changes to the Zowe z/OS files SDK package will be documented in this file.

## Recent Changes
## `8.9.1`

- BugFix: Corrected the `apiResponse` response value from `streamToDataSet()`,`streamToUss()`,`bufferToUss()` and `bufferToDataSet()` on the Upload SDK. [#2381](https://github.com/zowe/zowe-cli/pull/2381)
- BugFix: Corrected the `Upload.BufferToUssFile()` SDK function to properly tag uploaded files. [#2378](https://github.com/zowe/zowe-cli/pull/2378)

## `8.9.0`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { deleteFiles, getUniqueDatasetName, stripNewLines, wait, waitTime } from
import * as fs from "fs";
import { ITestEnvironment } from "../../../../../../__tests__/__src__/environment/ITestEnvironment";
import { runCliScript } from "../../../../../../__tests__/__packages__/cli-test-utils/src";
import { Readable } from "stream";

let REAL_SESSION: Session;
let testEnvironment: ITestEnvironment<ITestPropertiesSchema>;
Expand Down Expand Up @@ -309,6 +310,49 @@ describe("Upload Data Set", () => {
}
});

it("should upload a PDS file - bufferToDataSet()", async () => {
let error;
let uploadResponse;
let getResponse;
const data: Buffer = Buffer.from(testdata);

try {
uploadResponse = await Upload.bufferToDataSet(REAL_SESSION, data, dsname+"(TEST)");
getResponse = await Get.dataSet(REAL_SESSION, dsname+"(TEST)");
} catch (err) {
error = err;
Imperative.console.info("Error: " + inspect(error));
}

expect(error).toBeFalsy();

expect(uploadResponse.apiResponse).toMatchObject({"success": true, "from": "Buffer<>","to": dsname+"(TEST)"});
expect(Buffer.from(getResponse.toString().trim())).toEqual(data);
});

it("should upload a PDS file - streamToDataSet()", async () => {
let error;
let uploadResponse;
let getResponse;

const inputStream = new Readable();
inputStream.push(testdata);
inputStream.push(null);

try {
uploadResponse = await Upload.streamToDataSet(REAL_SESSION, inputStream, dsname+"(TEST)");
getResponse = await Get.dataSet(REAL_SESSION, dsname+"(TEST)");
} catch (err) {
error = err;
Imperative.console.info("Error: " + inspect(error));
}

expect(error).toBeFalsy();

expect(uploadResponse.apiResponse).toMatchObject({"success": true, "from": "Stream<>","to": dsname+"(TEST)"});
expect(getResponse.toString().trim()).toEqual(testdata);
});

it("should upload a file to a partitioned data set member using full path", async () => {
let error;
let response: IZosFilesResponse;
Expand Down Expand Up @@ -733,7 +777,7 @@ describe("Upload USS file", () => {
await deleteFiles(REAL_SESSION, ussname);
});

it("should upload a USS file", async () => {
it("should upload a USS file - bufferToUssFile()", async () => {
let error;
let uploadResponse;
let getResponse;
Expand All @@ -748,9 +792,33 @@ describe("Upload USS file", () => {
}

expect(error).toBeFalsy();

expect(uploadResponse.apiResponse).toMatchObject({"success": true, "from": "Buffer<>","to": ussname});
expect(getResponse).toEqual(Buffer.from(data.toString()));
});

it("should upload a USS file - streamToUssFile()", async () => {
let error;
let uploadResponse;
let getResponse;
const inputStream = new Readable();
inputStream.push(testdata);
inputStream.push(null);

try {
uploadResponse = await Upload.streamToUssFile(REAL_SESSION, ussname, inputStream);
getResponse = await Get.USSFile(REAL_SESSION, ussname);
} catch (err) {
error = err;
Imperative.console.info("Error: " + inspect(error));
}

expect(error).toBeFalsy();

expect(uploadResponse.apiResponse).toMatchObject({"success": true, "from": "Stream<>","to": ussname});
expect(getResponse).toEqual(Buffer.from(testdata));
});

it("should upload a USS file in binary mode", async () => {
let error;
let uploadResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { IUploadOptions } from "../../../../src/methods/upload/doc/IUploadOption
import { Upload } from "../../../../src/methods/upload/Upload";
import { List } from "../../../../src/methods/list/List";
import { Utilities } from "../../../../src/methods/utilities/Utilities";

import { inspect } from "util";
import { ZosFilesUtils } from "../../../../src/utils/ZosFilesUtils";
import { stripNewLines } from "../../../../../../__tests__/__src__/TestUtils";
import { Create } from "../../../../src/methods/create";
Expand Down Expand Up @@ -379,7 +379,7 @@ describe("z/OS Files - Upload", () => {
expect(error).toBeDefined();
expect(error).toBe(testError);
});
it("should return with proper response when upload buffer to a data set", async () => {
it("should return with proper response when upload buffer to a data set - buffer less than 10 chars", async () => {
const buffer: Buffer = Buffer.from("testing");
const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_DS_FILES, dsName);
const reqHeaders = [ZosmfHeaders.X_IBM_TEXT, ZosmfHeaders.ACCEPT_ENCODING];
Expand All @@ -392,6 +392,27 @@ describe("z/OS Files - Upload", () => {

expect(error).toBeUndefined();
expect(response).toBeDefined();
expect(response.apiResponse).toMatchObject({"from": "<Buffer 74 65 73 74 69 6e 67>", "success": true, "to": dsName});

expect(zosmfPutFullSpy).toHaveBeenCalledTimes(1);
expect(zosmfPutFullSpy).toHaveBeenCalledWith(dummySession, {resource: endpoint,
reqHeaders,
writeData: buffer});
});
it("should return with proper response when upload buffer to a data set - buffer more than 10 chars", async () => {
const buffer: Buffer = Buffer.from("bufferLargerThan10Chars");
const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_DS_FILES, dsName);
const reqHeaders = [ZosmfHeaders.X_IBM_TEXT, ZosmfHeaders.ACCEPT_ENCODING];

try {
response = await Upload.bufferToDataSet(dummySession, buffer, dsName);
} catch (err) {
error = err;
}

expect(error).toBeUndefined();
expect(response).toBeDefined();
expect(response.apiResponse).toMatchObject({"from": "<Buffer 62 75 66 66 65 72 4c 61 72 67...>", "success": true, "to": dsName});

expect(zosmfPutFullSpy).toHaveBeenCalledTimes(1);
expect(zosmfPutFullSpy).toHaveBeenCalledWith(dummySession, {resource: endpoint,
Expand Down Expand Up @@ -748,6 +769,7 @@ describe("z/OS Files - Upload", () => {

expect(error).toBeUndefined();
expect(response).toBeDefined();
expect(response.apiResponse).toMatchObject({"from": "[Readable]", "success": true, "to": dsName});

expect(zosmfPutFullSpy).toHaveBeenCalledTimes(1);
expect(zosmfPutFullSpy).toHaveBeenCalledWith(dummySession, {resource: endpoint,
Expand Down Expand Up @@ -1755,6 +1777,7 @@ describe("z/OS Files - Upload", () => {

expect(error).toBeUndefined();
expect(USSresponse).toBeDefined();
expect(USSresponse.apiResponse).toMatchObject({"from": "<Buffer 74 65 73 74 69 6e 67 0a 74 65...>", "success": true, "to": dsName});

const normalizedData = ZosFilesUtils.normalizeNewline(data);
expect(data.length).not.toBe(normalizedData.length);
Expand Down Expand Up @@ -1830,6 +1853,7 @@ describe("z/OS Files - Upload", () => {

expect(error).toBeUndefined();
expect(USSresponse).toBeDefined();
expect(USSresponse.apiResponse).toMatchObject({"from": "[Readable]", "success": true, "to": dsName});
expect(USSresponse.success).toBeTruthy();

expect(zosmfExpectFullSpy).toHaveBeenCalledTimes(1);
Expand Down
2 changes: 1 addition & 1 deletion packages/zosfiles/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@zowe/zos-files-for-zowe-sdk",
"version": "8.9.0",
"version": "8.9.1",
"description": "Zowe SDK to interact with files and data sets on z/OS",
"author": "Zowe",
"license": "EPL-2.0",
Expand Down
28 changes: 23 additions & 5 deletions packages/zosfiles/src/methods/upload/Upload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import { Utilities, Tag } from "../utilities";
import { Readable } from "stream";
import { CLIENT_PROPERTY } from "../../doc/types/ZosmfRestClientProperties";
import { TransferMode } from "../../utils/ZosFilesAttributes";

import { inspect } from "util";

export class Upload {

Expand Down Expand Up @@ -183,8 +183,13 @@ export class Upload {
}
const uploadRequest: IRestClientResponse = await ZosmfRestClient.putExpectFullResponse(session, requestOptions);

const maxBufferPreviewSize = 10;
// By default, apiResponse is empty when uploading
const apiResponse: any = {};
const apiResponse: any = {
success: true,
from: fileBuffer.length > maxBufferPreviewSize ? inspect(fileBuffer.subarray(0, maxBufferPreviewSize)).slice(0, -1) + "...>" : inspect(fileBuffer),
to: dataSetName
};

// Return Etag in apiResponse, if requested
if (options.returnEtag) {
Expand Down Expand Up @@ -242,7 +247,11 @@ export class Upload {
const uploadRequest: IRestClientResponse = await ZosmfRestClient.putExpectFullResponse(session, requestOptions);

// By default, apiResponse is empty when uploading
const apiResponse: any = {};
const apiResponse: any = {
success: true,
from: inspect(fileStream, { showHidden: false, depth: -1}),
to: dataSetName
};

// Return Etag in apiResponse, if requested
if (options.returnEtag) {
Expand Down Expand Up @@ -480,8 +489,13 @@ export class Upload {
}
const uploadRequest: IRestClientResponse = await ZosmfRestClient.putExpectFullResponse(session, requestOptions);

const maxBufferPreviewSize = 10;
// By default, apiResponse is empty when uploading
const apiResponse: any = {};
const apiResponse: any = {
success: true,
from: fileBuffer.length > maxBufferPreviewSize ? inspect(fileBuffer.subarray(0, maxBufferPreviewSize)).slice(0, -1) + "...>" : inspect(fileBuffer),
to: origUssname
};

// Return Etag in apiResponse, if requested
if (options.returnEtag) {
Expand Down Expand Up @@ -541,7 +555,11 @@ export class Upload {
}

// By default, apiResponse is empty when uploading
const apiResponse: any = {};
const apiResponse: any = {
success: true,
from: inspect(uploadStream, { showHidden: false, depth: -1}),
to: origUssname
};

// Return Etag in apiResponse, if requested
if (options.returnEtag) {
Expand Down
4 changes: 2 additions & 2 deletions packages/zosjobs/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@zowe/zos-jobs-for-zowe-sdk",
"version": "8.9.0",
"version": "8.9.1",
"description": "Zowe SDK to interact with jobs on z/OS",
"author": "Zowe",
"license": "EPL-2.0",
Expand Down Expand Up @@ -46,7 +46,7 @@
"prepack": "node ../../scripts/prepareLicenses.js"
},
"dependencies": {
"@zowe/zos-files-for-zowe-sdk": "8.9.0"
"@zowe/zos-files-for-zowe-sdk": "8.9.1"
},
"devDependencies": {
"@zowe/cli-test-utils": "8.8.3",
Expand Down

0 comments on commit a0d8426

Please sign in to comment.