Skip to content

Commit 33d4baa

Browse files
Fix worker route script (#250)
* fix worker_script name reference * chore(workers_route): e2e tests, refactor from regex --------- Co-authored-by: Paul Cantea <paul.cantea@coalitioninc.com>
1 parent 08c31fc commit 33d4baa

4 files changed

Lines changed: 442 additions & 2 deletions

File tree

integration/v4_to_v5/testdata/worker_route/expected/worker_route.tf

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Comprehensive integration test for worker_route migration
22
# This file tests ALL Terraform patterns and edge cases
3-
# Note: Testing routes without script_name to avoid requiring actual worker scripts
3+
# Includes script_name traversal references to validate v4->v5 attribute rewrites
44

55
# ========================================
66
# Variables
@@ -200,11 +200,71 @@ resource "cloudflare_workers_route" "complex_interpolation" {
200200
pattern = "${local.name_prefix}-${replace("test.domain", ".", "-")}.cf-tf-test.com/*"
201201
}
202202

203+
###############################################################################
204+
# Pattern 12: Worker script dependencies for route references
205+
###############################################################################
206+
207+
resource "cloudflare_workers_script" "segment_proxy" {
208+
account_id = var.cloudflare_account_id
209+
content = "addEventListener('fetch', event => { event.respondWith(new Response('ok')); });"
210+
script_name = "${local.name_prefix}-segment-proxy"
211+
}
212+
213+
214+
resource "cloudflare_workers_script" "segment_proxy_indexed" {
215+
count = 1
216+
account_id = var.cloudflare_account_id
217+
content = "addEventListener('fetch', event => { event.respondWith(new Response('ok')); });"
218+
script_name = "${local.name_prefix}-segment-proxy-${count.index}"
219+
}
220+
221+
resource "cloudflare_workers_script" "segment_proxy_each" {
222+
for_each = toset(["alpha"])
223+
account_id = var.cloudflare_account_id
224+
content = "addEventListener('fetch', event => { event.respondWith(new Response('ok')); });"
225+
script_name = "${local.name_prefix}-segment-proxy-${each.key}"
226+
}
227+
228+
###############################################################################
229+
# Pattern 12: script_name reference rewrites
230+
###############################################################################
231+
232+
resource "cloudflare_workers_route" "script_ref_plural" {
233+
zone_id = local.zone_id
234+
pattern = "${local.name_prefix}-script-plural.cf-tf-test.com/*"
235+
script = cloudflare_workers_script.segment_proxy.id
236+
}
237+
238+
resource "cloudflare_workers_route" "script_ref_singular" {
239+
zone_id = local.zone_id
240+
pattern = "${local.name_prefix}-script-singular.cf-tf-test.com/*"
241+
script = cloudflare_workers_script.legacy_proxy.id
242+
}
243+
244+
resource "cloudflare_workers_route" "script_ref_indexed" {
245+
zone_id = local.zone_id
246+
pattern = "${local.name_prefix}-script-indexed.cf-tf-test.com/*"
247+
script = cloudflare_workers_script.segment_proxy_indexed[0].id
248+
}
249+
250+
resource "cloudflare_workers_route" "script_ref_each_key" {
251+
zone_id = local.zone_id
252+
pattern = "${local.name_prefix}-script-each.cf-tf-test.com/*"
253+
script = cloudflare_workers_script.segment_proxy_each["alpha"].id
254+
}
255+
256+
resource "cloudflare_workers_route" "script_ref_dot_index" {
257+
zone_id = local.zone_id
258+
pattern = "${local.name_prefix}-script-dotidx.cf-tf-test.com/*"
259+
script = cloudflare_workers_script.segment_proxy_indexed.0.id
260+
}
261+
203262
###############################################################################
204263
# Summary: Test Coverage
205264
###############################################################################
206265
# Total resources: 25+ instances across all patterns
207266
# - Routes without script_name (catch-all/fallback): 25+ instances
267+
# - script_name references with worker_script/workers_script traversals
208268
# - for_each with maps: 2 instances (api_routes)
209269
# - for_each with sets: 2 instances (admin_routes)
210270
# - count-based: 3 instances (numbered)
@@ -213,3 +273,14 @@ resource "cloudflare_workers_route" "complex_interpolation" {
213273
# - Special patterns: wildcard, exact paths, query params, special chars
214274
# - Environment configs: 3 instances (prod/staging/dev)
215275
###############################################################################
276+
277+
resource "cloudflare_workers_script" "legacy_proxy" {
278+
account_id = var.cloudflare_account_id
279+
content = "addEventListener('fetch', event => { event.respondWith(new Response('ok')); });"
280+
script_name = "${local.name_prefix}-legacy-proxy"
281+
}
282+
283+
moved {
284+
from = cloudflare_worker_script.legacy_proxy
285+
to = cloudflare_workers_script.legacy_proxy
286+
}

integration/v4_to_v5/testdata/worker_route/input/worker_route.tf

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Comprehensive integration test for worker_route migration
22
# This file tests ALL Terraform patterns and edge cases
3-
# Note: Testing routes without script_name to avoid requiring actual worker scripts
3+
# Includes script_name traversal references to validate v4->v5 attribute rewrites
44

55
# ========================================
66
# Variables
@@ -200,11 +200,76 @@ resource "cloudflare_workers_route" "complex_interpolation" {
200200
pattern = "${local.name_prefix}-${replace("test.domain", ".", "-")}.cf-tf-test.com/*"
201201
}
202202

203+
###############################################################################
204+
# Pattern 12: Worker script dependencies for route references
205+
###############################################################################
206+
207+
resource "cloudflare_workers_script" "segment_proxy" {
208+
account_id = var.cloudflare_account_id
209+
name = "${local.name_prefix}-segment-proxy"
210+
content = "addEventListener('fetch', event => { event.respondWith(new Response('ok')); });"
211+
}
212+
213+
resource "cloudflare_worker_script" "legacy_proxy" {
214+
account_id = var.cloudflare_account_id
215+
name = "${local.name_prefix}-legacy-proxy"
216+
content = "addEventListener('fetch', event => { event.respondWith(new Response('ok')); });"
217+
}
218+
219+
resource "cloudflare_workers_script" "segment_proxy_indexed" {
220+
count = 1
221+
account_id = var.cloudflare_account_id
222+
name = "${local.name_prefix}-segment-proxy-${count.index}"
223+
content = "addEventListener('fetch', event => { event.respondWith(new Response('ok')); });"
224+
}
225+
226+
resource "cloudflare_workers_script" "segment_proxy_each" {
227+
for_each = toset(["alpha"])
228+
account_id = var.cloudflare_account_id
229+
name = "${local.name_prefix}-segment-proxy-${each.key}"
230+
content = "addEventListener('fetch', event => { event.respondWith(new Response('ok')); });"
231+
}
232+
233+
###############################################################################
234+
# Pattern 12: script_name reference rewrites
235+
###############################################################################
236+
237+
resource "cloudflare_workers_route" "script_ref_plural" {
238+
zone_id = local.zone_id
239+
pattern = "${local.name_prefix}-script-plural.cf-tf-test.com/*"
240+
script_name = cloudflare_workers_script.segment_proxy.name
241+
}
242+
243+
resource "cloudflare_workers_route" "script_ref_singular" {
244+
zone_id = local.zone_id
245+
pattern = "${local.name_prefix}-script-singular.cf-tf-test.com/*"
246+
script_name = cloudflare_worker_script.legacy_proxy.name
247+
}
248+
249+
resource "cloudflare_workers_route" "script_ref_indexed" {
250+
zone_id = local.zone_id
251+
pattern = "${local.name_prefix}-script-indexed.cf-tf-test.com/*"
252+
script_name = cloudflare_workers_script.segment_proxy_indexed[0].name
253+
}
254+
255+
resource "cloudflare_workers_route" "script_ref_each_key" {
256+
zone_id = local.zone_id
257+
pattern = "${local.name_prefix}-script-each.cf-tf-test.com/*"
258+
script_name = cloudflare_workers_script.segment_proxy_each["alpha"].name
259+
}
260+
261+
resource "cloudflare_workers_route" "script_ref_dot_index" {
262+
zone_id = local.zone_id
263+
pattern = "${local.name_prefix}-script-dotidx.cf-tf-test.com/*"
264+
script_name = cloudflare_workers_script.segment_proxy_indexed.0.name
265+
}
266+
203267
###############################################################################
204268
# Summary: Test Coverage
205269
###############################################################################
206270
# Total resources: 25+ instances across all patterns
207271
# - Routes without script_name (catch-all/fallback): 25+ instances
272+
# - script_name references with worker_script/workers_script traversals
208273
# - for_each with maps: 2 instances (api_routes)
209274
# - for_each with sets: 2 instances (admin_routes)
210275
# - count-based: 3 instances (numbered)

0 commit comments

Comments
 (0)