Skip to content

Commit a56dc9f

Browse files
committed
test(functions, ios)!: disable custom HttpsError testing
This was a regression between firebase-ios-sdk < v9 and >= v9.1.0 can revert with firebase-ios-sdk > 9.1.0 - firebase/firebase-ios-sdk#9862 BREAKING CHANGE: if your firebase functions return custom HttpsError instances, you must not upgrade yet, custom errors suffered a regression in firebase-ios-sdk 9.0.0 and 9.1.0. The next firebase-ios-sdk release fixes this regression, at which point you may safely use this release in combination with overriding the firebase-ios-sdk version in your Podfile
1 parent 93aeed7 commit a56dc9f

File tree

1 file changed

+127
-112
lines changed

1 file changed

+127
-112
lines changed

packages/functions/e2e/functions.e2e.js

Lines changed: 127 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -173,130 +173,145 @@ describe('functions()', function () {
173173

174174
describe('HttpsError', function () {
175175
it('errors return instance of HttpsError', async function () {
176-
const functionRunner = firebase.functions().httpsCallable('testFunctionDefaultRegion');
176+
if (device.getPlatform() !== 'ios') {
177+
const functionRunner = firebase.functions().httpsCallable('testFunctionDefaultRegion');
178+
179+
try {
180+
await functionRunner({});
181+
return Promise.reject(new Error('Function did not reject with error.'));
182+
} catch (e) {
183+
should.equal(e.details, null);
184+
e.code.should.equal('invalid-argument');
185+
e.message.should.equal('Invalid test requested.');
186+
}
177187

178-
try {
179-
await functionRunner({});
180-
return Promise.reject(new Error('Function did not reject with error.'));
181-
} catch (e) {
182-
should.equal(e.details, null);
183-
e.code.should.equal('invalid-argument');
184-
e.message.should.equal('Invalid test requested.');
188+
return Promise.resolve();
189+
} else {
190+
// TODO waiting on firebase-ios-sdk > 9.1.0 - https://github.com/firebase/firebase-ios-sdk/pull/9862
191+
this.skip();
185192
}
186-
187-
return Promise.resolve();
188193
});
189194

190195
it('HttpsError.details -> allows returning complex data', async function () {
191-
let type = 'deepObject';
192-
let inputData = SAMPLE_DATA[type];
193-
const functionRunner = firebase.functions().httpsCallable('testFunctionDefaultRegion');
194-
try {
195-
await functionRunner({
196-
type,
197-
inputData,
198-
asError: true,
199-
});
200-
return Promise.reject(new Error('Function did not reject with error.'));
201-
} catch (e) {
202-
should.deepEqual(e.details, inputData);
203-
e.code.should.equal('cancelled');
204-
e.message.should.equal(
205-
'Response data was requested to be sent as part of an Error payload, so here we are!',
206-
);
207-
}
196+
if (device.getPlatform() !== 'ios') {
197+
let type = 'deepObject';
198+
let inputData = SAMPLE_DATA[type];
199+
const functionRunner = firebase.functions().httpsCallable('testFunctionDefaultRegion');
200+
try {
201+
await functionRunner({
202+
type,
203+
inputData,
204+
asError: true,
205+
});
206+
return Promise.reject(new Error('Function did not reject with error.'));
207+
} catch (e) {
208+
should.deepEqual(e.details, inputData);
209+
e.code.should.equal('cancelled');
210+
e.message.should.equal(
211+
'Response data was requested to be sent as part of an Error payload, so here we are!',
212+
);
213+
}
214+
215+
type = 'deepArray';
216+
inputData = SAMPLE_DATA[type];
217+
try {
218+
await functionRunner({
219+
type,
220+
inputData,
221+
asError: true,
222+
});
223+
return Promise.reject(new Error('Function did not reject with error.'));
224+
} catch (e) {
225+
should.deepEqual(e.details, inputData);
226+
e.code.should.equal('cancelled');
227+
e.message.should.equal(
228+
'Response data was requested to be sent as part of an Error payload, so here we are!',
229+
);
230+
}
208231

209-
type = 'deepArray';
210-
inputData = SAMPLE_DATA[type];
211-
try {
212-
await functionRunner({
213-
type,
214-
inputData,
215-
asError: true,
216-
});
217-
return Promise.reject(new Error('Function did not reject with error.'));
218-
} catch (e) {
219-
should.deepEqual(e.details, inputData);
220-
e.code.should.equal('cancelled');
221-
e.message.should.equal(
222-
'Response data was requested to be sent as part of an Error payload, so here we are!',
223-
);
232+
return Promise.resolve();
233+
} else {
234+
// TODO waiting on firebase-ios-sdk > 9.1.0 - https://github.com/firebase/firebase-ios-sdk/pull/9862
235+
this.skip();
224236
}
225-
226-
return Promise.resolve();
227237
});
228238

229239
it('HttpsError.details -> allows returning primitives', async function () {
230-
let type = 'number';
231-
let inputData = SAMPLE_DATA[type];
232-
const functionRunner = firebase.functions().httpsCallable('testFunctionDefaultRegion');
233-
try {
234-
await functionRunner({
235-
type,
236-
inputData,
237-
asError: true,
238-
});
239-
return Promise.reject(new Error('Function did not reject with error.'));
240-
} catch (e) {
241-
e.code.should.equal('cancelled');
242-
e.message.should.equal(
243-
'Response data was requested to be sent as part of an Error payload, so here we are!',
244-
);
245-
should.deepEqual(e.details, inputData);
246-
}
247-
248-
type = 'string';
249-
inputData = SAMPLE_DATA[type];
250-
try {
251-
await functionRunner({
252-
type,
253-
inputData,
254-
asError: true,
255-
});
256-
return Promise.reject(new Error('Function did not reject with error.'));
257-
} catch (e) {
258-
should.deepEqual(e.details, inputData);
259-
e.code.should.equal('cancelled');
260-
e.message.should.equal(
261-
'Response data was requested to be sent as part of an Error payload, so here we are!',
262-
);
263-
}
240+
if (device.getPlatform() !== 'ios') {
241+
let type = 'number';
242+
let inputData = SAMPLE_DATA[type];
243+
const functionRunner = firebase.functions().httpsCallable('testFunctionDefaultRegion');
244+
try {
245+
await functionRunner({
246+
type,
247+
inputData,
248+
asError: true,
249+
});
250+
return Promise.reject(new Error('Function did not reject with error.'));
251+
} catch (e) {
252+
e.code.should.equal('cancelled');
253+
e.message.should.equal(
254+
'Response data was requested to be sent as part of an Error payload, so here we are!',
255+
);
256+
should.deepEqual(e.details, inputData);
257+
}
258+
259+
type = 'string';
260+
inputData = SAMPLE_DATA[type];
261+
try {
262+
await functionRunner({
263+
type,
264+
inputData,
265+
asError: true,
266+
});
267+
return Promise.reject(new Error('Function did not reject with error.'));
268+
} catch (e) {
269+
should.deepEqual(e.details, inputData);
270+
e.code.should.equal('cancelled');
271+
e.message.should.equal(
272+
'Response data was requested to be sent as part of an Error payload, so here we are!',
273+
);
274+
}
275+
276+
type = 'boolean';
277+
inputData = SAMPLE_DATA[type];
278+
try {
279+
await functionRunner({
280+
type,
281+
inputData,
282+
asError: true,
283+
});
284+
return Promise.reject(new Error('Function did not reject with error.'));
285+
} catch (e) {
286+
should.deepEqual(e.details, inputData);
287+
e.code.should.equal('cancelled');
288+
e.message.should.equal(
289+
'Response data was requested to be sent as part of an Error payload, so here we are!',
290+
);
291+
}
292+
293+
type = 'null';
294+
inputData = SAMPLE_DATA[type];
295+
try {
296+
await functionRunner({
297+
type,
298+
inputData,
299+
asError: true,
300+
});
301+
return Promise.reject(new Error('Function did not reject with error.'));
302+
} catch (e) {
303+
should.deepEqual(e.details, inputData);
304+
e.code.should.equal('cancelled');
305+
e.message.should.equal(
306+
'Response data was requested to be sent as part of an Error payload, so here we are!',
307+
);
308+
}
264309

265-
type = 'boolean';
266-
inputData = SAMPLE_DATA[type];
267-
try {
268-
await functionRunner({
269-
type,
270-
inputData,
271-
asError: true,
272-
});
273-
return Promise.reject(new Error('Function did not reject with error.'));
274-
} catch (e) {
275-
should.deepEqual(e.details, inputData);
276-
e.code.should.equal('cancelled');
277-
e.message.should.equal(
278-
'Response data was requested to be sent as part of an Error payload, so here we are!',
279-
);
280-
}
281-
282-
type = 'null';
283-
inputData = SAMPLE_DATA[type];
284-
try {
285-
await functionRunner({
286-
type,
287-
inputData,
288-
asError: true,
289-
});
290-
return Promise.reject(new Error('Function did not reject with error.'));
291-
} catch (e) {
292-
should.deepEqual(e.details, inputData);
293-
e.code.should.equal('cancelled');
294-
e.message.should.equal(
295-
'Response data was requested to be sent as part of an Error payload, so here we are!',
296-
);
310+
return Promise.resolve();
311+
} else {
312+
// TODO waiting on firebase-ios-sdk > 9.1.0 - https://github.com/firebase/firebase-ios-sdk/pull/9862
313+
this.skip();
297314
}
298-
299-
return Promise.resolve();
300315
});
301316

302317
it('HttpsCallableOptions.timeout will error when timeout is exceeded', async function () {

0 commit comments

Comments
 (0)