fix: show file chip for the selected file in binary body (#4562)
Co-authored-by: jamesgeorge007 <25279263+jamesgeorge007@users.noreply.github.com>
This commit is contained in:
@@ -178,6 +178,7 @@ export const TRANSFORMED_DEEPLY_NESTED_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: HoppC
|
|||||||
key: "X-Test-Header",
|
key: "X-Test-Header",
|
||||||
value: "Overriden at FolderB",
|
value: "Overriden at FolderB",
|
||||||
active: true,
|
active: true,
|
||||||
|
description: "",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -475,8 +476,707 @@ export const WORKSPACE_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: Worksp
|
|||||||
collectionID: "clx1f86hv000010f8szcfya0t",
|
collectionID: "clx1f86hv000010f8szcfya0t",
|
||||||
teamID: "clws3hg58000011o8h07glsb1",
|
teamID: "clws3hg58000011o8h07glsb1",
|
||||||
title: "root-collection-request",
|
title: "root-collection-request",
|
||||||
request:
|
request: `{"v":"${RESTReqSchemaVersion}","auth":{"authType":"inherit","authActive":true},"body":{"body":null,"contentType":null},"name":"root-collection-request","method":"GET","params":[],"headers":[],"endpoint":"https://httpbin.org/get","testScript":"// Check status code is 200\\npw.test(\\"Status code is 200\\", ()=> {\\n pw.expect(pw.response.status).toBe(200);\\n});\\n\\npw.test(\\"Successfully inherits authorization/header set at the parent collection level\\", () => {\\n pw.expect(pw.response.body.headers[\\"Authorization\\"]).toBe(\\"Basic dGVzdHVzZXI6dGVzdHBhc3M=\\")\\n \\n pw.expect(pw.response.body.headers[\\"Custom-Header\\"]).toBe(\\"Custom header value set at the root collection\\")\\n pw.expect(pw.response.body.headers[\\"Inherited-Header\\"]).toBe(\\"Inherited header at all levels\\")\\n})","preRequestScript":"","requestVariables":[],"responses":{}}`,
|
||||||
'{"v":"4","auth":{"authType":"inherit","authActive":true},"body":{"body":null,"contentType":null},"name":"root-collection-request","method":"GET","params":[],"headers":[],"endpoint":"https://httpbin.org/get","testScript":"// Check status code is 200\\npw.test(\\"Status code is 200\\", ()=> {\\n pw.expect(pw.response.status).toBe(200);\\n});\\n\\npw.test(\\"Successfully inherits authorization/header set at the parent collection level\\", () => {\\n pw.expect(pw.response.body.headers[\\"Authorization\\"]).toBe(\\"Basic dGVzdHVzZXI6dGVzdHBhc3M=\\")\\n \\n pw.expect(pw.response.body.headers[\\"Custom-Header\\"]).toBe(\\"Custom header value set at the root collection\\")\\n pw.expect(pw.response.body.headers[\\"Inherited-Header\\"]).toBe(\\"Inherited header at all levels\\")\\n})","preRequestScript":"","requestVariables":[]}',
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: HoppCollection[] =
|
||||||
|
[
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1f86hv000010f8szcfya0t",
|
||||||
|
name: "Multiple child collections with authorization & headers set at each level",
|
||||||
|
folders: [
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1fjgah000110f8a5bs68gd",
|
||||||
|
name: "folder-1",
|
||||||
|
folders: [
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1fjwmm000410f8l1gkkr1a",
|
||||||
|
name: "folder-11",
|
||||||
|
folders: [],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "inherit",
|
||||||
|
password: "testpass",
|
||||||
|
username: "testuser",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-11-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits authorization/header set at the parent collection level", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe("Basic dGVzdHVzZXI6dGVzdHBhc3M=")\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-1")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
authType: "inherit",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Set at folder-11",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1fjyxm000510f8pv90dt43",
|
||||||
|
name: "folder-12",
|
||||||
|
folders: [],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "none",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-12-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value:
|
||||||
|
"Custom header value overriden at folder-12-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Overriden at folder-12-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits/overrides authorization/header set at the parent collection level", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe(undefined)\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-12-request")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n pw.expect(pw.response.body.headers["Key"]).toBe("Overriden at folder-12-request")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
authType: "none",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value overriden at folder-12",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Set at folder-12",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1fk1cv000610f88kc3aupy",
|
||||||
|
name: "folder-13",
|
||||||
|
folders: [],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
key: "api-key",
|
||||||
|
addTo: "HEADERS",
|
||||||
|
value: "api-key-value",
|
||||||
|
authType: "basic",
|
||||||
|
password: "testpass",
|
||||||
|
username: "testuser",
|
||||||
|
authActive: true,
|
||||||
|
grantTypeInfo: {
|
||||||
|
token: "",
|
||||||
|
isPKCE: true,
|
||||||
|
clientID: "sfasfa",
|
||||||
|
password: "",
|
||||||
|
username: "",
|
||||||
|
grantType: "AUTHORIZATION_CODE",
|
||||||
|
authEndpoint: "asfafs",
|
||||||
|
clientSecret: "sfasfasf",
|
||||||
|
tokenEndpoint: "asfa",
|
||||||
|
codeVerifierMethod: "S256",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-13-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header-Request-Level",
|
||||||
|
value:
|
||||||
|
"New custom header added at the folder-13-request level",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Overriden at folder-13-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits/overrides authorization/header set at the parent collection level with new header addition", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe("Basic dGVzdHVzZXI6dGVzdHBhc3M=")\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-13")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n pw.expect(pw.response.body.headers["Key"]).toBe("Overriden at folder-13-request")\n pw.expect(pw.response.body.headers["Custom-Header-Request-Level"]).toBe("New custom header added at the folder-13-request level")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
token: "test-token",
|
||||||
|
authType: "bearer",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value overriden at folder-13",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Set at folder-13",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "inherit",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-1-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits authorization/header set at the parent collection level", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe("Basic dGVzdHVzZXI6dGVzdHBhc3M=")\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-1")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
authType: "inherit",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value overriden at folder-1",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1fjk9o000210f8j0573pls",
|
||||||
|
name: "folder-2",
|
||||||
|
folders: [
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1fk516000710f87sfpw6bo",
|
||||||
|
name: "folder-21",
|
||||||
|
folders: [],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "inherit",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-21-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits authorization/header set at the parent collection level", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe(undefined)\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-2")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
authType: "inherit",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Set at folder-21",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1fk72t000810f8gfwkpi5y",
|
||||||
|
name: "folder-22",
|
||||||
|
folders: [],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "none",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-22-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value:
|
||||||
|
"Custom header value overriden at folder-22-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Overriden at folder-22-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits/overrides authorization/header set at the parent collection level", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe(undefined)\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-22-request")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n pw.expect(pw.response.body.headers["Key"]).toBe("Overriden at folder-22-request")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
authType: "none",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value overriden at folder-22",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Set at folder-22",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1fk95g000910f8bunhaoo8",
|
||||||
|
name: "folder-23",
|
||||||
|
folders: [],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "basic",
|
||||||
|
password: "testpass",
|
||||||
|
username: "testuser",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-23-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header-Request-Level",
|
||||||
|
value:
|
||||||
|
"New custom header added at the folder-23-request level",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Overriden at folder-23-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits/overrides authorization/header set at the parent collection level with new header addition", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe("Basic dGVzdHVzZXI6dGVzdHBhc3M=")\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-23")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n pw.expect(pw.response.body.headers["Key"]).toBe("Overriden at folder-23-request")\n pw.expect(pw.response.body.headers["Custom-Header-Request-Level"]).toBe("New custom header added at the folder-23-request level")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
token: "test-token",
|
||||||
|
authType: "bearer",
|
||||||
|
password: "testpass",
|
||||||
|
username: "testuser",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value overriden at folder-23",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Set at folder-23",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "none",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-2-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value overriden at folder-2-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits/overrides authorization/header set at the parent collection level", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe(undefined)\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-2-request")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
authType: "none",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value overriden at folder-2",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1fjmlq000310f86o4d3w2o",
|
||||||
|
name: "folder-3",
|
||||||
|
folders: [
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1iwq0p003e10f8u8zg0p85",
|
||||||
|
name: "folder-31",
|
||||||
|
folders: [],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "inherit",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-31-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits authorization/header set at the parent collection level", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe("Basic dGVzdHVzZXI6dGVzdHBhc3M=")\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-3")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
authType: "inherit",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Set at folder-31",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1izut7003m10f894ip59zg",
|
||||||
|
name: "folder-32",
|
||||||
|
folders: [],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "none",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-32-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value:
|
||||||
|
"Custom header value overriden at folder-32-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Overriden at folder-32-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits/overrides authorization/header set at the parent collection level", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe(undefined)\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-32-request")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n pw.expect(pw.response.body.headers["Key"]).toBe("Overriden at folder-32-request")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
authType: "none",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value overriden at folder-32",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Set at folder-32",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
v: 5,
|
||||||
|
id: "clx1j2ka9003q10f8cdbzpgpg",
|
||||||
|
name: "folder-33",
|
||||||
|
folders: [],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "basic",
|
||||||
|
password: "testpass",
|
||||||
|
username: "testuser",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-33-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header-Request-Level",
|
||||||
|
value:
|
||||||
|
"New custom header added at the folder-33-request level",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Overriden at folder-33-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits/overrides authorization/header set at the parent collection level with new header addition", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe("Basic dGVzdHVzZXI6dGVzdHBhc3M=")\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-33")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n pw.expect(pw.response.body.headers["Key"]).toBe("Overriden at folder-33-request")\n pw.expect(pw.response.body.headers["Custom-Header-Request-Level"]).toBe("New custom header added at the folder-33-request level")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
token: "test-token",
|
||||||
|
authType: "bearer",
|
||||||
|
password: "testpass",
|
||||||
|
username: "testuser",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value overriden at folder-33",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Set at folder-33",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: "4",
|
||||||
|
auth: {
|
||||||
|
authType: "basic",
|
||||||
|
password: "testpass",
|
||||||
|
username: "testuser",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "folder-3-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header-Request-Level",
|
||||||
|
value:
|
||||||
|
"New custom header added at the folder-3-request level",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "key",
|
||||||
|
value: "Set at folder-3-request",
|
||||||
|
active: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits/overrides authorization/header set at the parent collection level with new header addition", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe("Basic dGVzdHVzZXI6dGVzdHBhc3M=")\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value overriden at folder-3")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n pw.expect(pw.response.body.headers["Key"]).toBe("Set at folder-3-request")\n pw.expect(pw.response.body.headers["Custom-Header-Request-Level"]).toBe("New custom header added at the folder-3-request level")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
key: "testuser",
|
||||||
|
addTo: "HEADERS",
|
||||||
|
value: "testpass",
|
||||||
|
authType: "basic",
|
||||||
|
password: "testpass",
|
||||||
|
username: "testuser",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value overriden at folder-3",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
requests: [
|
||||||
|
{
|
||||||
|
v: RESTReqSchemaVersion,
|
||||||
|
auth: {
|
||||||
|
authType: "inherit",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
body: null,
|
||||||
|
contentType: null,
|
||||||
|
},
|
||||||
|
name: "root-collection-request",
|
||||||
|
method: "GET",
|
||||||
|
params: [],
|
||||||
|
headers: [],
|
||||||
|
endpoint: "https://httpbin.org/get",
|
||||||
|
testScript:
|
||||||
|
'// Check status code is 200\npw.test("Status code is 200", ()=> {\n pw.expect(pw.response.status).toBe(200);\n});\n\npw.test("Successfully inherits authorization/header set at the parent collection level", () => {\n pw.expect(pw.response.body.headers["Authorization"]).toBe("Basic dGVzdHVzZXI6dGVzdHBhc3M=")\n \n pw.expect(pw.response.body.headers["Custom-Header"]).toBe("Custom header value set at the root collection")\n pw.expect(pw.response.body.headers["Inherited-Header"]).toBe("Inherited header at all levels")\n})',
|
||||||
|
preRequestScript: "",
|
||||||
|
requestVariables: [],
|
||||||
|
responses: {},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
auth: {
|
||||||
|
authType: "basic",
|
||||||
|
password: "testpass",
|
||||||
|
username: "testuser",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
key: "Custom-Header",
|
||||||
|
value: "Custom header value set at the root collection",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "Inherited-Header",
|
||||||
|
value: "Inherited header at all levels",
|
||||||
|
active: true,
|
||||||
|
description: "",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -620,6 +1320,7 @@ export const TRANSFORMED_COLLECTIONS_WITHOUT_AUTH_HEADERS_AT_CERTAIN_LEVELS_MOCK
|
|||||||
key: "Custom-Header",
|
key: "Custom-Header",
|
||||||
value: "Set at folder-2",
|
value: "Set at folder-2",
|
||||||
active: true,
|
active: true,
|
||||||
|
description: "",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -650,6 +1351,7 @@ export const TRANSFORMED_COLLECTIONS_WITHOUT_AUTH_HEADERS_AT_CERTAIN_LEVELS_MOCK
|
|||||||
key: "Custom-Header",
|
key: "Custom-Header",
|
||||||
value: "Set at folder-4",
|
value: "Set at folder-4",
|
||||||
active: true,
|
active: true,
|
||||||
|
description: "",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
import { HoppCollection } from "@hoppscotch/data";
|
|
||||||
import { entityReference } from "verzod";
|
|
||||||
import { describe, expect, test } from "vitest";
|
import { describe, expect, test } from "vitest";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
transformWorkspaceCollections,
|
transformWorkspaceCollections,
|
||||||
@@ -11,36 +8,13 @@ import {
|
|||||||
TRANSFORMED_COLLECTIONS_WITHOUT_AUTH_HEADERS_AT_CERTAIN_LEVELS_MOCK,
|
TRANSFORMED_COLLECTIONS_WITHOUT_AUTH_HEADERS_AT_CERTAIN_LEVELS_MOCK,
|
||||||
TRANSFORMED_DEEPLY_NESTED_COLLECTIONS_WITH_AUTH_HEADERS_MOCK,
|
TRANSFORMED_DEEPLY_NESTED_COLLECTIONS_WITH_AUTH_HEADERS_MOCK,
|
||||||
TRANSFORMED_ENVIRONMENT_MOCK,
|
TRANSFORMED_ENVIRONMENT_MOCK,
|
||||||
|
TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK,
|
||||||
WORKSPACE_COLLECTIONS_WITHOUT_AUTH_HEADERS_AT_CERTAIN_LEVELS_MOCK,
|
WORKSPACE_COLLECTIONS_WITHOUT_AUTH_HEADERS_AT_CERTAIN_LEVELS_MOCK,
|
||||||
WORKSPACE_DEEPLY_NESTED_COLLECTIONS_WITH_AUTH_HEADERS_MOCK,
|
WORKSPACE_DEEPLY_NESTED_COLLECTIONS_WITH_AUTH_HEADERS_MOCK,
|
||||||
WORKSPACE_ENVIRONMENT_MOCK,
|
WORKSPACE_ENVIRONMENT_MOCK,
|
||||||
WORKSPACE_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK,
|
WORKSPACE_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK,
|
||||||
} from "./fixtures/workspace-access.mock";
|
} from "./fixtures/workspace-access.mock";
|
||||||
|
|
||||||
import TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK from "../e2e/fixtures/collections/multiple-child-collections-auth-headers-coll.json";
|
|
||||||
|
|
||||||
// Helper function to validate against `HoppCollection` schema and apply relevant migrations
|
|
||||||
const migrateCollections = (collections: unknown[]): HoppCollection[] => {
|
|
||||||
const collectionSchemaParsedResult = z
|
|
||||||
.array(entityReference(HoppCollection))
|
|
||||||
.safeParse(collections);
|
|
||||||
|
|
||||||
if (!collectionSchemaParsedResult.success) {
|
|
||||||
throw new Error(
|
|
||||||
`Incoming collections failed schema validation: ${JSON.stringify(collections, null, 2)}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return collectionSchemaParsedResult.data.map(
|
|
||||||
({ _ref_id, folders, ...rest }) => {
|
|
||||||
return {
|
|
||||||
...rest,
|
|
||||||
folders: migrateCollections(folders),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("workspace-access", () => {
|
describe("workspace-access", () => {
|
||||||
describe("transformWorkspaceCollection", () => {
|
describe("transformWorkspaceCollection", () => {
|
||||||
test("Successfully transforms collection data with deeply nested collections and authorization/headers set at each level to the `HoppCollection` format", () => {
|
test("Successfully transforms collection data with deeply nested collections and authorization/headers set at each level to the `HoppCollection` format", () => {
|
||||||
@@ -52,15 +26,11 @@ describe("workspace-access", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("Successfully transforms collection data with multiple child collections and authorization/headers set at each level to the `HoppCollection` format", () => {
|
test("Successfully transforms collection data with multiple child collections and authorization/headers set at each level to the `HoppCollection` format", () => {
|
||||||
const migratedCollections = migrateCollections([
|
|
||||||
TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK,
|
|
||||||
]);
|
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
transformWorkspaceCollections(
|
transformWorkspaceCollections(
|
||||||
WORKSPACE_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK
|
WORKSPACE_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK
|
||||||
)
|
)
|
||||||
).toEqual(migratedCollections);
|
).toEqual(TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Adds the default value for `auth` & `header` fields while transforming collections without authorization/headers set at certain levels", () => {
|
test("Adds the default value for `auth` & `header` fields while transforming collections without authorization/headers set at certain levels", () => {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Environment } from "@hoppscotch/data";
|
import { Environment, NonSecretEnvironment } from "@hoppscotch/data";
|
||||||
import { entityReference } from "verzod";
|
import { entityReference } from "verzod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
@@ -63,7 +63,27 @@ export async function parseEnvsData(options: TestCmdEnvironmentOptions) {
|
|||||||
envPairs.push({ key, value, secret: false });
|
envPairs.push({ key, value, secret: false });
|
||||||
}
|
}
|
||||||
} else if (HoppEnvExportObjectResult.type === "ok") {
|
} else if (HoppEnvExportObjectResult.type === "ok") {
|
||||||
envPairs.push(...HoppEnvExportObjectResult.value.variables);
|
// Original environment variables from the supplied export file
|
||||||
|
const originalEnvVariables = (contents as NonSecretEnvironment).variables;
|
||||||
|
|
||||||
|
// Above environment variables conforming to the latest schema
|
||||||
|
// `value` fields if specified will be omitted for secret environment variables
|
||||||
|
const migratedEnvVariables = HoppEnvExportObjectResult.value.variables;
|
||||||
|
|
||||||
|
// The values supplied for secret environment variables have to be considered in the CLI
|
||||||
|
// For each secret environment variable, include the value in case supplied
|
||||||
|
const resolvedEnvVariables = migratedEnvVariables.map((variable, idx) => {
|
||||||
|
if (variable.secret && originalEnvVariables[idx].value) {
|
||||||
|
return {
|
||||||
|
...variable,
|
||||||
|
value: originalEnvVariables[idx].value,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return variable;
|
||||||
|
});
|
||||||
|
|
||||||
|
envPairs.push(...resolvedEnvVariables);
|
||||||
}
|
}
|
||||||
|
|
||||||
return <HoppEnvs>{ global: [], selected: envPairs };
|
return <HoppEnvs>{ global: [], selected: envPairs };
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ import {
|
|||||||
Environment,
|
Environment,
|
||||||
EnvironmentSchemaVersion,
|
EnvironmentSchemaVersion,
|
||||||
HoppCollection,
|
HoppCollection,
|
||||||
|
HoppRESTAuth,
|
||||||
|
HoppRESTHeaders,
|
||||||
HoppRESTRequest,
|
HoppRESTRequest,
|
||||||
} from "@hoppscotch/data";
|
} from "@hoppscotch/data";
|
||||||
|
|
||||||
@@ -34,6 +36,7 @@ interface WorkspaceRequest {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms the incoming list of workspace requests by applying `JSON.parse` to the `request` field.
|
* Transforms the incoming list of workspace requests by applying `JSON.parse` to the `request` field.
|
||||||
|
* It includes the `v` field indicating the schema version, but migration is handled already at the `parseCollectionData()` helper function.
|
||||||
*
|
*
|
||||||
* @param {WorkspaceRequest[]} requests - An array of workspace request objects to be transformed.
|
* @param {WorkspaceRequest[]} requests - An array of workspace request objects to be transformed.
|
||||||
* @returns {HoppRESTRequest[]} The transformed array of requests conforming to the `HoppRESTRequest` type.
|
* @returns {HoppRESTRequest[]} The transformed array of requests conforming to the `HoppRESTRequest` type.
|
||||||
@@ -65,6 +68,8 @@ export const transformWorkspaceEnvironment = (
|
|||||||
return variable;
|
return variable;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// The response doesn't include a way to infer the schema version, so it's set to the latest version
|
||||||
|
// Any relevant migrations have to be accounted here
|
||||||
return {
|
return {
|
||||||
v: EnvironmentSchemaVersion,
|
v: EnvironmentSchemaVersion,
|
||||||
variables: transformedEnvVars,
|
variables: transformedEnvVars,
|
||||||
@@ -84,10 +89,19 @@ export const transformWorkspaceCollections = (
|
|||||||
return collections.map((collection) => {
|
return collections.map((collection) => {
|
||||||
const { id, title, data, requests, folders } = collection;
|
const { id, title, data, requests, folders } = collection;
|
||||||
|
|
||||||
const parsedData = data ? JSON.parse(data) : {};
|
const parsedData: { auth?: HoppRESTAuth; headers?: HoppRESTHeaders } = data
|
||||||
|
? JSON.parse(data)
|
||||||
|
: {};
|
||||||
|
|
||||||
const { auth = { authType: "inherit", authActive: true }, headers = [] } =
|
const { auth = { authType: "inherit", authActive: true }, headers = [] } =
|
||||||
parsedData;
|
parsedData;
|
||||||
|
|
||||||
|
const migratedHeaders = headers.map((header) =>
|
||||||
|
header.description ? header : { ...header, description: "" }
|
||||||
|
);
|
||||||
|
|
||||||
|
// The response doesn't include a way to infer the schema version, so it's set to the latest version
|
||||||
|
// Any relevant migrations have to be accounted here
|
||||||
return {
|
return {
|
||||||
v: CollectionSchemaVersion,
|
v: CollectionSchemaVersion,
|
||||||
id,
|
id,
|
||||||
@@ -95,7 +109,7 @@ export const transformWorkspaceCollections = (
|
|||||||
folders: transformWorkspaceCollections(folders),
|
folders: transformWorkspaceCollections(folders),
|
||||||
requests: transformWorkspaceRequests(requests),
|
requests: transformWorkspaceRequests(requests),
|
||||||
auth,
|
auth,
|
||||||
headers,
|
headers: migratedHeaders,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
"url": "0.11.4",
|
"url": "0.11.4",
|
||||||
"util": "0.12.5",
|
"util": "0.12.5",
|
||||||
"uuid": "10.0.0",
|
"uuid": "10.0.0",
|
||||||
"verzod": "0.2.2",
|
"verzod": "0.2.3",
|
||||||
"vue": "3.5.12",
|
"vue": "3.5.12",
|
||||||
"vue-i18n": "10.0.4",
|
"vue-i18n": "10.0.4",
|
||||||
"vue-pdf-embed": "2.1.0",
|
"vue-pdf-embed": "2.1.0",
|
||||||
|
|||||||
@@ -56,7 +56,11 @@ const handleFileChange = (e: Event) => {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<span>
|
<div class="flex items-center px-4 py-2">
|
||||||
|
<HoppSmartFileChip v-if="props.modelValue.body">{{
|
||||||
|
props.modelValue.body.name
|
||||||
|
}}</HoppSmartFileChip>
|
||||||
|
|
||||||
<label :for="`attachment-binary-body`" class="p-0">
|
<label :for="`attachment-binary-body`" class="p-0">
|
||||||
<input
|
<input
|
||||||
:id="`attachment-binary-body`"
|
:id="`attachment-binary-body`"
|
||||||
@@ -66,5 +70,5 @@ const handleFileChange = (e: Event) => {
|
|||||||
@change="handleFileChange"
|
@change="handleFileChange"
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
</span>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ export class InterceptorsInspectorService extends Service implements Inspector {
|
|||||||
req: Readonly<Ref<HoppRESTRequest | HoppRESTResponseOriginalRequest>>
|
req: Readonly<Ref<HoppRESTRequest | HoppRESTResponseOriginalRequest>>
|
||||||
) {
|
) {
|
||||||
return computed((): InspectorResult[] => {
|
return computed((): InspectorResult[] => {
|
||||||
|
if (!req.value) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
|
||||||
const isBinaryBody =
|
const isBinaryBody =
|
||||||
req.value.body.contentType === "application/octet-stream"
|
req.value.body.contentType === "application/octet-stream"
|
||||||
|
|
||||||
|
|||||||
@@ -27,25 +27,31 @@ export const REST_COLLECTIONS_MOCK: HoppCollection[] = [
|
|||||||
{
|
{
|
||||||
v: 5,
|
v: 5,
|
||||||
name: "Echo",
|
name: "Echo",
|
||||||
folders: [],
|
|
||||||
requests: [
|
requests: [
|
||||||
{
|
{
|
||||||
v: RESTReqSchemaVersion,
|
v: RESTReqSchemaVersion,
|
||||||
endpoint: "https://echo.hoppscotch.io",
|
|
||||||
name: "Echo test",
|
name: "Echo test",
|
||||||
|
method: "GET",
|
||||||
|
endpoint: "https://echo.hoppscotch.io",
|
||||||
params: [],
|
params: [],
|
||||||
headers: [],
|
headers: [],
|
||||||
method: "GET",
|
|
||||||
auth: { authType: "none", authActive: true },
|
|
||||||
preRequestScript: "",
|
preRequestScript: "",
|
||||||
testScript: "",
|
testScript: "",
|
||||||
body: { contentType: null, body: null },
|
auth: {
|
||||||
|
authType: "none",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
contentType: null,
|
||||||
|
body: null,
|
||||||
|
},
|
||||||
requestVariables: [],
|
requestVariables: [],
|
||||||
responses: {},
|
responses: {},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
auth: { authType: "none", authActive: true },
|
auth: { authType: "none", authActive: true },
|
||||||
headers: [],
|
headers: [],
|
||||||
|
folders: [],
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -53,20 +59,23 @@ export const GQL_COLLECTIONS_MOCK: HoppCollection[] = [
|
|||||||
{
|
{
|
||||||
v: 5,
|
v: 5,
|
||||||
name: "Echo",
|
name: "Echo",
|
||||||
folders: [],
|
|
||||||
requests: [
|
requests: [
|
||||||
{
|
{
|
||||||
v: 7,
|
v: 7,
|
||||||
name: "Echo test",
|
name: "Echo test",
|
||||||
url: "https://echo.hoppscotch.io/graphql",
|
url: "https://echo.hoppscotch.io/graphql",
|
||||||
headers: [],
|
headers: [],
|
||||||
variables: '{\n "id": "1"\n}',
|
|
||||||
query: "query Request { url }",
|
query: "query Request { url }",
|
||||||
auth: { authType: "none", authActive: true },
|
variables: '{\n "id": "1"\n}',
|
||||||
|
auth: {
|
||||||
|
authType: "none",
|
||||||
|
authActive: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
auth: { authType: "none", authActive: true },
|
auth: { authType: "none", authActive: true },
|
||||||
headers: [],
|
headers: [],
|
||||||
|
folders: [],
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"parser-ts": "0.7.0",
|
"parser-ts": "0.7.0",
|
||||||
"uuid": "10.0.0",
|
"uuid": "10.0.0",
|
||||||
"verzod": "0.2.2",
|
"verzod": "0.2.3",
|
||||||
"zod": "3.23.8"
|
"zod": "3.23.8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
"tauri": "link:@tauri-apps/api/tauri",
|
"tauri": "link:@tauri-apps/api/tauri",
|
||||||
"tauri-plugin-store-api": "0.0.0",
|
"tauri-plugin-store-api": "0.0.0",
|
||||||
"util": "0.12.5",
|
"util": "0.12.5",
|
||||||
"verzod": "0.2.2",
|
"verzod": "0.2.3",
|
||||||
"vue": "3.3.9",
|
"vue": "3.3.9",
|
||||||
"workbox-window": "6.6.0",
|
"workbox-window": "6.6.0",
|
||||||
"zod": "3.22.4"
|
"zod": "3.22.4"
|
||||||
|
|||||||
24
pnpm-lock.yaml
generated
24
pnpm-lock.yaml
generated
@@ -667,8 +667,8 @@ importers:
|
|||||||
specifier: 10.0.0
|
specifier: 10.0.0
|
||||||
version: 10.0.0
|
version: 10.0.0
|
||||||
verzod:
|
verzod:
|
||||||
specifier: 0.2.2
|
specifier: 0.2.3
|
||||||
version: 0.2.2(zod@3.23.8)
|
version: 0.2.3(zod@3.23.8)
|
||||||
vue:
|
vue:
|
||||||
specifier: 3.5.12
|
specifier: 3.5.12
|
||||||
version: 3.5.12(typescript@5.3.3)
|
version: 3.5.12(typescript@5.3.3)
|
||||||
@@ -908,8 +908,8 @@ importers:
|
|||||||
specifier: 10.0.0
|
specifier: 10.0.0
|
||||||
version: 10.0.0
|
version: 10.0.0
|
||||||
verzod:
|
verzod:
|
||||||
specifier: 0.2.2
|
specifier: 0.2.3
|
||||||
version: 0.2.2(zod@3.23.8)
|
version: 0.2.3(zod@3.23.8)
|
||||||
zod:
|
zod:
|
||||||
specifier: 3.23.8
|
specifier: 3.23.8
|
||||||
version: 3.23.8
|
version: 3.23.8
|
||||||
@@ -1066,8 +1066,8 @@ importers:
|
|||||||
specifier: 0.12.5
|
specifier: 0.12.5
|
||||||
version: 0.12.5
|
version: 0.12.5
|
||||||
verzod:
|
verzod:
|
||||||
specifier: 0.2.2
|
specifier: 0.2.3
|
||||||
version: 0.2.2(zod@3.22.4)
|
version: 0.2.3(zod@3.22.4)
|
||||||
vue:
|
vue:
|
||||||
specifier: 3.5.12
|
specifier: 3.5.12
|
||||||
version: 3.5.12(typescript@4.9.5)
|
version: 3.5.12(typescript@4.9.5)
|
||||||
@@ -11824,12 +11824,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
|
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
verzod@0.2.2:
|
|
||||||
resolution: {integrity: sha512-TnM0O2SUcXuY63qQ+W+W4/5bDaIhyV9ZDWwL0ztDOawX7q7ar+jHNdYKUR43rf8ku23p2ROgrfoKABjl2IiiZQ==}
|
|
||||||
engines: {node: '>=16'}
|
|
||||||
peerDependencies:
|
|
||||||
zod: ^3.22.0
|
|
||||||
|
|
||||||
verzod@0.2.3:
|
verzod@0.2.3:
|
||||||
resolution: {integrity: sha512-fARgs0c/TNNtbo83/5LjriJEb3QMwBN8Ju2+BcVdiI7Y2NOa5Yhq+CrQ8UH43h0BRXcgb2JQABjkgrRCWybEtQ==}
|
resolution: {integrity: sha512-fARgs0c/TNNtbo83/5LjriJEb3QMwBN8Ju2+BcVdiI7Y2NOa5Yhq+CrQ8UH43h0BRXcgb2JQABjkgrRCWybEtQ==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
@@ -25942,14 +25936,10 @@ snapshots:
|
|||||||
|
|
||||||
vary@1.1.2: {}
|
vary@1.1.2: {}
|
||||||
|
|
||||||
verzod@0.2.2(zod@3.22.4):
|
verzod@0.2.3(zod@3.22.4):
|
||||||
dependencies:
|
dependencies:
|
||||||
zod: 3.22.4
|
zod: 3.22.4
|
||||||
|
|
||||||
verzod@0.2.2(zod@3.23.8):
|
|
||||||
dependencies:
|
|
||||||
zod: 3.23.8
|
|
||||||
|
|
||||||
verzod@0.2.3(zod@3.23.8):
|
verzod@0.2.3(zod@3.23.8):
|
||||||
dependencies:
|
dependencies:
|
||||||
zod: 3.23.8
|
zod: 3.23.8
|
||||||
|
|||||||
Reference in New Issue
Block a user