Skip to content

Commit 42ba14d

Browse files
TaraGargsdnts
authored andcommitted
improve(wrangler): bounds checking for when setting queue delivery delay
1 parent ac4f30b commit 42ba14d

File tree

4 files changed

+41
-6
lines changed

4 files changed

+41
-6
lines changed

.changeset/sharp-numbers-search.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
Check bounds when overriding delivery delay when creating Queues

packages/wrangler/src/__tests__/queues.test.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,17 @@ describe("wrangler", () => {
328328

329329
expect(requests.count).toEqual(0);
330330
});
331+
332+
it("should show an error when invalid delivery delay is set", async () => {
333+
const requests = mockCreateRequest("testQueue", { delivery_delay: 10 });
334+
await expect(
335+
runWrangler("queues create testQueue --delivery-delay-secs=99999")
336+
).rejects.toThrowErrorMatchingInlineSnapshot(
337+
`[Error: Invalid --delivery-delay-secs value: 99999. Must be between 0 and 42300]`
338+
);
339+
340+
expect(requests.count).toEqual(0);
341+
});
331342
});
332343

333344
describe("delete", () => {
@@ -714,12 +725,12 @@ describe("wrangler", () => {
714725
"Adding consumer to queue testQueue.
715726
Queues is not currently enabled on this account. Go to https://dash.cloudflare.com/some-account-id/workers/queues to enable it.
716727
717-
[31mX [41;31m[[41;97mERROR[41;31m][0m [1mA request to the Cloudflare API (/accounts/some-account-id/queues/testQueue/consumers) failed.[0m
728+
[31mX [41;31m[[41;97mERROR[41;31m][0m [1mA request to the Cloudflare API (/accounts/some-account-id/queues/testQueue/consumers) failed.[0m
718729
719730
workers.api.error.unauthorized [code: 10023]
720731
721732
If you think this is a bug, please open an issue at:
722-
[4mhttps://github.com/cloudflare/workers-sdk/issues/new/choose[0m
733+
[4mhttps://github.com/cloudflare/workers-sdk/issues/new/choose[0m
723734
724735
"
725736
`);

packages/wrangler/src/queues/cli/commands/create.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ import { CommandLineArgsError } from "../../../errors";
44
import { logger } from "../../../logger";
55
import { getValidBindingName } from "../../../utils/getValidBindingName";
66
import { createQueue } from "../../client";
7+
import {
8+
MAX_DELIVERY_DELAY_SECS,
9+
MIN_DELIVERY_DELAY_SECS,
10+
} from "../../constants";
711
import { handleFetchError } from "../../utils";
812
import type {
913
CommonYargsArgv,
@@ -22,7 +26,7 @@ export function options(yargs: CommonYargsArgv) {
2226
"delivery-delay-secs": {
2327
type: "number",
2428
describe:
25-
"How long a published message should be delayed for, in seconds. Must be a positive integer",
29+
"How long a published message should be delayed for, in seconds. Must be between 0 and 42300",
2630
},
2731
});
2832
}
@@ -40,10 +44,22 @@ function createBody(
4044
);
4145
}
4246

47+
body.settings = {};
48+
4349
if (args.deliveryDelaySecs != undefined) {
44-
body.settings = {
45-
delivery_delay: args.deliveryDelaySecs,
46-
};
50+
if (
51+
args.deliveryDelaySecs < MIN_DELIVERY_DELAY_SECS ||
52+
args.deliveryDelaySecs > MAX_DELIVERY_DELAY_SECS
53+
) {
54+
throw new CommandLineArgsError(
55+
`Invalid --delivery-delay-secs value: ${args.deliveryDelaySecs}. Must be between ${MIN_DELIVERY_DELAY_SECS} and ${MAX_DELIVERY_DELAY_SECS}`
56+
);
57+
}
58+
body.settings.delivery_delay = args.deliveryDelaySecs;
59+
}
60+
61+
if (Object.keys(body.settings).length === 0) {
62+
body.settings = undefined;
4763
}
4864

4965
return body;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
export const INVALID_CONSUMER_SETTINGS_ERROR = 100127;
22
export const INVALID_QUEUE_SETTINGS_ERROR = 100128;
3+
4+
export const MIN_DELIVERY_DELAY_SECS = 0;
5+
export const MAX_DELIVERY_DELAY_SECS = 42300;

0 commit comments

Comments
 (0)