Skip to content

Commit 9ce4754

Browse files
seungsoo47claude
andauthored
[firebase_core] Add integration tests (#1060)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 3756c24 commit 9ce4754

7 files changed

Lines changed: 140 additions & 6 deletions

File tree

packages/firebase_core/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## NEXT
22

3+
* Add integration tests based on upstream firebase_core v2.17.0.
34
* Update minimum Flutter and Dart version to 3.13 and 3.1.
45
* Fix new lint warnings.
56
* Update code format.
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
// Copyright 2026 Samsung Electronics Co., Ltd. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
// Integration tests ported from upstream firebase_core v2.17.0:
6+
// https://github.com/firebase/flutterfire/blob/firebase_core-v2.17.0/tests/integration_test/firebase_core/firebase_core_e2e_test.dart
7+
// Originally authored by the Chromium project authors under a BSD-style
8+
// license.
9+
10+
import 'package:firebase_core/firebase_core.dart';
11+
import 'package:firebase_core_platform_interface/firebase_core_platform_interface.dart';
12+
import 'package:firebase_core_tizen_example/firebase_options.dart';
13+
import 'package:flutter/foundation.dart';
14+
import 'package:flutter_test/flutter_test.dart';
15+
import 'package:integration_test/integration_test.dart';
16+
17+
void main() {
18+
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
19+
20+
group('firebase_core', () {
21+
const String testAppName = '[DEFAULT]';
22+
23+
setUpAll(() async {
24+
await Firebase.initializeApp(
25+
options: DefaultFirebaseOptions.currentPlatform,
26+
);
27+
});
28+
29+
test('Firebase.apps', () async {
30+
final List<FirebaseApp> apps = Firebase.apps;
31+
expect(apps.length, 1);
32+
expect(apps[0].name, testAppName);
33+
expect(apps[0].options, DefaultFirebaseOptions.currentPlatform);
34+
});
35+
36+
test('Firebase.app()', () async {
37+
final FirebaseApp app = Firebase.app();
38+
expect(app.name, testAppName);
39+
expect(app.options, DefaultFirebaseOptions.currentPlatform);
40+
});
41+
42+
test('Firebase.app() Exception', () async {
43+
expect(
44+
() => Firebase.app('NoApp'),
45+
throwsA(noAppExists('NoApp')),
46+
);
47+
});
48+
49+
test(
50+
'FirebaseApp.delete()',
51+
() async {
52+
await Firebase.initializeApp(
53+
name: 'SecondaryApp',
54+
options: DefaultFirebaseOptions.currentPlatform,
55+
);
56+
57+
expect(Firebase.apps.length, 2);
58+
59+
final FirebaseApp app = Firebase.app('SecondaryApp');
60+
61+
await app.delete();
62+
63+
expect(Firebase.apps.length, 1);
64+
// TODO(russellwheatley): test randomly causes an auth sign-in failure due to duplicate accounts.
65+
},
66+
skip: TargetPlatform.android == defaultTargetPlatform,
67+
);
68+
69+
test('FirebaseApp.setAutomaticDataCollectionEnabled()', () async {
70+
final FirebaseApp app = Firebase.app();
71+
await app.setAutomaticDataCollectionEnabled(false);
72+
73+
expect(app.isAutomaticDataCollectionEnabled, false);
74+
75+
await app.setAutomaticDataCollectionEnabled(true);
76+
77+
expect(app.isAutomaticDataCollectionEnabled, true);
78+
});
79+
80+
test('FirebaseApp.setAutomaticResourceManagementEnabled()', () async {
81+
final FirebaseApp app = Firebase.app();
82+
83+
await app.setAutomaticResourceManagementEnabled(true);
84+
});
85+
});
86+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright 2026 Samsung Electronics Co., Ltd. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members, no_default_cases, public_member_api_docs
6+
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
7+
import 'package:flutter/foundation.dart'
8+
show TargetPlatform, defaultTargetPlatform, kIsWeb;
9+
10+
class DefaultFirebaseOptions {
11+
static FirebaseOptions get currentPlatform {
12+
if (kIsWeb) {
13+
throw UnsupportedError('Web is not supported.');
14+
}
15+
switch (defaultTargetPlatform) {
16+
case TargetPlatform.linux: // Tizen reports as TargetPlatform.linux
17+
return linux;
18+
default:
19+
throw UnsupportedError(
20+
'DefaultFirebaseOptions are not supported for this platform.',
21+
);
22+
}
23+
}
24+
25+
static const FirebaseOptions linux = FirebaseOptions(
26+
apiKey: 'AIzaSyAgUhHU8wSJgO5MVNy95tMT07NEjzMOfz0',
27+
appId: '1:448618578101:ios:0b650370bb29e29cac3efc',
28+
messagingSenderId: '448618578101',
29+
projectId: 'react-native-firebase-testing',
30+
);
31+
}

packages/firebase_core/example/lib/main.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,16 @@ import 'dart:developer';
99
import 'package:firebase_core/firebase_core.dart';
1010
import 'package:flutter/material.dart';
1111

12+
import 'firebase_options.dart';
13+
1214
void main() => runApp(const MyApp());
1315

1416
class MyApp extends StatelessWidget {
1517
const MyApp({super.key});
1618

1719
String get name => 'foo';
1820

19-
FirebaseOptions get firebaseOptions => const FirebaseOptions(
20-
appId: '1:448618578101:ios:0b650370bb29e29cac3efc',
21-
apiKey: 'AIzaSyAgUhHU8wSJgO5MVNy95tMT07NEjzMOfz0',
22-
projectId: 'react-native-firebase-testing',
23-
messagingSenderId: '448618578101',
24-
);
21+
FirebaseOptions get firebaseOptions => DefaultFirebaseOptions.currentPlatform;
2522

2623
Future<void> initializeDefault() async {
2724
final FirebaseApp app = await Firebase.initializeApp(

packages/firebase_core/example/pubspec.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,14 @@ dependencies:
1212
path: ../
1313
flutter:
1414
sdk: flutter
15+
16+
dev_dependencies:
17+
firebase_core_platform_interface: ^4.5.2
18+
flutter_driver:
19+
sdk: flutter
20+
flutter_test:
21+
sdk: flutter
22+
integration_test:
23+
sdk: flutter
24+
integration_test_tizen:
25+
path: ../../integration_test/
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'package:integration_test/integration_test_driver.dart';
6+
7+
Future<void> main() => integrationDriver();

packages/firebase_core/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ flutter:
2222

2323
false_secrets:
2424
- /example/lib/main.dart
25+
- /example/lib/firebase_options.dart

0 commit comments

Comments
 (0)