@@ -3,6 +3,11 @@ import { env, createExecutionContext, waitOnExecutionContext } from 'cloudflare:
33import worker from '../worker.js' ;
44
55const UPSTREAM = 'https://data.cambridgebeerfestival.com' ;
6+ const DIRECTORY_FETCH_INIT = {
7+ headers : {
8+ 'User-Agent' : 'Cambridge-Beer-Festival-App-Proxy/1.0' ,
9+ } ,
10+ } ;
611
712async function fetchWorker ( path , origin = 'https://cambeerfestival.app' ) {
813 const request = new Request ( `https://worker.example.com${ path } ` , {
@@ -51,7 +56,7 @@ describe('available_beverage_types endpoint', () => {
5156 const data = await response . json ( ) ;
5257 expect ( data . festival_id ) . toBe ( 'cbf2025' ) ;
5358 expect ( data . available_beverage_types ) . toEqual ( [ 'beer' , 'cider' , 'mead' , 'perry' ] ) ;
54- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , expect . anything ( ) ) ;
59+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , DIRECTORY_FETCH_INIT ) ;
5560 } ) ;
5661
5762 it ( 'returns types sorted alphabetically' , async ( ) => {
@@ -63,7 +68,7 @@ describe('available_beverage_types endpoint', () => {
6368 const response = await fetchWorker ( '/cbf2025/available_beverage_types.json' ) ;
6469 const data = await response . json ( ) ;
6570 expect ( data . available_beverage_types ) . toEqual ( [ 'apple-juice' , 'beer' , 'wine' ] ) ;
66- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , expect . anything ( ) ) ;
71+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , DIRECTORY_FETCH_INIT ) ;
6772 } ) ;
6873
6974 it ( 'filters out available_beverage_types.json from results' , async ( ) => {
@@ -76,7 +81,7 @@ describe('available_beverage_types endpoint', () => {
7681 const data = await response . json ( ) ;
7782 expect ( data . available_beverage_types ) . toEqual ( [ 'beer' , 'cider' ] ) ;
7883 expect ( data . available_beverage_types ) . not . toContain ( 'available_beverage_types' ) ;
79- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , expect . anything ( ) ) ;
84+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , DIRECTORY_FETCH_INIT ) ;
8085 } ) ;
8186
8287 it ( 'returns empty array when no JSON files found' , async ( ) => {
@@ -88,7 +93,7 @@ describe('available_beverage_types endpoint', () => {
8893 const response = await fetchWorker ( '/cbf2025/available_beverage_types.json' ) ;
8994 const data = await response . json ( ) ;
9095 expect ( data . available_beverage_types ) . toEqual ( [ ] ) ;
91- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , expect . anything ( ) ) ;
96+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , DIRECTORY_FETCH_INIT ) ;
9297 } ) ;
9398
9499 it ( 'returns 404 when festival not found upstream' , async ( ) => {
@@ -100,7 +105,7 @@ describe('available_beverage_types endpoint', () => {
100105 const data = await response . json ( ) ;
101106 expect ( data . error ) . toBe ( 'Festival not found' ) ;
102107 expect ( data . festival_id ) . toBe ( 'nonexistent' ) ;
103- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /nonexistent/` , expect . anything ( ) ) ;
108+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /nonexistent/` , DIRECTORY_FETCH_INIT ) ;
104109 } ) ;
105110
106111 it ( 'returns 500 when upstream fetch fails' , async ( ) => {
@@ -111,7 +116,7 @@ describe('available_beverage_types endpoint', () => {
111116
112117 const data = await response . json ( ) ;
113118 expect ( data . error ) . toBe ( 'Failed to fetch beverage types' ) ;
114- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , expect . anything ( ) ) ;
119+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , DIRECTORY_FETCH_INIT ) ;
115120 } ) ;
116121
117122 it ( 'includes CORS headers on 500 error' , async ( ) => {
@@ -120,7 +125,7 @@ describe('available_beverage_types endpoint', () => {
120125 const response = await fetchWorker ( '/cbf2025/available_beverage_types.json' ) ;
121126 expect ( response . headers . get ( 'Access-Control-Allow-Origin' ) )
122127 . toBe ( 'https://cambeerfestival.app' ) ;
123- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , expect . anything ( ) ) ;
128+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , DIRECTORY_FETCH_INIT ) ;
124129 } ) ;
125130
126131 it ( 'includes CORS headers on success' , async ( ) => {
@@ -132,7 +137,7 @@ describe('available_beverage_types endpoint', () => {
132137 const response = await fetchWorker ( '/cbf2025/available_beverage_types.json' ) ;
133138 expect ( response . headers . get ( 'Access-Control-Allow-Origin' ) )
134139 . toBe ( 'https://cambeerfestival.app' ) ;
135- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , expect . anything ( ) ) ;
140+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , DIRECTORY_FETCH_INIT ) ;
136141 } ) ;
137142
138143 it ( 'includes CORS headers on 404' , async ( ) => {
@@ -141,7 +146,7 @@ describe('available_beverage_types endpoint', () => {
141146 const response = await fetchWorker ( '/nonexistent/available_beverage_types.json' ) ;
142147 expect ( response . headers . get ( 'Access-Control-Allow-Origin' ) )
143148 . toBe ( 'https://cambeerfestival.app' ) ;
144- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /nonexistent/` , expect . anything ( ) ) ;
149+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /nonexistent/` , DIRECTORY_FETCH_INIT ) ;
145150 } ) ;
146151
147152 it ( 'sets Cache-Control to 1 hour on success' , async ( ) => {
@@ -152,7 +157,7 @@ describe('available_beverage_types endpoint', () => {
152157
153158 const response = await fetchWorker ( '/cbf2025/available_beverage_types.json' ) ;
154159 expect ( response . headers . get ( 'Cache-Control' ) ) . toBe ( 'public, max-age=3600' ) ;
155- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , expect . anything ( ) ) ;
160+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , DIRECTORY_FETCH_INIT ) ;
156161 } ) ;
157162
158163 it ( 'includes timestamp in response' , async ( ) => {
@@ -165,7 +170,7 @@ describe('available_beverage_types endpoint', () => {
165170 const data = await response . json ( ) ;
166171 expect ( data . timestamp ) . toBeDefined ( ) ;
167172 expect ( new Date ( data . timestamp ) . toISOString ( ) ) . toBe ( data . timestamp ) ;
168- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , expect . anything ( ) ) ;
173+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , DIRECTORY_FETCH_INIT ) ;
169174 } ) ;
170175
171176 it ( 'handles hyphenated beverage type names' , async ( ) => {
@@ -179,6 +184,6 @@ describe('available_beverage_types endpoint', () => {
179184 expect ( data . available_beverage_types ) . toEqual ( [
180185 'apple-juice' , 'international-beer' , 'low-no' ,
181186 ] ) ;
182- expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , expect . anything ( ) ) ;
187+ expect ( mockFetch ) . toHaveBeenCalledWith ( `${ UPSTREAM } /cbf2025/` , DIRECTORY_FETCH_INIT ) ;
183188 } ) ;
184189} ) ;
0 commit comments