fix: correctly resolve inherited properties before request runs (#5418)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Nivedin 2025-09-30 17:43:13 +05:30 committed by GitHub
parent 5039a14985
commit 711d249a4d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 53 deletions

View file

@ -82,7 +82,6 @@
@click="emit('add-folder')"
/>
<HoppButtonSecondary
v-if="!isEmpty"
v-tippy="{ theme: 'tooltip' }"
:icon="IconPlaySquare"
:title="t('collection_runner.run_collection')"
@ -145,7 +144,6 @@
"
/>
<HoppSmartItem
v-if="!isEmpty"
ref="runCollectionAction"
:icon="IconPlaySquare"
:label="t('collection_runner.run_collection')"
@ -372,28 +370,6 @@ const ordering = ref(false)
const orderingLastItem = ref(false)
const dropItemID = ref("")
/**
* Determines if the collection/folder is empty.
* A collection/folder is considered empty if it has no requests and no child folders.
*/
const isEmpty = computed(() => {
if (!props.data) return true
if (props.collectionsType === "my-collections") {
const collection = props.data as HoppCollection
const req = collection.requests.length
const fol = collection.folders.length
return req === 0 && fol === 0
}
const teamCollection = props.data as TeamCollection
const req = teamCollection.requests?.length ?? 0
const child = teamCollection.children?.length ?? 0
return req === 0 && child === 0
})
/**
* Determines if the collection/folder is sortable.
* A collection/folder is sortable if it has more than one request or more than one child folder.

View file

@ -397,8 +397,30 @@ export function runRESTRequest$(
const cookieJarEntries = getCookieJarEntries()
const { request, inheritedProperties } = tab.value.document
const requestAuth =
request.auth.authType === "inherit" && request.auth.authActive
? inheritedProperties?.auth.inheritedAuth
: request.auth
const inheritedHeaders = inheritedProperties?.headers
?.filter((header) => header.inheritedHeader)
.map((header) => header.inheritedHeader!)
const requestHeaders: HoppRESTHeaders = [
...(inheritedHeaders ?? []),
...request.headers,
]
const resolvedRequest = {
...tab.value.document.request,
auth: requestAuth ?? { authType: "none", authActive: false },
headers: requestHeaders,
}
const res = delegatePreRequestScriptRunner(
tab.value.document.request,
resolvedRequest,
getCombinedEnvVariables(),
cookieJarEntries
).then(async (preRequestScriptResult) => {
@ -409,31 +431,6 @@ export function runRESTRequest$(
return E.left("script_fail" as const)
}
const requestAuth =
tab.value.document.request.auth.authType === "inherit" &&
tab.value.document.request.auth.authActive
? tab.value.document.inheritedProperties?.auth.inheritedAuth
: tab.value.document.request.auth
let requestHeaders
const inheritedHeaders =
tab.value.document.inheritedProperties?.headers.map((header) => {
if (header.inheritedHeader) {
return header.inheritedHeader
}
return []
})
if (inheritedHeaders) {
requestHeaders = [
...inheritedHeaders,
...tab.value.document.request.headers,
]
} else {
requestHeaders = [...tab.value.document.request.headers]
}
const finalRequestVariables =
tab.value.document.request.requestVariables.map(
(v: HoppRESTRequestVariable) => {
@ -460,9 +457,7 @@ export function runRESTRequest$(
}))
const finalRequest = {
...tab.value.document.request,
auth: requestAuth ?? { authType: "none", authActive: false },
headers: requestHeaders as HoppRESTHeaders,
...resolvedRequest,
...(preRequestScriptResult.right.updatedRequest ?? {}),
}