Skip to content

Commit 4ce7d7c

Browse files
committed
Revert unintended changes to integration tests.
1 parent 815385c commit 4ce7d7c

File tree

13 files changed

+64
-22
lines changed

13 files changed

+64
-22
lines changed

integration_test/functions/src/index.ts

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { PubSub } from "@google-cloud/pubsub";
2+
import { GoogleAuth } from "google-auth-library";
23
import { Request, Response } from "express";
34
import * as admin from "firebase-admin";
4-
import * as functions from "firebase-functions/v1";
5+
import * as functions from "firebase-functions";
56
import * as fs from "fs";
67
import fetch from "node-fetch";
78

@@ -19,17 +20,55 @@ import * as testLab from "./v1/testLab-utils";
1920
const firebaseConfig = JSON.parse(process.env.FIREBASE_CONFIG);
2021
admin.initializeApp();
2122

23+
// Re-enable no-unused-var check once callable functions are testable again.
24+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
2225
async function callHttpsTrigger(name: string, data: any) {
2326
const url = `https://${REGION}-${firebaseConfig.projectId}.cloudfunctions.net/${name}`;
24-
const resp = await fetch(url, {
27+
const client = await new GoogleAuth().getIdTokenClient("32555940559.apps.googleusercontent.com");
28+
const resp = await client.request({
29+
url,
2530
method: "POST",
2631
headers: {
2732
"Content-Type": "application/json",
2833
},
2934
body: JSON.stringify({ data }),
3035
});
31-
if (!resp.ok) {
32-
throw new Error(`Failed request with status ${resp.status}!`);
36+
if (resp.status > 200) {
37+
throw Error(resp.statusText);
38+
}
39+
}
40+
41+
// Re-enable no-unused-var check once callable functions are testable again.
42+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
43+
async function callV2HttpsTrigger(name: string, data: any, accessToken: string) {
44+
const getFnResp = await fetch(
45+
`https://cloudfunctions.googleapis.com/v2beta/projects/${firebaseConfig.projectId}/locations/${REGION}/functions/${name}`,
46+
{
47+
headers: {
48+
Authorization: `Bearer ${accessToken}`,
49+
},
50+
}
51+
);
52+
if (!getFnResp.ok) {
53+
throw new Error(getFnResp.statusText);
54+
}
55+
const fn = await getFnResp.json();
56+
const uri = fn.serviceConfig?.uri;
57+
if (!uri) {
58+
throw new Error(`Cannot call v2 https trigger ${name} - no uri found`);
59+
}
60+
61+
const client = await new GoogleAuth().getIdTokenClient("32555940559.apps.googleusercontent.com");
62+
const invokeFnREsp = await client.request({
63+
url: uri,
64+
method: "POST",
65+
headers: {
66+
"Content-Type": "application/json",
67+
},
68+
body: JSON.stringify({ data }),
69+
});
70+
if (invokeFnREsp.status > 200) {
71+
throw Error(invokeFnREsp.statusText);
3372
}
3473
}
3574

@@ -111,7 +150,8 @@ function v1Tests(testId: string, accessToken: string): Array<Promise<unknown>> {
111150
// A firestore write to trigger the Cloud Firestore tests.
112151
admin.firestore().collection("tests").doc(testId).set({ test: testId }),
113152
// Invoke a callable HTTPS trigger.
114-
callHttpsTrigger("v1-callableTests", { foo: "bar", testId }),
153+
// TODO: Temporarily disable - doesn't work unless running on projects w/ permission to create public functions.
154+
// callHttpsTrigger("v1-callableTests", { foo: "bar", testId }),
115155
// A Remote Config update to trigger the Remote Config tests.
116156
updateRemoteConfig(testId, accessToken),
117157
// A storage upload to trigger the Storage tests
@@ -129,7 +169,8 @@ function v1Tests(testId: string, accessToken: string): Array<Promise<unknown>> {
129169
function v2Tests(testId: string, accessToken: string): Array<Promise<void>> {
130170
return [
131171
// Invoke a callable HTTPS trigger.
132-
callHttpsTrigger("v2-callabletests", { foo: "bar", testId }),
172+
// TODO: Temporarily disable - doesn't work unless running on projects w/ permission to create public functions.
173+
// callV2HttpsTrigger("v2-callabletests", { foo: "bar", testId }, accessToken),
133174
// Invoke a scheduled trigger.
134175
callV2ScheduleTrigger("v2-schedule", "us-central1", accessToken),
135176
];

integration_test/functions/src/testing.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as firebase from "firebase-admin";
2-
import * as functions from "firebase-functions/v1";
2+
import * as functions from "firebase-functions";
33

44
export type TestCase<T> = (data: T, context?: functions.EventContext) => any;
55
export interface TestCaseMap<T> {

integration_test/functions/src/v1/auth-tests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as admin from "firebase-admin";
2-
import * as functions from "firebase-functions/v1";
2+
import * as functions from "firebase-functions";
33
import { REGION } from "../region";
44
import { expectEq, TestSuite } from "../testing";
55
import UserMetadata = admin.auth.UserRecord;

integration_test/functions/src/v1/database-tests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as admin from "firebase-admin";
2-
import * as functions from "firebase-functions/v1";
2+
import * as functions from "firebase-functions";
33
import { REGION } from "../region";
44
import { expectEq, expectMatches, TestSuite } from "../testing";
55
import DataSnapshot = admin.database.DataSnapshot;

integration_test/functions/src/v1/firestore-tests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as admin from "firebase-admin";
2-
import * as functions from "firebase-functions/v1";
2+
import * as functions from "firebase-functions";
33
import { REGION } from "../region";
44
import { expectDeepEq, expectEq, TestSuite } from "../testing";
55
import DocumentSnapshot = admin.firestore.DocumentSnapshot;

integration_test/functions/src/v1/https-tests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as functions from "firebase-functions/v1";
1+
import * as functions from "firebase-functions";
22
import { REGION } from "../region";
33
import { expectEq, TestSuite } from "../testing";
44

integration_test/functions/src/v1/index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ export * from "./pubsub-tests";
22
export * from "./database-tests";
33
export * from "./auth-tests";
44
export * from "./firestore-tests";
5-
export * from "./https-tests";
6-
// export * from "./remoteConfig-tests";
5+
// Temporarily disable http test - will not work unless running on projects w/ permission to create public functions.
6+
// export * from "./https-tests";
7+
export * from "./remoteConfig-tests";
78
export * from "./storage-tests";
8-
// export * from "./testLab-tests";
9+
export * from "./testLab-tests";

integration_test/functions/src/v1/pubsub-tests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as admin from "firebase-admin";
2-
import * as functions from "firebase-functions/v1";
2+
import * as functions from "firebase-functions";
33
import { REGION } from "../region";
44
import { evaluate, expectEq, success, TestSuite } from "../testing";
55
import PubsubMessage = functions.pubsub.Message;

integration_test/functions/src/v1/remoteConfig-tests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as functions from "firebase-functions/v1";
1+
import * as functions from "firebase-functions";
22
import { REGION } from "../region";
33
import { expectEq, TestSuite } from "../testing";
44
import TemplateVersion = functions.remoteConfig.TemplateVersion;

integration_test/functions/src/v1/storage-tests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as functions from "firebase-functions/v1";
1+
import * as functions from "firebase-functions";
22
import { REGION } from "../region";
33
import { expectEq, TestSuite } from "../testing";
44
import ObjectMetadata = functions.storage.ObjectMetadata;

0 commit comments

Comments
 (0)