Skip to content

Commit 6801944

Browse files
packageInfo: add fallback logic test for appBundleId
add test for falling back to default value incase packageInfo is null
1 parent 28b3536 commit 6801944

File tree

7 files changed

+35
-7
lines changed

7 files changed

+35
-7
lines changed

lib/model/binding.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,12 @@ class LinuxDeviceInfo implements BaseDeviceInfo {
303303
class PackageInfo {
304304
final String version;
305305
final String buildNumber;
306+
final String packageName;
306307

307308
const PackageInfo({
308309
required this.version,
309310
required this.buildNumber,
311+
required this.packageName,
310312
});
311313
}
312314

@@ -411,6 +413,7 @@ class LiveZulipBinding extends ZulipBinding {
411413
_syncPackageInfo = PackageInfo(
412414
version: info.version,
413415
buildNumber: info.buildNumber,
416+
packageName: info.packageName,
414417
);
415418
} catch (e, st) {
416419
assert(debugLog('Failed to prefetch package info: $e\n$st')); // TODO(log)

lib/notifications/receive.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,7 @@ class NotificationService {
149149
await addFcmToken(connection, token: token);
150150

151151
case TargetPlatform.iOS:
152-
const appBundleId = 'com.zulip.flutter'; // TODO(#407) find actual value live
153-
await addApnsToken(connection, token: token, appid: appBundleId);
152+
await addApnsToken(connection, token: token, appid: (await ZulipBinding.instance.packageInfo)?.packageName ?? "com.zulip.flutter");
154153

155154
case TargetPlatform.linux:
156155
case TargetPlatform.macOS:

test/api/core_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ void main() {
460460
});
461461
}
462462

463-
const packageInfo = PackageInfo(version: '0.0.1', buildNumber: '1');
463+
const packageInfo = PackageInfo(version: '0.0.1', buildNumber: '1', packageName: 'com.zulip.flutter.test');
464464

465465
const testCases = [
466466
('ZulipFlutter/0.0.1+1 (Android 14)', AndroidDeviceInfo(release: '14', sdkInt: 34), ),

test/api/route/notifications_test.dart

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ import 'package:http/http.dart' as http;
33
import 'package:test/scaffolding.dart';
44
import 'package:zulip/api/route/notifications.dart';
55

6+
import '../../model/binding.dart';
67
import '../../stdlib_checks.dart';
78
import '../fake_api.dart';
89

910
void main() {
11+
12+
TestZulipBinding.ensureInitialized();
13+
1014
group('addFcmToken', () {
1115
Future<void> checkAddFcmToken(FakeApiConnection connection, {
1216
required String token,
@@ -50,6 +54,12 @@ void main() {
5054
});
5155

5256
group('addApnsToken', () {
57+
58+
Future<void> init() async {
59+
addTearDown(testBinding.reset);
60+
testBinding.firebaseMessagingInitialToken = '012abc';
61+
}
62+
5363
Future<void> checkAddApnsToken(FakeApiConnection connection, {
5464
required String token,
5565
required String appid,
@@ -70,6 +80,19 @@ void main() {
7080
await checkAddApnsToken(connection, token: 'asdf', appid: 'qwer');
7181
});
7282
});
83+
84+
test('Fallback to default appBundleId incase packageInfo is null', () async {
85+
await init();
86+
// setting package Info to null
87+
testBinding.packageInfoResult=null;
88+
89+
const defaultAppId = 'com.zulip.flutter.test';
90+
91+
return FakeApiConnection.with_((connection) async {
92+
await checkAddApnsToken(connection, token: 'asdf', appid:(await testBinding.packageInfo)?.packageName?? defaultAppId);
93+
});
94+
});
95+
7396
});
7497

7598
group('removeApnsToken', () {

test/model/binding.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,8 @@ class TestZulipBinding extends ZulipBinding {
228228
BaseDeviceInfo? get syncDeviceInfo => deviceInfoResult;
229229

230230
/// The value that `ZulipBinding.instance.packageInfo` should return.
231-
PackageInfo packageInfoResult = _defaultPackageInfo;
232-
static const _defaultPackageInfo = PackageInfo(version: '0.0.1', buildNumber: '1');
231+
PackageInfo? packageInfoResult = _defaultPackageInfo;
232+
static const _defaultPackageInfo = PackageInfo(version: '0.0.1', buildNumber: '1', packageName: 'com.zulip.flutter.test');
233233

234234
void _resetPackageInfo() {
235235
packageInfoResult = _defaultPackageInfo;
@@ -241,6 +241,7 @@ class TestZulipBinding extends ZulipBinding {
241241
@override
242242
PackageInfo? get syncPackageInfo => packageInfoResult;
243243

244+
244245
void _resetFirebase() {
245246
_firebaseInitialized = false;
246247
_firebaseMessaging = null;

test/model/store_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,7 +1032,7 @@ void main() {
10321032
if (defaultTargetPlatform == TargetPlatform.android) {
10331033
checkLastRequestFcm(token: '012abc');
10341034
} else {
1035-
checkLastRequestApns(token: '012abc', appid: 'com.zulip.flutter');
1035+
checkLastRequestApns(token: '012abc', appid:'com.zulip.flutter.test');
10361036
}
10371037

10381038
if (defaultTargetPlatform == TargetPlatform.android) {
@@ -1071,7 +1071,7 @@ void main() {
10711071
if (defaultTargetPlatform == TargetPlatform.android) {
10721072
checkLastRequestFcm(token: '012abc');
10731073
} else {
1074-
checkLastRequestApns(token: '012abc', appid: 'com.zulip.flutter');
1074+
checkLastRequestApns(token: '012abc', appid:'com.zulip.flutter.test');
10751075
}
10761076

10771077
if (defaultTargetPlatform == TargetPlatform.android) {

test/notifications/receive_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,6 @@ void main() {
3030
.length.equals(1);
3131
}, variant: const TargetPlatformVariant({TargetPlatform.android, TargetPlatform.iOS}));
3232
});
33+
34+
3335
}

0 commit comments

Comments
 (0)