Temporary workaround to fix github authentication (#5125)
fix: https://github.com/flutter/flutter/issues/189892
diff --git a/app_dart/lib/src/request_handling/presubmit_authentication.dart b/app_dart/lib/src/request_handling/presubmit_authentication.dart
index d197bbc..464ad85 100644
--- a/app_dart/lib/src/request_handling/presubmit_authentication.dart
+++ b/app_dart/lib/src/request_handling/presubmit_authentication.dart
@@ -87,11 +87,22 @@
}
Future<String?> _getGithubLogin(String accountId) async {
- final ghService = _config.createGithubServiceWithToken(
+ final github = _config.createGitHubClientWithToken(
await _config.githubOAuthToken,
);
- final user = await ghService.getUserByAccountId(accountId);
- return user.login;
+ try {
+ // TODO(ievdokdm): change it to githubService.getUserById(accountId) once
+ // https://github.com/SpinlockLabs/github.dart/pull/440 is merged and new
+ // version of pub.dev's github package is released
+ final user = await github.getJSON(
+ '/user/$accountId',
+ convert: User.fromJson,
+ );
+ return user.login;
+ } catch (e) {
+ log.warn('Failed to get GitHub login for account $accountId: $e');
+ return null;
+ }
}
Future<String?> _getGithubLoginCached(String accountId) async {
diff --git a/app_dart/test/request_handling/checkrun_authentication_test.dart b/app_dart/test/request_handling/checkrun_authentication_test.dart
index 51b525a..dd2b45c 100644
--- a/app_dart/test/request_handling/checkrun_authentication_test.dart
+++ b/app_dart/test/request_handling/checkrun_authentication_test.dart
@@ -60,11 +60,8 @@
);
final mockGitHub = MockGitHub();
- final mockUsersService = MockUsersService();
- when(mockGitHub.users).thenReturn(mockUsersService);
-
when(
- mockUsersService.getUser(id),
+ mockGitHub.getJSON('/user/$id', convert: anyNamed('convert')),
).thenAnswer((_) async => User(login: user));
when(
@@ -80,6 +77,7 @@
});
final githubService = GithubService(mockGitHub);
+ config.githubClient = mockGitHub;
config.githubService = githubService;
request.headers.set('X-Flutter-IdToken', 'trustmebro');
final result = await auth.authenticate(request.toRequest());
@@ -106,11 +104,8 @@
);
final mockGitHub = MockGitHub();
- final mockUsersService = MockUsersService();
- when(mockGitHub.users).thenReturn(mockUsersService);
-
when(
- mockUsersService.getUser(id),
+ mockGitHub.getJSON('/user/$id', convert: anyNamed('convert')),
).thenAnswer((_) async => User(login: user));
when(
@@ -126,6 +121,7 @@
});
final githubService = GithubService(mockGitHub);
+ config.githubClient = mockGitHub;
config.githubService = githubService;
request.headers.set('X-Flutter-IdToken', 'trustmebro');
expect(
diff --git a/app_dart/test/request_handling/dashboard_authentication_test.dart b/app_dart/test/request_handling/dashboard_authentication_test.dart
index a7b2c2e..56235cd 100644
--- a/app_dart/test/request_handling/dashboard_authentication_test.dart
+++ b/app_dart/test/request_handling/dashboard_authentication_test.dart
@@ -155,11 +155,8 @@
validator.jwts.addAll([token, token]);
final mockGitHub = MockGitHub();
- final mockUsersService = MockUsersService();
- when(mockGitHub.users).thenReturn(mockUsersService);
-
when(
- mockUsersService.getUser(id),
+ mockGitHub.getJSON('/user/$id', convert: anyNamed('convert')),
).thenAnswer((_) async => User(login: user));
when(
@@ -175,6 +172,7 @@
});
final githubService = GithubService(mockGitHub);
+ config.githubClient = mockGitHub;
config.githubService = githubService;
request.headers.set('X-Flutter-IdToken', 'trustmebro');
final result = await auth.authenticate(request.toRequest());
@@ -201,11 +199,8 @@
validator.jwts.addAll([token, token]);
final mockGitHub = MockGitHub();
- final mockUsersService = MockUsersService();
- when(mockGitHub.users).thenReturn(mockUsersService);
-
when(
- mockUsersService.getUser(id),
+ mockGitHub.getJSON('/user/$id', convert: anyNamed('convert')),
).thenAnswer((_) async => User(login: user));
when(
@@ -221,6 +216,7 @@
});
final githubService = GithubService(mockGitHub);
+ config.githubClient = mockGitHub;
config.githubService = githubService;
request.headers.set('X-Flutter-IdToken', 'trustmebro');
final result = await auth.authenticate(request.toRequest());