wrangler 2.4.3 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/wrangler.js +20 -8
- package/miniflare-dist/index.mjs +8 -3
- package/package.json +1 -1
- package/src/__tests__/delete.test.ts +81 -48
- package/src/__tests__/dev.test.tsx +8 -8
- package/src/__tests__/helpers/mock-oauth-flow.ts +5 -1
- package/src/__tests__/helpers/msw/handlers/oauth.ts +13 -18
- package/src/__tests__/logout.test.ts +47 -0
- package/src/__tests__/queues.test.ts +155 -67
- package/src/__tests__/tail.test.ts +207 -108
- package/src/__tests__/user.test.ts +43 -69
- package/src/d1/backups.tsx +7 -2
- package/src/d1/delete.tsx +4 -4
- package/src/d1/index.ts +2 -0
- package/src/d1/migrations/apply.tsx +6 -5
- package/src/d1/migrations/helpers.ts +4 -2
- package/src/d1/migrations/list.tsx +2 -2
- package/src/d1/migrations/options.ts +18 -0
- package/src/dev/dev.tsx +46 -22
- package/src/dev/local.tsx +18 -14
- package/src/dev/start-server.ts +22 -21
- package/src/dev.tsx +10 -11
- package/src/miniflare-cli/assets.ts +7 -2
- package/src/miniflare-cli/index.ts +1 -1
- package/src/pages/dev.tsx +0 -2
- package/src/proxy.ts +5 -0
- package/wrangler-dist/cli.js +221 -178
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { rest } from "msw";
|
|
2
2
|
import { mockAccountId, mockApiToken } from "./helpers/mock-account-id";
|
|
3
|
-
import {
|
|
4
|
-
createFetchResult,
|
|
5
|
-
setMockRawResponse,
|
|
6
|
-
setMockResponse,
|
|
7
|
-
unsetAllMocks,
|
|
8
|
-
} from "./helpers/mock-cfetch";
|
|
9
3
|
import { mockConsoleMethods } from "./helpers/mock-console";
|
|
4
|
+
import { msw } from "./helpers/msw";
|
|
10
5
|
import { runInTempDir } from "./helpers/run-in-tmp";
|
|
11
6
|
import { runWrangler } from "./helpers/run-wrangler";
|
|
7
|
+
import type { QueueResponse, PostConsumerBody } from "../queues/client";
|
|
12
8
|
|
|
13
9
|
describe("wrangler", () => {
|
|
14
10
|
mockAccountId();
|
|
@@ -16,10 +12,6 @@ describe("wrangler", () => {
|
|
|
16
12
|
runInTempDir();
|
|
17
13
|
const std = mockConsoleMethods();
|
|
18
14
|
|
|
19
|
-
afterEach(() => {
|
|
20
|
-
unsetAllMocks();
|
|
21
|
-
});
|
|
22
|
-
|
|
23
15
|
describe("queues", () => {
|
|
24
16
|
it("should show the correct help text", async () => {
|
|
25
17
|
await runWrangler("queues --help");
|
|
@@ -46,15 +38,24 @@ describe("wrangler", () => {
|
|
|
46
38
|
describe("list", () => {
|
|
47
39
|
function mockListRequest(queues: QueueResponse[], page: number) {
|
|
48
40
|
const requests = { count: 0 };
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
41
|
+
msw.use(
|
|
42
|
+
rest.get(
|
|
43
|
+
"*/accounts/:accountId/workers/queues?*",
|
|
44
|
+
async (request, response, context) => {
|
|
45
|
+
requests.count += 1;
|
|
46
|
+
const query = request.url.searchParams;
|
|
47
|
+
expect(Number(query.get("page"))).toEqual(page);
|
|
48
|
+
expect(await request.text()).toEqual("");
|
|
49
|
+
return response.once(
|
|
50
|
+
context.json({
|
|
51
|
+
success: true,
|
|
52
|
+
errors: [],
|
|
53
|
+
messages: [],
|
|
54
|
+
result: queues,
|
|
55
|
+
})
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
)
|
|
58
59
|
);
|
|
59
60
|
return requests;
|
|
60
61
|
}
|
|
@@ -121,15 +122,30 @@ describe("wrangler", () => {
|
|
|
121
122
|
describe("create", () => {
|
|
122
123
|
function mockCreateRequest(expectedQueueName: string) {
|
|
123
124
|
const requests = { count: 0 };
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
125
|
+
|
|
126
|
+
msw.use(
|
|
127
|
+
rest.post(
|
|
128
|
+
"*/accounts/:accountId/workers/queues",
|
|
129
|
+
async (request, response, context) => {
|
|
130
|
+
requests.count += 1;
|
|
131
|
+
const body = (await request.json()) as {
|
|
132
|
+
queue_name: string;
|
|
133
|
+
};
|
|
134
|
+
expect(body.queue_name).toEqual(expectedQueueName);
|
|
135
|
+
return response.once(
|
|
136
|
+
context.json({
|
|
137
|
+
success: true,
|
|
138
|
+
errors: [],
|
|
139
|
+
messages: [],
|
|
140
|
+
result: {
|
|
141
|
+
queue_name: expectedQueueName,
|
|
142
|
+
created_on: "01-01-2001",
|
|
143
|
+
modified_on: "01-01-2001",
|
|
144
|
+
},
|
|
145
|
+
})
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
)
|
|
133
149
|
);
|
|
134
150
|
return requests;
|
|
135
151
|
}
|
|
@@ -165,15 +181,25 @@ describe("wrangler", () => {
|
|
|
165
181
|
|
|
166
182
|
it("should show link to dash when not enabled", async () => {
|
|
167
183
|
const queueName = "testQueue";
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
184
|
+
msw.use(
|
|
185
|
+
rest.post(
|
|
186
|
+
"*/accounts/:accountId/workers/queues",
|
|
187
|
+
async (request, response, context) => {
|
|
188
|
+
expect(request.params.accountId).toEqual("some-account-id");
|
|
189
|
+
return response.once(
|
|
190
|
+
context.status(403),
|
|
191
|
+
context.json({
|
|
192
|
+
success: false,
|
|
193
|
+
errors: [
|
|
194
|
+
{ message: "workers.api.error.unauthorized", code: 10023 },
|
|
195
|
+
],
|
|
196
|
+
messages: [],
|
|
197
|
+
})
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
)
|
|
176
201
|
);
|
|
202
|
+
|
|
177
203
|
await expect(
|
|
178
204
|
runWrangler(`queues create ${queueName}`)
|
|
179
205
|
).rejects.toThrowError();
|
|
@@ -196,13 +222,23 @@ describe("wrangler", () => {
|
|
|
196
222
|
describe("delete", () => {
|
|
197
223
|
function mockDeleteRequest(expectedQueueName: string) {
|
|
198
224
|
const requests = { count: 0 };
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
225
|
+
msw.use(
|
|
226
|
+
rest.delete(
|
|
227
|
+
"*/accounts/:accountId/workers/queues/:queueName",
|
|
228
|
+
async (request, response, context) => {
|
|
229
|
+
requests.count += 1;
|
|
230
|
+
expect(request.params.queueName).toEqual(expectedQueueName);
|
|
231
|
+
expect(request.params.accountId).toEqual("some-account-id");
|
|
232
|
+
return response.once(
|
|
233
|
+
context.json({
|
|
234
|
+
success: true,
|
|
235
|
+
errors: [],
|
|
236
|
+
messages: [],
|
|
237
|
+
result: {},
|
|
238
|
+
})
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
)
|
|
206
242
|
);
|
|
207
243
|
return requests;
|
|
208
244
|
}
|
|
@@ -265,14 +301,24 @@ describe("wrangler", () => {
|
|
|
265
301
|
expectedBody: PostConsumerBody
|
|
266
302
|
) {
|
|
267
303
|
const requests = { count: 0 };
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
304
|
+
msw.use(
|
|
305
|
+
rest.post(
|
|
306
|
+
"*/accounts/:accountId/workers/queues/:queueName/consumers",
|
|
307
|
+
async (request, response, context) => {
|
|
308
|
+
requests.count += 1;
|
|
309
|
+
expect(request.params.queueName).toEqual(expectedQueueName);
|
|
310
|
+
expect(request.params.accountId).toEqual("some-account-id");
|
|
311
|
+
expect(await request.json()).toEqual(expectedBody);
|
|
312
|
+
return response.once(
|
|
313
|
+
context.json({
|
|
314
|
+
success: true,
|
|
315
|
+
errors: [],
|
|
316
|
+
messages: [],
|
|
317
|
+
result: {},
|
|
318
|
+
})
|
|
319
|
+
);
|
|
320
|
+
}
|
|
321
|
+
)
|
|
276
322
|
);
|
|
277
323
|
return requests;
|
|
278
324
|
}
|
|
@@ -346,15 +392,30 @@ describe("wrangler", () => {
|
|
|
346
392
|
|
|
347
393
|
it("should show link to dash when not enabled", async () => {
|
|
348
394
|
const queueName = "testQueue";
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
395
|
+
msw.use(
|
|
396
|
+
rest.post(
|
|
397
|
+
"*/accounts/:accountId/workers/queues/:queueName/consumers",
|
|
398
|
+
async (request, response, context) => {
|
|
399
|
+
expect(request.params.queueName).toEqual(queueName);
|
|
400
|
+
expect(request.params.accountId).toEqual("some-account-id");
|
|
401
|
+
return response.once(
|
|
402
|
+
context.status(403),
|
|
403
|
+
context.json({
|
|
404
|
+
success: false,
|
|
405
|
+
errors: [
|
|
406
|
+
{
|
|
407
|
+
code: 10023,
|
|
408
|
+
message: "workers.api.error.unauthorized",
|
|
409
|
+
},
|
|
410
|
+
],
|
|
411
|
+
messages: [],
|
|
412
|
+
result: {},
|
|
413
|
+
})
|
|
414
|
+
);
|
|
415
|
+
}
|
|
416
|
+
)
|
|
357
417
|
);
|
|
418
|
+
|
|
358
419
|
await expect(
|
|
359
420
|
runWrangler(`queues consumer add ${queueName} testScript`)
|
|
360
421
|
).rejects.toThrowError();
|
|
@@ -380,13 +441,32 @@ describe("wrangler", () => {
|
|
|
380
441
|
expectedScriptName: string,
|
|
381
442
|
expectedEnvName?: string
|
|
382
443
|
) {
|
|
383
|
-
|
|
444
|
+
const requests = { count: 0 };
|
|
445
|
+
let resource = `accounts/:accountId/workers/queues/:expectedQueueName/consumers/:expectedScriptName`;
|
|
384
446
|
if (expectedEnvName !== undefined) {
|
|
385
|
-
resource += `/environments
|
|
447
|
+
resource += `/environments/:expectedEnvName`;
|
|
386
448
|
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
449
|
+
msw.use(
|
|
450
|
+
rest.delete(`*/${resource}`, async (request, response, context) => {
|
|
451
|
+
requests.count++;
|
|
452
|
+
expect(request.params.accountId).toBe("some-account-id");
|
|
453
|
+
expect(request.params.expectedQueueName).toBe(expectedQueueName);
|
|
454
|
+
expect(request.params.expectedScriptName).toBe(
|
|
455
|
+
expectedScriptName
|
|
456
|
+
);
|
|
457
|
+
return response.once(
|
|
458
|
+
context.status(200),
|
|
459
|
+
context.json({
|
|
460
|
+
success: true,
|
|
461
|
+
errors: [],
|
|
462
|
+
messages: [],
|
|
463
|
+
result: {},
|
|
464
|
+
})
|
|
465
|
+
);
|
|
466
|
+
})
|
|
467
|
+
);
|
|
468
|
+
|
|
469
|
+
return requests;
|
|
390
470
|
}
|
|
391
471
|
|
|
392
472
|
it("should show the correct help text", async () => {
|
|
@@ -410,8 +490,10 @@ describe("wrangler", () => {
|
|
|
410
490
|
});
|
|
411
491
|
|
|
412
492
|
it("should delete a consumer with no --env", async () => {
|
|
413
|
-
mockDeleteRequest("testQueue", "testScript");
|
|
493
|
+
const requests = mockDeleteRequest("testQueue", "testScript");
|
|
414
494
|
await runWrangler("queues consumer remove testQueue testScript");
|
|
495
|
+
|
|
496
|
+
expect(requests.count).toEqual(1);
|
|
415
497
|
expect(std.out).toMatchInlineSnapshot(`
|
|
416
498
|
"Removing consumer from queue testQueue.
|
|
417
499
|
Removed consumer from queue testQueue."
|
|
@@ -419,10 +501,16 @@ describe("wrangler", () => {
|
|
|
419
501
|
});
|
|
420
502
|
|
|
421
503
|
it("should delete a consumer with --env", async () => {
|
|
422
|
-
mockDeleteRequest(
|
|
504
|
+
const requests = mockDeleteRequest(
|
|
505
|
+
"testQueue",
|
|
506
|
+
"testScript",
|
|
507
|
+
"myEnv"
|
|
508
|
+
);
|
|
423
509
|
await runWrangler(
|
|
424
510
|
"queues consumer remove testQueue testScript --env myEnv"
|
|
425
511
|
);
|
|
512
|
+
|
|
513
|
+
expect(requests.count).toEqual(1);
|
|
426
514
|
expect(std.out).toMatchInlineSnapshot(`
|
|
427
515
|
"Removing consumer from queue testQueue.
|
|
428
516
|
Removed consumer from queue testQueue."
|