blob: 312d20bb53e4d789dd5f56de4bc1d96fe070a693 [file] [log] [blame]
// Copyright 2019 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:appengine/appengine.dart';
import 'package:cocoon_service/src/foundation/typedefs.dart';
import 'package:cocoon_service/src/model/appengine/key_helper.dart';
import 'package:cocoon_service/src/model/google/token_info.dart';
import 'package:cocoon_service/src/request_handling/authentication.dart';
import 'package:cocoon_service/src/request_handling/exceptions.dart';
import 'package:cocoon_service/src/service/config.dart';
// ignore: must_be_immutable
class FakeAuthenticationProvider implements AuthenticationProvider {
FakeAuthenticationProvider({
FakeClientContext? clientContext,
this.authenticated = true,
}) : clientContext = clientContext ?? FakeClientContext();
bool authenticated;
FakeClientContext clientContext;
@override
Future<AuthenticatedContext> authenticate(HttpRequest request) async {
if (authenticated) {
return FakeAuthenticatedContext(clientContext: clientContext);
} else {
throw const Unauthenticated('Not authenticated');
}
}
@override
Future<AuthenticatedContext> authenticateToken(TokenInfo token, {ClientContext? clientContext, Logging? log}) async {
if (authenticated) {
return FakeAuthenticatedContext(clientContext: clientContext as FakeClientContext?);
} else {
throw const Unauthenticated('Not authenticated');
}
}
@override
ClientContextProvider get clientContextProvider => throw UnimplementedError();
@override
Config get config => throw UnimplementedError();
@override
HttpClientProvider get httpClientProvider => throw UnimplementedError();
@override
Future<TokenInfo> tokenInfo(HttpRequest request, {Logging? log, String tokenType = 'id_token'}) async {
return TokenInfo(
email: 'abc@gmail.com',
issued: DateTime.now(),
);
}
}
// ignore: must_be_immutable
class FakeAuthenticatedContext implements AuthenticatedContext {
FakeAuthenticatedContext({
FakeClientContext? clientContext,
}) : clientContext = clientContext ?? FakeClientContext();
@override
FakeClientContext clientContext;
}
class FakeClientContext implements ClientContext {
FakeClientContext({
this.isDevelopmentEnvironment = true,
this.isProductionEnvironment = false,
FakeAppEngineContext? applicationContext,
}) : applicationContext = applicationContext ?? FakeAppEngineContext();
@override
FakeAppEngineContext applicationContext;
@override
bool isDevelopmentEnvironment;
@override
bool isProductionEnvironment;
@override
late Services services;
@override
String? traceId;
}
class FakeAppEngineContext implements AppEngineContext {
@override
String applicationID = 'flutter-dashboard';
@override
late String fullQualifiedApplicationId;
@override
late String instance;
@override
String? instanceId;
@override
late bool isDevelopmentEnvironment;
@override
late String module;
@override
String partition = '[default]';
@override
late String version;
}
class FakeKeyHelper extends KeyHelper {
FakeKeyHelper({
AppEngineContext? applicationContext,
}) : super(applicationContext: applicationContext ?? FakeAppEngineContext());
}