Skip to content

Commit 76e14e0

Browse files
test: write tests for facebook provider login
1 parent 1510c17 commit 76e14e0

3 files changed

Lines changed: 433 additions & 0 deletions

File tree

packages/firebase_ui_oauth_facebook/lib/src/provider.dart

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class FacebookProvider extends OAuthProvider {
3636
});
3737

3838
/// Generates a cryptographically secure random nonce for limited login
39+
@visibleForTesting
3940
String _generateNonce([int length = 32]) {
4041
const charset =
4142
'0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._';
@@ -45,13 +46,15 @@ class FacebookProvider extends OAuthProvider {
4546
}
4647

4748
/// Returns the SHA256 hash of the given string
49+
@visibleForTesting
4850
String _sha256ofString(String input) {
4951
final bytes = utf8.encode(input);
5052
final digest = sha256.convert(bytes);
5153
return digest.toString();
5254
}
5355

5456
/// Checks if tracking permission has been granted on iOS
57+
@visibleForTesting
5558
Future<bool> _hasTrackingPermission() async {
5659
// Only check on iOS
5760
if (defaultTargetPlatform != TargetPlatform.iOS) {
@@ -67,6 +70,7 @@ class FacebookProvider extends OAuthProvider {
6770
}
6871
}
6972

73+
@visibleForTesting
7074
void _handleResult(LoginResult result, AuthAction action) {
7175
switch (result.status) {
7276
case LoginStatus.success:
@@ -174,3 +178,26 @@ class FacebookProvider extends OAuthProvider {
174178
return true;
175179
}
176180
}
181+
182+
// Extension to expose private methods and fields for testing
183+
extension FacebookProviderTestExtension on FacebookProvider {
184+
String generateNonceForTest([int length = 32]) {
185+
return _generateNonce(length);
186+
}
187+
188+
String sha256ForTest(String input) {
189+
return _sha256ofString(input);
190+
}
191+
192+
Future<bool> hasTrackingPermissionForTest() {
193+
return _hasTrackingPermission();
194+
}
195+
196+
void handleResultForTest(LoginResult result, AuthAction action) {
197+
_handleResult(result, action);
198+
}
199+
200+
void setRawNonceForTest(String? nonce) {
201+
_rawNonce = nonce;
202+
}
203+
}

packages/firebase_ui_oauth_facebook/pubspec.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ dev_dependencies:
2020
flutter_test:
2121
sdk: flutter
2222
flutter_lints: ^3.0.1
23+
mockito: ^5.4.4
24+
build_runner: ^2.4.13
2325

2426
# For information on the generic Dart part of this file, see the
2527
# following page: https://dart.dev/tools/pub/pubspec

0 commit comments

Comments
 (0)