mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 05:51:15 +08:00
fix(google-meet): validate api page size
This commit is contained in:
@@ -500,6 +500,31 @@ describe("google-meet CLI", () => {
|
||||
}
|
||||
});
|
||||
|
||||
it.each(["0", "1.5", "9007199254740993"])(
|
||||
"rejects invalid Meet API page sizes: %s",
|
||||
async (pageSize) => {
|
||||
const fetchMock = vi.fn();
|
||||
vi.stubGlobal("fetch", fetchMock);
|
||||
|
||||
await expect(
|
||||
setupCli({}).parseAsync(
|
||||
[
|
||||
"googlemeet",
|
||||
"artifacts",
|
||||
"--access-token",
|
||||
"token",
|
||||
"--conference-record",
|
||||
"rec-1",
|
||||
"--page-size",
|
||||
pageSize,
|
||||
],
|
||||
{ from: "user" },
|
||||
),
|
||||
).rejects.toThrow("page-size must be a positive integer");
|
||||
expect(fetchMock).not.toHaveBeenCalled();
|
||||
},
|
||||
);
|
||||
|
||||
it("prints markdown artifact and attendance output", async () => {
|
||||
stubMeetArtifactsApi();
|
||||
const tempDir = mkdtempSync(path.join(tmpdir(), "openclaw-google-meet-artifacts-"));
|
||||
|
||||
@@ -5,6 +5,7 @@ import { format } from "node:util";
|
||||
import type { Command } from "commander";
|
||||
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
||||
import { callGatewayFromCli } from "openclaw/plugin-sdk/gateway-runtime";
|
||||
import { parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
|
||||
import {
|
||||
buildGoogleMeetCalendarDayWindow,
|
||||
findGoogleMeetCalendarEvent,
|
||||
@@ -273,6 +274,17 @@ function parsePositiveNumber(value: string | undefined, label: string): number |
|
||||
return parsed;
|
||||
}
|
||||
|
||||
function parsePositiveIntegerOption(value: string | undefined, label: string): number | undefined {
|
||||
if (value === undefined) {
|
||||
return undefined;
|
||||
}
|
||||
const parsed = parseStrictPositiveInteger(value);
|
||||
if (parsed === undefined) {
|
||||
throw new Error(`${label} must be a positive integer`);
|
||||
}
|
||||
return parsed;
|
||||
}
|
||||
|
||||
async function callGoogleMeetGateway(params: {
|
||||
callGateway: typeof callGatewayFromCli;
|
||||
method: GoogleMeetGatewayMethod;
|
||||
@@ -746,7 +758,7 @@ function resolveArtifactTokenOptions(
|
||||
refreshToken: options.refreshToken?.trim() || config.oauth.refreshToken,
|
||||
accessToken: options.accessToken?.trim() || config.oauth.accessToken,
|
||||
expiresAt: parseOptionalNumber(options.expiresAt) ?? config.oauth.expiresAt,
|
||||
pageSize: parseOptionalNumber(options.pageSize),
|
||||
pageSize: parsePositiveIntegerOption(options.pageSize, "page-size"),
|
||||
includeTranscriptEntries: options.transcriptEntries !== false,
|
||||
allConferenceRecords: Boolean(options.allConferenceRecords),
|
||||
includeDocumentBodies: Boolean(options.includeDocBodies),
|
||||
|
||||
Reference in New Issue
Block a user