Skip to content

Commit 6f7dbfb

Browse files
author
Bas de Vaan
authored
Merge pull request #5 from DutchCodingCompany/feature/support-for-id-token
Feature/support for id token
2 parents 964f6ad + 11afa39 commit 6f7dbfb

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

lib/src/oauth_token.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ class OAuthToken {
44
final String accessToken;
55
final String? refreshToken;
66
final DateTime? expiration;
7+
final String? idToken;
78

8-
bool get isExpired =>
9-
expiration != null && DateTime.now().isAfter(expiration!);
9+
bool get isExpired => expiration != null && DateTime.now().isAfter(expiration!);
1010

1111
const OAuthToken._(
1212
this.accessToken,
1313
this.refreshToken,
1414
this.expiration,
15+
this.idToken,
1516
);
1617

1718
factory OAuthToken.fromJson(String json) {
@@ -23,5 +24,6 @@ class OAuthToken {
2324
credentials.accessToken,
2425
credentials.refreshToken,
2526
credentials.expiration,
27+
credentials.idToken,
2628
);
2729
}

test/oauth_chopper_test.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ void main() {
1313
{
1414
"accessToken": "accesToken",
1515
"refreshToken": "refreshToken",
16-
"idToken": null,
16+
"idToken": "idToken",
1717
"tokenEndpoint": "https://test.test/oauth/token",
1818
"scopes": [],
1919
"expiration": 1664359530234
@@ -63,6 +63,7 @@ void main() {
6363
// assert
6464
expect(token?.accessToken, 'accesToken');
6565
expect(token?.refreshToken, 'refreshToken');
66+
expect(token?.idToken, 'idToken');
6667
});
6768

6869
test('Returns no token if not in storage', () async {
@@ -98,6 +99,7 @@ void main() {
9899
verify(grantMock.handle(any, 'identifier', 'secret')).called(1);
99100
verify(storageMock.saveCredentials(testJson)).called(1);
100101
expect(token.accessToken, 'accesToken');
102+
expect(token?.idToken, 'idToken');
101103
expect(token.refreshToken, 'refreshToken');
102104
});
103105
}

test/oauth_interceptor_test.dart

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import 'package:mockito/mockito.dart';
44
import 'package:oauth2/oauth2.dart';
55
import 'package:oauth_chopper/oauth_chopper.dart';
66
import 'package:oauth_chopper/src/oauth_interceptor.dart';
7-
import 'package:oauth_chopper/src/oauth_token.dart';
87
import 'package:test/test.dart';
98

109
@GenerateMocks([OAuthChopper])
@@ -20,6 +19,15 @@ void main() {
2019
),
2120
);
2221

22+
final testIDtoken = OAuthToken.fromCredentials(
23+
Credentials(
24+
'token',
25+
refreshToken: 'refresh',
26+
idToken: 'idToken',
27+
expiration: DateTime(2022, 9, 1),
28+
),
29+
);
30+
2331
final testRequest = Request('GET', Uri(host: 'test'), Uri(host: 'test'));
2432

2533
test('HeaderInterceptor adds available token to headers', () async {
@@ -34,6 +42,20 @@ void main() {
3442
// assert
3543
expect(result.headers, expected);
3644
});
45+
46+
test('HeaderInterceptor does not add IDToken when available to headers', () async {
47+
// arrange
48+
when(mockOAuthChopper.token).thenAnswer((_) async => testIDtoken);
49+
final interceptor = OAuthInterceptor(mockOAuthChopper);
50+
final expected = {'Authorization': 'Bearer token'};
51+
52+
// act
53+
final result = await interceptor.onRequest(testRequest);
54+
55+
// assert
56+
expect(result.headers, expected);
57+
});
58+
3759
test('HeaderInterceptor adds no token to headers', () async {
3860
// arrange
3961
when(mockOAuthChopper.token).thenAnswer((_) async => null);

0 commit comments

Comments
 (0)