1
- import { handle } from './handler ' ;
1
+ import { sync } from './syncer ' ;
2
2
import listReleases from '../../test/resources/github-list-releases.json' ;
3
3
import listReleasesEmpty from '../../test/resources/github-list-releases-empty-assets.json' ;
4
4
import listReleasesNoLinux from '../../test/resources/github-list-releases-no-linux.json' ;
5
5
import listReleasesNoArm64 from '../../test/resources/github-list-releases-no-arm64.json' ;
6
+ import { S3 } from 'aws-sdk' ;
7
+ import axios from 'axios' ;
8
+ import { request } from 'http' ;
9
+ import { EventEmitter , PassThrough , Readable } from 'stream' ;
6
10
7
11
const mockOctokit = {
8
12
repos : {
@@ -13,9 +17,23 @@ jest.mock('@octokit/rest', () => ({
13
17
Octokit : jest . fn ( ) . mockImplementation ( ( ) => mockOctokit ) ,
14
18
} ) ) ;
15
19
20
+ // mock stream for Axios
21
+ const mockResponse = `{"data": 123}` ;
22
+ const mockStream = new PassThrough ( ) ;
23
+ mockStream . push ( mockResponse ) ;
24
+ mockStream . end ( ) ;
25
+
26
+ jest . mock ( 'axios' ) ;
27
+ const mockedAxios = axios as jest . Mocked < typeof axios > ;
28
+ mockedAxios . request . mockResolvedValue ( {
29
+ data : mockStream ,
30
+ } ) ;
31
+
16
32
const mockS3 = {
17
33
getObjectTagging : jest . fn ( ) ,
18
- upload : jest . fn ( ) ,
34
+ upload : jest . fn ( ) . mockImplementation ( ( ) => {
35
+ return { promise : jest . fn ( ( ) => Promise . resolve ( ) ) } ;
36
+ } ) ,
19
37
} ;
20
38
jest . mock ( 'aws-sdk' , ( ) => ( {
21
39
S3 : jest . fn ( ) . mockImplementation ( ( ) => mockS3 ) ,
@@ -27,6 +45,8 @@ beforeEach(() => {
27
45
jest . clearAllMocks ( ) ;
28
46
} ) ;
29
47
48
+ jest . setTimeout ( 60 * 1000 ) ;
49
+
30
50
describe ( 'Synchronize action distribution.' , ( ) => {
31
51
beforeEach ( ( ) => {
32
52
process . env . S3_BUCKET_NAME = bucketName ;
@@ -47,7 +67,7 @@ describe('Synchronize action distribution.', () => {
47
67
} ;
48
68
} ) ;
49
69
50
- await handle ( ) ;
70
+ await sync ( ) ;
51
71
expect ( mockOctokit . repos . listReleases ) . toBeCalledTimes ( 1 ) ;
52
72
expect ( mockS3 . getObjectTagging ) . toBeCalledWith ( {
53
73
Bucket : bucketName ,
@@ -71,7 +91,7 @@ describe('Synchronize action distribution.', () => {
71
91
} ;
72
92
} ) ;
73
93
74
- await handle ( ) ;
94
+ await sync ( ) ;
75
95
expect ( mockOctokit . repos . listReleases ) . toBeCalledTimes ( 1 ) ;
76
96
expect ( mockS3 . getObjectTagging ) . toBeCalledWith ( {
77
97
Bucket : bucketName ,
@@ -90,7 +110,7 @@ describe('Synchronize action distribution.', () => {
90
110
} ;
91
111
} ) ;
92
112
93
- await handle ( ) ;
113
+ await sync ( ) ;
94
114
expect ( mockOctokit . repos . listReleases ) . toBeCalledTimes ( 1 ) ;
95
115
expect ( mockS3 . getObjectTagging ) . toBeCalledWith ( {
96
116
Bucket : bucketName ,
@@ -108,7 +128,7 @@ describe('Synchronize action distribution.', () => {
108
128
} ;
109
129
} ) ;
110
130
111
- await handle ( ) ;
131
+ await sync ( ) ;
112
132
expect ( mockOctokit . repos . listReleases ) . toBeCalledTimes ( 1 ) ;
113
133
expect ( mockS3 . getObjectTagging ) . toBeCalledWith ( {
114
134
Bucket : bucketName ,
@@ -134,7 +154,7 @@ describe('Synchronize action distribution.', () => {
134
154
} ;
135
155
} ) ;
136
156
137
- await handle ( ) ;
157
+ await sync ( ) ;
138
158
expect ( mockOctokit . repos . listReleases ) . toBeCalledTimes ( 1 ) ;
139
159
expect ( mockS3 . getObjectTagging ) . toBeCalledWith ( {
140
160
Bucket : bucketName ,
@@ -155,7 +175,7 @@ describe('Synchronize action distribution.', () => {
155
175
} ;
156
176
} ) ;
157
177
158
- await handle ( ) ;
178
+ await sync ( ) ;
159
179
expect ( mockOctokit . repos . listReleases ) . toBeCalledTimes ( 1 ) ;
160
180
expect ( mockS3 . getObjectTagging ) . toBeCalledWith ( {
161
181
Bucket : bucketName ,
@@ -183,7 +203,7 @@ describe('Synchronize action distribution.', () => {
183
203
} ;
184
204
} ) ;
185
205
186
- await handle ( ) ;
206
+ await sync ( ) ;
187
207
expect ( mockOctokit . repos . listReleases ) . toBeCalledTimes ( 1 ) ;
188
208
expect ( mockS3 . getObjectTagging ) . toBeCalledWith ( {
189
209
Bucket : bucketName ,
@@ -203,7 +223,7 @@ describe('Synchronize action distribution.', () => {
203
223
} ;
204
224
} ) ;
205
225
206
- await handle ( ) ;
226
+ await sync ( ) ;
207
227
expect ( mockOctokit . repos . listReleases ) . toBeCalledTimes ( 1 ) ;
208
228
expect ( mockS3 . getObjectTagging ) . toBeCalledWith ( {
209
229
Bucket : bucketName ,
@@ -221,7 +241,7 @@ describe('Synchronize action distribution.', () => {
221
241
} ;
222
242
} ) ;
223
243
224
- await handle ( ) ;
244
+ await sync ( ) ;
225
245
expect ( mockOctokit . repos . listReleases ) . toBeCalledTimes ( 1 ) ;
226
246
expect ( mockS3 . getObjectTagging ) . toBeCalledWith ( {
227
247
Bucket : bucketName ,
@@ -243,15 +263,15 @@ describe('No release assets found.', () => {
243
263
data : listReleasesEmpty ,
244
264
} ) ) ;
245
265
246
- await expect ( handle ( ) ) . rejects . toThrow ( errorMessage ) ;
266
+ await expect ( sync ( ) ) . rejects . toThrow ( errorMessage ) ;
247
267
} ) ;
248
268
249
269
it ( 'No linux x64 asset.' , async ( ) => {
250
270
mockOctokit . repos . listReleases . mockImplementation ( ( ) => ( {
251
271
data : [ listReleasesNoLinux ] ,
252
272
} ) ) ;
253
273
254
- await expect ( handle ( ) ) . rejects . toThrow ( errorMessage ) ;
274
+ await expect ( sync ( ) ) . rejects . toThrow ( errorMessage ) ;
255
275
} ) ;
256
276
} ) ;
257
277
@@ -260,17 +280,17 @@ describe('Invalid config', () => {
260
280
it ( 'No bucket and object key.' , async ( ) => {
261
281
delete process . env . S3_OBJECT_KEY ;
262
282
delete process . env . S3_BUCKET_NAME ;
263
- await expect ( handle ( ) ) . rejects . toThrow ( errorMessage ) ;
283
+ await expect ( sync ( ) ) . rejects . toThrow ( errorMessage ) ;
264
284
} ) ;
265
285
it ( 'No bucket.' , async ( ) => {
266
286
delete process . env . S3_BUCKET_NAME ;
267
287
process . env . S3_OBJECT_KEY = bucketObjectKey ;
268
- await expect ( handle ( ) ) . rejects . toThrow ( errorMessage ) ;
288
+ await expect ( sync ( ) ) . rejects . toThrow ( errorMessage ) ;
269
289
} ) ;
270
290
it ( 'No object key.' , async ( ) => {
271
291
delete process . env . S3_OBJECT_KEY ;
272
292
process . env . S3_BUCKET_NAME = bucketName ;
273
- await expect ( handle ( ) ) . rejects . toThrow ( errorMessage ) ;
293
+ await expect ( sync ( ) ) . rejects . toThrow ( errorMessage ) ;
274
294
} ) ;
275
295
} ) ;
276
296
@@ -287,6 +307,6 @@ describe('Synchronize action distribution for arm64.', () => {
287
307
data : [ listReleasesNoArm64 ] ,
288
308
} ) ) ;
289
309
290
- await expect ( handle ( ) ) . rejects . toThrow ( errorMessage ) ;
310
+ await expect ( sync ( ) ) . rejects . toThrow ( errorMessage ) ;
291
311
} ) ;
292
312
} ) ;
0 commit comments