Skip to content

Commit b903593

Browse files
inlinedTheIronDev
authored andcommitted
Remove __trigger
1 parent 5c038e6 commit b903593

26 files changed

+2679
-283
lines changed

spec/v1/cloud-functions.spec.ts

Lines changed: 117 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import { expect } from "chai";
2424

2525
import {
26+
Change,
2627
Event,
2728
EventContext,
2829
makeCloudFunction,
@@ -41,7 +42,7 @@ describe("makeCloudFunction", () => {
4142
legacyEventType: "providers/provider/eventTypes/event",
4243
};
4344

44-
it("should put a __endpoint on the returned CloudFunction", () => {
45+
it('should put a __trigger/__endpoint on the returned CloudFunction', () => {
4546
const cf = makeCloudFunction({
4647
provider: "mock.provider",
4748
eventType: "mock.event",
@@ -50,6 +51,14 @@ describe("makeCloudFunction", () => {
5051
handler: () => null,
5152
});
5253

54+
expect(cf.__trigger).to.deep.equal({
55+
eventTrigger: {
56+
eventType: 'mock.provider.mock.event',
57+
resource: 'resource',
58+
service: 'service',
59+
},
60+
});
61+
5362
expect(cf.__endpoint).to.deep.equal({
5463
...MINIMAL_V1_ENDPOINT,
5564
platform: "gcfv1",
@@ -64,9 +73,17 @@ describe("makeCloudFunction", () => {
6473
});
6574
});
6675

67-
it("should have legacy event type in __endpoint if provided", () => {
76+
it('should have legacy event type in __trigger/__endpoint if provided', () => {
6877
const cf = makeCloudFunction(cloudFunctionArgs);
6978

79+
expect(cf.__trigger).to.deep.equal({
80+
eventTrigger: {
81+
eventType: 'providers/provider/eventTypes/event',
82+
resource: 'resource',
83+
service: 'service',
84+
},
85+
});
86+
7087
expect(cf.__endpoint).to.deep.equal({
7188
...MINIMAL_V1_ENDPOINT,
7289
platform: "gcfv1",
@@ -339,10 +356,106 @@ describe("makeAuth and makeAuthType", () => {
339356
auth: {
340357
uid: "user",
341358
token: {
342-
sub: "user",
359+
sub: 'user',
343360
},
344361
},
345-
authType: "USER",
362+
authType: 'USER',
363+
});
364+
});
365+
});
366+
367+
describe('Change', () => {
368+
describe('applyFieldMask', () => {
369+
const after = {
370+
foo: 'bar',
371+
num: 2,
372+
obj: {
373+
a: 1,
374+
b: 2,
375+
},
376+
};
377+
378+
it('should handle deleted values', () => {
379+
const sparseBefore = { baz: 'qux' };
380+
const fieldMask = 'baz';
381+
expect(
382+
Change.applyFieldMask(sparseBefore, after, fieldMask)
383+
).to.deep.equal({
384+
foo: 'bar',
385+
num: 2,
386+
obj: {
387+
a: 1,
388+
b: 2,
389+
},
390+
baz: 'qux',
391+
});
392+
});
393+
394+
it('should handle created values', () => {
395+
const sparseBefore = {};
396+
const fieldMask = 'num,obj.a';
397+
expect(
398+
Change.applyFieldMask(sparseBefore, after, fieldMask)
399+
).to.deep.equal({
400+
foo: 'bar',
401+
obj: {
402+
b: 2,
403+
},
404+
});
405+
});
406+
407+
it('should handle mutated values', () => {
408+
const sparseBefore = {
409+
num: 3,
410+
obj: {
411+
a: 3,
412+
},
413+
};
414+
const fieldMask = 'num,obj.a';
415+
expect(
416+
Change.applyFieldMask(sparseBefore, after, fieldMask)
417+
).to.deep.equal({
418+
foo: 'bar',
419+
num: 3,
420+
obj: {
421+
a: 3,
422+
b: 2,
423+
},
424+
});
425+
});
426+
});
427+
428+
describe('fromJSON', () => {
429+
it('should create a Change object with a `before` and `after`', () => {
430+
const created = Change.fromJSON<any>({
431+
before: { foo: 'bar' },
432+
after: { foo: 'faz' },
433+
});
434+
expect(created instanceof Change).to.equal(true);
435+
expect(created.before).to.deep.equal({ foo: 'bar' });
436+
expect(created.after).to.deep.equal({ foo: 'faz' });
437+
});
438+
439+
it('should apply the customizer function to `before` and `after`', () => {
440+
function customizer<T>(input: any) {
441+
_.set(input, 'another', 'value');
442+
return input as T;
443+
}
444+
const created = Change.fromJSON<object>(
445+
{
446+
before: { foo: 'bar' },
447+
after: { foo: 'faz' },
448+
},
449+
customizer
450+
);
451+
expect(created.before).to.deep.equal({
452+
foo: 'bar',
453+
another: 'value',
454+
});
455+
expect(created.after).to.deep.equal({
456+
foo: 'faz',
457+
another: 'value',
458+
});
346459
});
347460
});
348461
});

spec/v1/function-builder.spec.ts

Lines changed: 37 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ describe("FunctionBuilder", () => {
4141
.auth.user()
4242
.onCreate((user) => user);
4343

44-
expect(fn.__endpoint.region).to.deep.equal(["us-east1"]);
44+
expect(fn.__trigger.regions).to.deep.equal(['us-east1']);
4545
});
4646

4747
it("should allow multiple supported regions to be set", () => {
@@ -50,7 +50,7 @@ describe("FunctionBuilder", () => {
5050
.auth.user()
5151
.onCreate((user) => user);
5252

53-
expect(fn.__endpoint.region).to.deep.equal(["us-east1", "us-central1"]);
53+
expect(fn.__trigger.regions).to.deep.equal(['us-east1', 'us-central1']);
5454
});
5555

5656
it("should allow all supported regions to be set", () => {
@@ -68,15 +68,15 @@ describe("FunctionBuilder", () => {
6868
.auth.user()
6969
.onCreate((user) => user);
7070

71-
expect(fn.__endpoint.region).to.deep.equal([
72-
"us-central1",
73-
"us-east1",
74-
"us-east4",
75-
"europe-west1",
76-
"europe-west2",
77-
"europe-west3",
78-
"asia-east2",
79-
"asia-northeast1",
71+
expect(fn.__trigger.regions).to.deep.equal([
72+
'us-central1',
73+
'us-east1',
74+
'us-east4',
75+
'europe-west1',
76+
'europe-west2',
77+
'europe-west3',
78+
'asia-east2',
79+
'asia-northeast1',
8080
]);
8181
});
8282

@@ -104,13 +104,9 @@ describe("FunctionBuilder", () => {
104104
.auth.user()
105105
.onCreate((user) => user);
106106

107-
expect(fn.__endpoint.secretEnvironmentVariables).to.deep.equal([
108-
{
109-
key: "API_KEY",
110-
},
111-
]);
112-
113-
clearParams();
107+
expect(fn.__trigger.availableMemoryMb).to.deep.equal(256);
108+
expect(fn.__trigger.timeout).to.deep.equal('90s');
109+
expect(fn.__trigger.failurePolicy).to.deep.equal({ retry: {} });
114110
});
115111

116112
it("should apply a default failure policy if it's aliased with `true`", () => {
@@ -136,9 +132,9 @@ describe("FunctionBuilder", () => {
136132
.auth.user()
137133
.onCreate((user) => user);
138134

139-
expect(fn.__endpoint.region).to.deep.equal(["europe-west2"]);
140-
expect(fn.__endpoint.availableMemoryMb).to.deep.equal(256);
141-
expect(fn.__endpoint.timeoutSeconds).to.deep.equal(90);
135+
expect(fn.__trigger.regions).to.deep.equal(['europe-west2']);
136+
expect(fn.__trigger.availableMemoryMb).to.deep.equal(256);
137+
expect(fn.__trigger.timeout).to.deep.equal('90s');
142138
});
143139

144140
it("should allow both valid runtime options and supported region to be set in reverse order", () => {
@@ -151,9 +147,9 @@ describe("FunctionBuilder", () => {
151147
.auth.user()
152148
.onCreate((user) => user);
153149

154-
expect(fn.__endpoint.region).to.deep.equal(["europe-west1"]);
155-
expect(fn.__endpoint.availableMemoryMb).to.deep.equal(256);
156-
expect(fn.__endpoint.timeoutSeconds).to.deep.equal(90);
150+
expect(fn.__trigger.regions).to.deep.equal(['europe-west1']);
151+
expect(fn.__trigger.availableMemoryMb).to.deep.equal(256);
152+
expect(fn.__trigger.timeout).to.deep.equal('90s');
157153
});
158154

159155
it("should fail if supported region but invalid runtime options are set (reverse order)", () => {
@@ -223,7 +219,7 @@ describe("FunctionBuilder", () => {
223219
.runWith({ ingressSettings: "ALLOW_INTERNAL_ONLY" })
224220
.https.onRequest(() => undefined);
225221

226-
expect(fn.__endpoint.ingressSettings).to.equal("ALLOW_INTERNAL_ONLY");
222+
expect(fn.__trigger.ingressSettings).to.equal('ALLOW_INTERNAL_ONLY');
227223
});
228224

229225
it("should throw an error if user chooses an invalid ingressSettings", () => {
@@ -245,11 +241,7 @@ describe("FunctionBuilder", () => {
245241
.auth.user()
246242
.onCreate((user) => user);
247243

248-
if (!(fn.__endpoint.vpc instanceof ResetValue)) {
249-
expect(fn.__endpoint.vpc.connector).to.equal("test-connector");
250-
} else {
251-
expect.fail("__endpoint.vpc unexpectedly set to RESET_VALUE");
252-
}
244+
expect(fn.__trigger.vpcConnector).to.equal('test-connector');
253245
});
254246

255247
it("should allow a vpcConnectorEgressSettings to be set", () => {
@@ -261,11 +253,9 @@ describe("FunctionBuilder", () => {
261253
.auth.user()
262254
.onCreate((user) => user);
263255

264-
if (!(fn.__endpoint.vpc instanceof ResetValue)) {
265-
expect(fn.__endpoint.vpc.egressSettings).to.equal("PRIVATE_RANGES_ONLY");
266-
} else {
267-
expect.fail("__endpoint.vpc unexpectedly set to RESET_VALUE");
268-
}
256+
expect(fn.__trigger.vpcConnectorEgressSettings).to.equal(
257+
'PRIVATE_RANGES_ONLY'
258+
);
269259
});
270260

271261
it("should throw an error if user chooses an invalid vpcConnectorEgressSettings", () => {
@@ -294,16 +284,19 @@ describe("FunctionBuilder", () => {
294284
expect(fn.__endpoint.serviceAccountEmail).to.equal(serviceAccount);
295285
});
296286

297-
it("should allow a serviceAccount to be set with generated service account email", () => {
298-
const serviceAccount = "test-service-account@";
287+
it('should allow a serviceAccount to be set with generated service account email', () => {
288+
const serviceAccount = 'test-service-account@';
289+
const projectId = process.env.GCLOUD_PROJECT;
299290
const fn = functions
300291
.runWith({
301292
serviceAccount,
302293
})
303294
.auth.user()
304295
.onCreate((user) => user);
305296

306-
expect(fn.__endpoint.serviceAccountEmail).to.equal(`test-service-account@`);
297+
expect(fn.__trigger.serviceAccountEmail).to.equal(
298+
`test-service-account@${projectId}.iam.gserviceaccount.com`
299+
);
307300
});
308301

309302
it("should set a null serviceAccountEmail if service account is set to `default`", () => {
@@ -315,7 +308,7 @@ describe("FunctionBuilder", () => {
315308
.auth.user()
316309
.onCreate((user) => user);
317310

318-
expect(fn.__endpoint.serviceAccountEmail).to.equal("default");
311+
expect(fn.__trigger.serviceAccountEmail).to.be.null;
319312
});
320313

321314
it("should throw an error if serviceAccount is set to an invalid value", () => {
@@ -349,8 +342,8 @@ describe("FunctionBuilder", () => {
349342
.auth.user()
350343
.onCreate((user) => user);
351344

352-
expect(fn.__endpoint.labels).to.deep.equal({
353-
"valid-key": "valid-value",
345+
expect(fn.__trigger.labels).to.deep.equal({
346+
'valid-key': 'valid-value',
354347
});
355348
});
356349

@@ -504,11 +497,7 @@ describe("FunctionBuilder", () => {
504497
.auth.user()
505498
.onCreate((user) => user);
506499

507-
expect(fn.__endpoint.secretEnvironmentVariables).to.deep.equal([
508-
{
509-
key: "API_KEY",
510-
},
511-
]);
500+
expect(fn.__trigger.secrets).to.deep.equal(secrets);
512501
});
513502

514503
it("should throw error given secrets expressed with full resource name", () => {
@@ -519,7 +508,9 @@ describe("FunctionBuilder", () => {
519508
secrets: ["projects/my-project/secrets/API_KEY"],
520509
})
521510
).to.throw();
511+
});
522512

513+
it('should throw error given invalid secret config', () => {
523514
expect(() =>
524515
functions.runWith({
525516
secrets: [sp],

0 commit comments

Comments
 (0)