@@ -27,6 +27,7 @@ beforeAll(async () => {
2727
2828afterEach ( ( ) => {
2929 delete env . NETLIFY_BLOBS_CONTEXT
30+ delete globalThis . netlifyBlobsContext
3031} )
3132
3233const deployID = '6527dfab35be400008332a1d'
@@ -239,51 +240,108 @@ describe('get', () => {
239240 expect ( mockStore . fulfilled ) . toBeTruthy ( )
240241 } )
241242
242- test ( 'Loads credentials from the environment' , async ( ) => {
243- const tokens = [ 'some-token-1' , 'another-token-2' ]
244- const mockStore = new MockFetch ( )
245- . get ( {
246- headers : { authorization : `Bearer ${ tokens [ 0 ] } ` } ,
247- response : new Response ( value ) ,
248- url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
249- } )
250- . get ( {
251- headers : { authorization : `Bearer ${ tokens [ 0 ] } ` } ,
252- response : new Response ( value ) ,
253- url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
254- } )
255- . get ( {
256- headers : { authorization : `Bearer ${ tokens [ 1 ] } ` } ,
257- response : new Response ( value ) ,
258- url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
259- } )
260- . get ( {
261- headers : { authorization : `Bearer ${ tokens [ 1 ] } ` } ,
262- response : new Response ( value ) ,
263- url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
264- } )
265-
266- globalThis . fetch = mockStore . fetch
267-
268- for ( let index = 0 ; index <= 1 ; index ++ ) {
269- const context = {
270- edgeURL,
271- siteID,
272- token : tokens [ index ] ,
243+ describe ( 'Loads credentials from the environment' , ( ) => {
244+ test ( 'From the `NETLIFY_BLOBS_CONTEXT` environment variable' , async ( ) => {
245+ const tokens = [ 'some-token-1' , 'another-token-2' ]
246+ const mockStore = new MockFetch ( )
247+ . get ( {
248+ headers : { authorization : `Bearer ${ tokens [ 0 ] } ` } ,
249+ response : new Response ( value ) ,
250+ url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
251+ } )
252+ . get ( {
253+ headers : { authorization : `Bearer ${ tokens [ 0 ] } ` } ,
254+ response : new Response ( value ) ,
255+ url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
256+ } )
257+ . get ( {
258+ headers : { authorization : `Bearer ${ tokens [ 1 ] } ` } ,
259+ response : new Response ( value ) ,
260+ url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
261+ } )
262+ . get ( {
263+ headers : { authorization : `Bearer ${ tokens [ 1 ] } ` } ,
264+ response : new Response ( value ) ,
265+ url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
266+ } )
267+
268+ globalThis . fetch = mockStore . fetch
269+
270+ for ( let index = 0 ; index <= 1 ; index ++ ) {
271+ const context = {
272+ edgeURL,
273+ siteID,
274+ token : tokens [ index ] ,
275+ }
276+
277+ env . NETLIFY_BLOBS_CONTEXT = Buffer . from ( JSON . stringify ( context ) ) . toString ( 'base64' )
278+
279+ const store = getStore ( 'images' )
280+
281+ const string = await store . get ( key )
282+ expect ( string ) . toBe ( value )
283+
284+ const stream = await store . get ( key , { type : 'stream' } )
285+ expect ( await streamToString ( stream as unknown as NodeJS . ReadableStream ) ) . toBe ( value )
273286 }
274287
275- env . NETLIFY_BLOBS_CONTEXT = Buffer . from ( JSON . stringify ( context ) ) . toString ( 'base64' )
276-
277- const store = getStore ( 'images' )
278-
279- const string = await store . get ( key )
280- expect ( string ) . toBe ( value )
288+ expect ( mockStore . fulfilled ) . toBeTruthy ( )
289+ } )
281290
282- const stream = await store . get ( key , { type : 'stream' } )
283- expect ( await streamToString ( stream as unknown as NodeJS . ReadableStream ) ) . toBe ( value )
284- }
291+ test ( 'From the `netlifyBlobsContext` global variable' , async ( ) => {
292+ const tokens = [ 'some-token-1' , 'another-token-2' ]
293+ const mockStore = new MockFetch ( )
294+ . get ( {
295+ headers : { authorization : `Bearer ${ tokens [ 0 ] } ` } ,
296+ response : new Response ( value ) ,
297+ url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
298+ } )
299+ . get ( {
300+ headers : { authorization : `Bearer ${ tokens [ 0 ] } ` } ,
301+ response : new Response ( value ) ,
302+ url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
303+ } )
304+ . get ( {
305+ headers : { authorization : `Bearer ${ tokens [ 1 ] } ` } ,
306+ response : new Response ( value ) ,
307+ url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
308+ } )
309+ . get ( {
310+ headers : { authorization : `Bearer ${ tokens [ 1 ] } ` } ,
311+ response : new Response ( value ) ,
312+ url : `${ edgeURL } /${ siteID } /images/${ key } ` ,
313+ } )
314+
315+ globalThis . fetch = mockStore . fetch
316+
317+ for ( let index = 0 ; index <= 1 ; index ++ ) {
318+ const context1 = {
319+ edgeURL,
320+ siteID,
321+ token : 'not-the-right-token' ,
322+ }
323+
324+ env . NETLIFY_BLOBS_CONTEXT = Buffer . from ( JSON . stringify ( context1 ) ) . toString ( 'base64' )
325+
326+ const context2 = {
327+ edgeURL,
328+ siteID,
329+ token : tokens [ index ] ,
330+ }
331+
332+ globalThis . netlifyBlobsContext = Buffer . from ( JSON . stringify ( context2 ) ) . toString ( 'base64' )
333+
334+ const store = getStore ( 'images' )
335+
336+ const string = await store . get ( key )
337+ expect ( string ) . toBe ( value )
338+
339+ const stream = await store . get ( key , { type : 'stream' } )
340+ expect ( await streamToString ( stream as unknown as NodeJS . ReadableStream ) ) . toBe ( value )
341+ }
285342
286- expect ( mockStore . fulfilled ) . toBeTruthy ( )
343+ expect ( mockStore . fulfilled ) . toBeTruthy ( )
344+ } )
287345 } )
288346 } )
289347} )
0 commit comments