Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,9 @@ Future<void> main() async {
await FirebaseAppCheck.instance
// Your personal reCaptcha public key goes here:
.activate(
androidProvider: AndroidProvider.debug,
appleProvider: AppleProvider.debug,
providerWeb: ReCaptchaV3Provider(kWebRecaptchaSiteKey),
providerAndroid: const AndroidDebugProvider(debugToken: 'androidDebug'),
providerApple: const AppleDebugProvider(debugToken: 'appleDebug'),
providerAndroid: const AndroidDebugProvider(),
providerApple: const AppleDebugProvider(),
);

runApp(MyApp());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,15 @@ class FirebaseAppCheck extends FirebasePluginPlatform {
)
WebProvider? webProvider,
WebProvider? providerWeb,
@Deprecated(
'Use providerAndroid instead. '
'This parameter will be removed in a future major release.',
)
AndroidProvider androidProvider = AndroidProvider.playIntegrity,
@Deprecated(
'Use providerApple instead. '
'This parameter will be removed in a future major release.',
)
AppleProvider appleProvider = AppleProvider.deviceCheck,
AndroidAppCheckProvider providerAndroid =
const AndroidPlayIntegrityProvider(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,27 @@ String getAndroidProviderString({
AndroidProvider? legacyProvider,
AndroidAppCheckProvider? newProvider,
}) {
// Prefer new provider over legacy provider
if (newProvider != null) {
return newProvider.type;
if (newProvider != null && legacyProvider != null) {
if (legacyProvider != AndroidProvider.playIntegrity) {
// Legacy provider is explicitly set to something other than default
return getLegacyAndroidProviderString(legacyProvider);
}
}

return getLegacyAndroidProviderString(legacyProvider);
return newProvider?.type ?? 'playIntegrity';
}

/// Converts [AppleAppCheckProvider] to [String] with backwards compatibility
String getAppleProviderString({
AppleProvider? legacyProvider,
AppleAppCheckProvider? newProvider,
}) {
// Prefer new provider over legacy provider
if (newProvider != null) {
return newProvider.type;
if (newProvider != null && legacyProvider != null) {
if (legacyProvider != AppleProvider.deviceCheck) {
// Legacy provider is explicitly set to something other than default
return getLegacyAppleProviderString(legacyProvider);
}
}

return getLegacyAppleProviderString(legacyProvider);
return newProvider?.type ?? 'deviceCheck';
}

/// Converts [AndroidProvider] enum to [String]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:firebase_app_check_platform_interface/src/android_provider.dart';
import 'package:firebase_app_check_platform_interface/src/android_providers.dart';
import 'package:firebase_app_check_platform_interface/src/apple_provider.dart';
import 'package:firebase_app_check_platform_interface/src/apple_providers.dart';
import 'package:firebase_app_check_platform_interface/src/method_channel/utils/provider_to_string.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
group('getAndroidProviderString', () {
test(
'returns new provider type when both providers are provided and legacy is default',
() {
final result = getAndroidProviderString(
legacyProvider: AndroidProvider.playIntegrity,
newProvider: const AndroidPlayIntegrityProvider(),
);
expect(result, 'playIntegrity');
});

test(
'returns legacy provider when explicitly set to debug and new provider is default',
() {
final result = getAndroidProviderString(
legacyProvider: AndroidProvider.debug,
newProvider: const AndroidPlayIntegrityProvider(),
);
expect(result, 'debug');
});

test(
'returns new provider type when only new provider is provided and legacy is default',
() {
final result = getAndroidProviderString(
legacyProvider: AndroidProvider.playIntegrity,
newProvider: const AndroidDebugProvider(),
);
expect(result, 'debug');
});

test('returns default when neither provider is provided', () {
final result = getAndroidProviderString();
expect(result, 'playIntegrity');
});
});

group('getAppleProviderString', () {
test('returns default provider when both providers are default', () {
final result = getAppleProviderString(
legacyProvider: AppleProvider.deviceCheck,
newProvider: const AppleDeviceCheckProvider(),
);
expect(result, 'deviceCheck');
});

test(
'returns legacy provider when explicitly set to debug and new provider is default',
() {
final result = getAppleProviderString(
legacyProvider: AppleProvider.debug,
newProvider: const AppleDeviceCheckProvider(),
);
expect(result, 'debug');
});

test(
'returns legacy provider when explicitly set to appAttest and new provider is default',
() {
final result = getAppleProviderString(
legacyProvider: AppleProvider.appAttest,
newProvider: const AppleDeviceCheckProvider(),
);
expect(result, 'appAttest');
});

test(
'returns legacy provider when explicitly set to appAttestWithDeviceCheckFallback and new provider is default',
() {
final result = getAppleProviderString(
legacyProvider: AppleProvider.appAttestWithDeviceCheckFallback,
newProvider: const AppleDeviceCheckProvider(),
);
expect(result, 'appAttestWithDeviceCheckFallback');
});

test(
'returns new provider type when new provider is provided and legacy is default',
() {
final result = getAppleProviderString(
legacyProvider: AppleProvider.deviceCheck,
newProvider: const AppleDebugProvider(),
);
expect(result, 'debug');
});

test(
'returns legacy provider when new provider is provided and legacy is default',
() {
final result = getAppleProviderString(
legacyProvider: AppleProvider.deviceCheck,
newProvider: const AppleAppAttestProvider(),
);
expect(result, 'appAttest');
});

test('returns default when neither provider is provided', () {
final result = getAppleProviderString();
expect(result, 'deviceCheck');
});

test(
'returns new provider when explicitly set to appAttestWithDeviceCheckFallback',
() {
final result = getAppleProviderString(
legacyProvider: AppleProvider.deviceCheck,
newProvider: const AppleAppAttestWithDeviceCheckFallbackProvider(),
);
expect(result, 'appAttestWithDeviceCheckFallback');
});
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ void main() async {
// 1. Debug provider
// 2. Safety Net provider
// 3. Play Integrity provider
androidProvider: AndroidProvider.debug,
providerAndroid: const AndroidDebugProvider(),
// Default provider for iOS/macOS is the Device Check provider. You can use the "AppleProvider" enum to choose
// your preferred provider. Choose from:
// 1. Debug provider
// 2. Device Check provider
// 3. App Attest provider
// 4. App Attest provider with fallback to Device Check provider (App Attest provider is only available on iOS 14.0+, macOS 14.0+)
appleProvider: AppleProvider.appAttest,
providerApple: const AppleAppAttestProvider(),
);
}
if (configureEmulator) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,7 @@ void main() {
() async {
await expectLater(
FirebaseAppCheck.instance.activate(
androidProvider: AndroidProvider.debug,
providerAndroid: const AndroidDebugProvider(
debugToken: 'debug_token',
),
providerAndroid: const AndroidDebugProvider(),
),
completes,
);
Expand All @@ -99,10 +96,7 @@ void main() {
() async {
await expectLater(
FirebaseAppCheck.instance.activate(
appleProvider: AppleProvider.debug,
providerApple: const AppleDebugProvider(
debugToken: 'debug_token',
),
providerApple: const AppleDebugProvider(),
),
completes,
);
Expand Down
Loading