mirror of
https://github.com/fosrl/pangolin.git
synced 2026-09-22 02:28:26 +02:00
Merge pull request #3510 from shubhamsinnh/codex/fix-integration-site-resource
Fix integration API site resource lookup
This commit is contained in:
@@ -0,0 +1,58 @@
|
|||||||
|
import { assertEquals } from "@test/assert";
|
||||||
|
import { getSiteResourceParamsSchema } from "./getSiteResource";
|
||||||
|
|
||||||
|
function testSiteResourceIdOnlyParams() {
|
||||||
|
const result = getSiteResourceParamsSchema.safeParse({
|
||||||
|
siteResourceId: "42"
|
||||||
|
});
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
result.success,
|
||||||
|
true,
|
||||||
|
"siteResourceId-only integration routes should pass validation"
|
||||||
|
);
|
||||||
|
|
||||||
|
if (result.success) {
|
||||||
|
assertEquals(
|
||||||
|
result.data.siteResourceId,
|
||||||
|
42,
|
||||||
|
"siteResourceId should be parsed as a number"
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
result.data.orgId,
|
||||||
|
undefined,
|
||||||
|
"orgId should remain optional"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function testOrgScopedParamsRemainSupported() {
|
||||||
|
const result = getSiteResourceParamsSchema.safeParse({
|
||||||
|
siteResourceId: "42",
|
||||||
|
orgId: "org-id"
|
||||||
|
});
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
result.success,
|
||||||
|
true,
|
||||||
|
"org-scoped routes should continue to pass validation"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testInvalidSiteResourceId() {
|
||||||
|
const result = getSiteResourceParamsSchema.safeParse({
|
||||||
|
siteResourceId: "not-a-number"
|
||||||
|
});
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
result.success,
|
||||||
|
false,
|
||||||
|
"non-numeric siteResourceIds should fail validation"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
testSiteResourceIdOnlyParams();
|
||||||
|
testOrgScopedParamsRemainSupported();
|
||||||
|
testInvalidSiteResourceId();
|
||||||
|
|
||||||
|
console.log("All getSiteResource parameter validation tests passed.");
|
||||||
@@ -10,7 +10,7 @@ import { fromError } from "zod-validation-error";
|
|||||||
import logger from "@server/logger";
|
import logger from "@server/logger";
|
||||||
import { OpenAPITags, registry } from "@server/openApi";
|
import { OpenAPITags, registry } from "@server/openApi";
|
||||||
|
|
||||||
const getSiteResourceParamsSchema = z.strictObject({
|
export const getSiteResourceParamsSchema = z.strictObject({
|
||||||
siteResourceId: z
|
siteResourceId: z
|
||||||
.string()
|
.string()
|
||||||
.optional()
|
.optional()
|
||||||
@@ -22,15 +22,17 @@ const getSiteResourceParamsSchema = z.strictObject({
|
|||||||
});
|
});
|
||||||
|
|
||||||
async function query(siteResourceId?: number, niceId?: string, orgId?: string) {
|
async function query(siteResourceId?: number, niceId?: string, orgId?: string) {
|
||||||
if (siteResourceId && orgId) {
|
if (siteResourceId) {
|
||||||
const [siteResource] = await db
|
const [siteResource] = await db
|
||||||
.select()
|
.select()
|
||||||
.from(siteResources)
|
.from(siteResources)
|
||||||
.where(
|
.where(
|
||||||
and(
|
orgId
|
||||||
eq(siteResources.siteResourceId, siteResourceId),
|
? and(
|
||||||
eq(siteResources.orgId, orgId)
|
eq(siteResources.siteResourceId, siteResourceId),
|
||||||
)
|
eq(siteResources.orgId, orgId)
|
||||||
|
)
|
||||||
|
: eq(siteResources.siteResourceId, siteResourceId)
|
||||||
)
|
)
|
||||||
.limit(1);
|
.limit(1);
|
||||||
return siteResource;
|
return siteResource;
|
||||||
|
|||||||
Reference in New Issue
Block a user