@@ -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+ }
0 commit comments