blob: efd7ea54145195fdff4dcae7c2b90946fc770404 [file] [log] [blame]
@TestOn('vm')
library googleapis_auth.adc_test;
import 'dart:convert';
import 'dart:io';
import 'package:googleapis_auth/src/adc_utils.dart'
show fromApplicationsCredentialsFile;
import 'package:http/http.dart';
import 'package:test/test.dart';
import 'test_utils.dart';
void main() {
test('fromApplicationsCredentialsFile', () async {
final tmp = await Directory.systemTemp.createTemp('googleapis_auth-test');
try {
final credsFile = File.fromUri(tmp.uri.resolve('creds.json'));
await credsFile.writeAsString(json.encode({
'client_id': 'id',
'client_secret': 'secret',
'refresh_token': 'refresh',
'type': 'authorized_user'
}));
final c = await fromApplicationsCredentialsFile(
credsFile,
'test-credentials-file',
[],
mockClient((Request request) async {
final url = request.url.toString();
if (url == 'https://accounts.google.com/o/oauth2/token') {
expect(request.method, equals('POST'));
expect(
request.body,
equals('client_id=id&'
'client_secret=secret&'
'refresh_token=refresh&'
'grant_type=refresh_token'));
final body = jsonEncode({
'token_type': 'Bearer',
'access_token': 'atoken',
'expires_in': 3600,
});
return Response(body, 200, headers: _jsonContentType);
}
if (url == 'https://storage.googleapis.com/b/bucket/o/obj') {
expect(request.method, equals('GET'));
expect(request.headers['Authorization'], equals('Bearer atoken'));
expect(request.headers['X-Goog-User-Project'], isNull);
return Response('hello world', 200);
}
return Response('bad', 404);
}, expectClose: false),
);
expect(c.credentials.accessToken.data, equals('atoken'));
final r =
await c.get(Uri.https('storage.googleapis.com', '/b/bucket/o/obj'));
expect(r.statusCode, equals(200));
expect(r.body, equals('hello world'));
c.close();
} finally {
await tmp.delete(recursive: true);
}
});
test('fromApplicationsCredentialsFile w. quota_project_id', () async {
final tmp = await Directory.systemTemp.createTemp('googleapis_auth-test');
try {
final credsFile = File.fromUri(tmp.uri.resolve('creds.json'));
await credsFile.writeAsString(json.encode({
'client_id': 'id',
'client_secret': 'secret',
'refresh_token': 'refresh',
'type': 'authorized_user',
'quota_project_id': 'project'
}));
final c = await fromApplicationsCredentialsFile(
credsFile,
'test-credentials-file',
[],
mockClient((Request request) async {
final url = request.url.toString();
if (url == 'https://accounts.google.com/o/oauth2/token') {
expect(request.method, equals('POST'));
expect(
request.body,
equals('client_id=id&'
'client_secret=secret&'
'refresh_token=refresh&'
'grant_type=refresh_token'));
final body = jsonEncode({
'token_type': 'Bearer',
'access_token': 'atoken',
'expires_in': 3600,
});
return Response(body, 200, headers: _jsonContentType);
}
if (url == 'https://storage.googleapis.com/b/bucket/o/obj') {
expect(request.method, equals('GET'));
expect(request.headers['Authorization'], equals('Bearer atoken'));
expect(request.headers['X-Goog-User-Project'], equals('project'));
return Response('hello world', 200);
}
return Response('bad', 404);
}, expectClose: false),
);
expect(c.credentials.accessToken.data, equals('atoken'));
final r =
await c.get(Uri.https('storage.googleapis.com', '/b/bucket/o/obj'));
expect(r.statusCode, equals(200));
expect(r.body, equals('hello world'));
c.close();
} finally {
await tmp.delete(recursive: true);
}
});
}
const _jsonContentType = {'content-type': 'application/json'};