blob: 0a0f3976f9672b0c11c323df4fc8d9dff4dba4d4 [file] [log] [blame]
// Copyright 2022 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.
@GenerateNiceMocks([
MockSpec<g.AccessSecretVersionResponse>(),
MockSpec<g.SecretPayload>(),
MockSpec<g.SecretManagerApi>(),
MockSpec<g.ProjectsResource>(),
MockSpec<g.ProjectsSecretsResource>(),
MockSpec<g.ProjectsSecretsVersionsResource>(),
])
import 'package:cocoon_server/secret_manager.dart';
import 'package:googleapis/secretmanager/v1.dart' as g;
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'secret_manager_test.mocks.dart';
void main() {
late g.ProjectsSecretsVersionsResource resource;
late final g.SecretManagerApi api;
setUp(() {
resource = MockProjectsSecretsVersionsResource();
});
setUpAll(() {
final mockSecrets = MockProjectsSecretsResource();
when(mockSecrets.versions).thenAnswer((_) => resource);
final mockProjects = MockProjectsResource();
when(mockProjects.secrets).thenReturn(mockSecrets);
final mockApi = MockSecretManagerApi();
when(mockApi.projects).thenReturn(mockProjects);
api = mockApi;
});
test('finds a payload', () async {
final payload = MockSecretPayload();
when(payload.dataAsBytes).thenReturn('World'.codeUnits);
final response = MockAccessSecretVersionResponse();
when(response.payload).thenReturn(payload);
when(
resource.access('projects/my-project/secrets/Hello/versions/latest'),
).thenAnswer((_) async => response);
final manager = SecretManager.fromGoogleCloud(api, projectId: 'my-project');
await expectLater(manager.tryGetString('Hello'), completion('World'));
});
test('handles a missing payload', () async {
final response = MockAccessSecretVersionResponse();
when(response.payload).thenReturn(null);
when(
resource.access('projects/my-project/secrets/Hello/versions/latest'),
).thenAnswer((_) async => response);
final manager = SecretManager.fromGoogleCloud(api, projectId: 'my-project');
await expectLater(manager.tryGetString('Hello'), completion(isNull));
});
}