From 2141b7b34c027794b12eff08b7df7bef47a1476e Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 29 Jan 2024 16:44:09 +0100 Subject: [PATCH 1/4] test: add failing test for empty string secrets --- packages/wrangler/src/__tests__/secret.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/wrangler/src/__tests__/secret.test.ts b/packages/wrangler/src/__tests__/secret.test.ts index b3300802b4b8..55b26420c048 100644 --- a/packages/wrangler/src/__tests__/secret.test.ts +++ b/packages/wrangler/src/__tests__/secret.test.ts @@ -736,6 +736,7 @@ describe("wrangler secret", () => { JSON.stringify({ "secret-name-2": "secret_text", "secret-name-3": "secret_text", + "secret-name-4": "", }) ); @@ -761,6 +762,7 @@ describe("wrangler secret", () => { }, { type: "secret_text", name: "secret-name-1" }, { type: "secret_text", name: "secret-name-2" }, + { type: "secret_text", name: "secret-name-4" }, ], }) ) @@ -795,6 +797,7 @@ describe("wrangler secret", () => { name: "secret-name-3", text: "secret_text", }, + { type: "secret_text", name: "secret-name-4", text: "" }, ], }); expect(parsedSettings).not.toHaveProperty(["bindings", 0, "text"]); @@ -811,9 +814,10 @@ describe("wrangler secret", () => { "🌀 Creating the secrets for the Worker \\"script-name\\" ✨ Successfully created secret for key: secret-name-2 ✨ Successfully created secret for key: secret-name-3 + ✨ Successfully created secret for key: secret-name-4 Finished processing secrets JSON file: - ✨ 2 secrets successfully uploaded" + ✨ 3 secrets successfully uploaded" `); expect(std.err).toMatchInlineSnapshot(`""`); }); From a34dd3fb421c52ee20e91754f8182bb47092e38c Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 29 Jan 2024 16:45:06 +0100 Subject: [PATCH 2/4] fix: check existence in list with undefined comparison --- packages/wrangler/src/secret/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/wrangler/src/secret/index.ts b/packages/wrangler/src/secret/index.ts index 3eef0521076a..d0e82dac5bda 100644 --- a/packages/wrangler/src/secret/index.ts +++ b/packages/wrangler/src/secret/index.ts @@ -451,7 +451,9 @@ export const secretBulkHandler = async (secretBulkArgs: SecretBulkArgs) => { .filter((binding) => { // secrets that currently exist for the worker but are not provided for bulk update // are inherited over with other binding types - return binding.type !== "secret_text" || !content[binding.name]; + return ( + binding.type !== "secret_text" || !content[binding.name] === undefined + ); }) .map((binding) => ({ type: binding.type, name: binding.name })); // secrets to upload are provided as bindings in their full form From 65944eaf65500ba66887c2049295bba2b560c83d Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 29 Jan 2024 16:52:03 +0100 Subject: [PATCH 3/4] docs: add changeset --- .changeset/eleven-carrots-happen.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/eleven-carrots-happen.md diff --git a/.changeset/eleven-carrots-happen.md b/.changeset/eleven-carrots-happen.md new file mode 100644 index 000000000000..b593dce6f13f --- /dev/null +++ b/.changeset/eleven-carrots-happen.md @@ -0,0 +1,7 @@ +--- +"wrangler": patch +--- + +fix: allow empty strings in secret:bulk upload + +Previously, the `secret:bulk` command would fail if any of the secrets in the secret.json file were empty strings and they already existed remotely. From ac9b5d0aa413fcd5fa242ba18ac67075181aecf2 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 29 Jan 2024 17:44:24 +0100 Subject: [PATCH 4/4] fix: remove leftover not --- packages/wrangler/src/secret/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wrangler/src/secret/index.ts b/packages/wrangler/src/secret/index.ts index d0e82dac5bda..fad01d9e265f 100644 --- a/packages/wrangler/src/secret/index.ts +++ b/packages/wrangler/src/secret/index.ts @@ -452,7 +452,7 @@ export const secretBulkHandler = async (secretBulkArgs: SecretBulkArgs) => { // secrets that currently exist for the worker but are not provided for bulk update // are inherited over with other binding types return ( - binding.type !== "secret_text" || !content[binding.name] === undefined + binding.type !== "secret_text" || content[binding.name] === undefined ); }) .map((binding) => ({ type: binding.type, name: binding.name }));