1616
1717'use strict' ;
1818
19+ // Since we are running on Node.js 16, crypto is not available globally.
20+ if ( ! globalThis . crypto ) {
21+ globalThis . crypto = require ( 'node:crypto' ) . webcrypto ;
22+ }
23+
1924const { assert} = require ( 'chai' ) ;
2025const { after, before, describe, it} = require ( 'mocha' ) ;
2126
@@ -31,31 +36,44 @@ describe('azure-request', () => {
3136 let azureSourceContainer ;
3237 let gcsSinkBucket ;
3338
34- before ( async ( ) => {
35- assert (
36- process . env . AZURE_CONNECTION_STRING ,
37- 'environment variable AZURE_CONNECTION_STRING is required'
38- ) ;
39-
40- testBucketManager . setupBlobStorageFromConnectionString (
41- process . env . AZURE_CONNECTION_STRING
42- ) ;
43-
44- azureStorageAccount =
45- process . env . AZURE_STORAGE_ACCOUNT ||
46- testBucketManager . blobStorage . accountName ;
47-
48- projectId = await testBucketManager . getProjectId ( ) ;
49- azureSourceContainer =
50- await testBucketManager . generateBlobStorageContainer ( ) ;
51- gcsSinkBucket = ( await testBucketManager . generateGCSBucket ( ) ) . name ;
52- description = `My transfer job from '${ azureSourceContainer } ' -> '${ gcsSinkBucket } '` ;
53-
54- if ( ! process . env . AZURE_SAS_TOKEN ) {
55- // For security purposes we only want to pass this value via environment, not cli
56- process . env . AZURE_SAS_TOKEN = new URL (
57- testBucketManager . blobStorage . storageClientContext . url
58- ) . search ;
39+ before ( async function ( ) {
40+ try {
41+ assert (
42+ process . env . AZURE_CONNECTION_STRING ,
43+ 'environment variable AZURE_CONNECTION_STRING is required'
44+ ) ;
45+
46+ testBucketManager . setupBlobStorageFromConnectionString (
47+ process . env . AZURE_CONNECTION_STRING
48+ ) ;
49+
50+ azureStorageAccount =
51+ process . env . AZURE_STORAGE_ACCOUNT ||
52+ testBucketManager . blobStorage . accountName ;
53+
54+ projectId = await testBucketManager . getProjectId ( ) ;
55+ azureSourceContainer =
56+ await testBucketManager . generateBlobStorageContainer ( ) ;
57+ gcsSinkBucket = ( await testBucketManager . generateGCSBucket ( ) ) . name ;
58+ description = `My transfer job from '${ azureSourceContainer } ' -> '${ gcsSinkBucket } '` ;
59+
60+ if ( ! process . env . AZURE_SAS_TOKEN ) {
61+ // For security purposes we only want to pass this value via environment, not cli
62+ process . env . AZURE_SAS_TOKEN = new URL (
63+ testBucketManager . blobStorage . storageClientContext . url
64+ ) . search ;
65+ }
66+ } catch ( err ) {
67+ if (
68+ err ?. name === 'AssertionError' ||
69+ err ?. message ?. includes ( 'AZURE_CONNECTION_STRING' ) ||
70+ err ?. message ?. includes ( 'failed to authenticate' )
71+ ) {
72+ console . warn ( 'Azure credentials are missing, invalid, or expired.' ) ;
73+ this . skip ( ) ;
74+ } else {
75+ throw err ;
76+ }
5977 }
6078 } ) ;
6179
0 commit comments