mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Support macOS Catalina-style signing certificate names (#37733)
This commit is contained in:
parent
69248258af
commit
39a04dcd7f
@ -79,7 +79,7 @@ const String fixWithDevelopmentTeamInstruction = '''
|
||||
|
||||
|
||||
final RegExp _securityFindIdentityDeveloperIdentityExtractionPattern =
|
||||
RegExp(r'^\s*\d+\).+"(.+Developer.+)"$');
|
||||
RegExp(r'^\s*\d+\).+"(.+Develop(ment|er).+)"$');
|
||||
final RegExp _securityFindIdentityCertificateCnExtractionPattern = RegExp(r'.*\(([a-zA-Z0-9]+)\)');
|
||||
final RegExp _certificateOrganizationalUnitExtractionPattern = RegExp(r'OU=([a-zA-Z0-9]+)');
|
||||
|
||||
|
@ -153,6 +153,73 @@ void main() {
|
||||
OutputPreferences: () => OutputPreferences(wrapText: false),
|
||||
});
|
||||
|
||||
|
||||
testUsingContext('Test single identity (Catalina format) and certificate organization works', () async {
|
||||
when(mockProcessManager.runSync(<String>['which', 'security']))
|
||||
.thenReturn(exitsHappy);
|
||||
when(mockProcessManager.runSync(<String>['which', 'openssl']))
|
||||
.thenReturn(exitsHappy);
|
||||
when(mockProcessManager.runSync(
|
||||
argThat(contains('find-identity')),
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
)).thenReturn(ProcessResult(
|
||||
1, // pid
|
||||
0, // exitCode
|
||||
'''
|
||||
1) 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 "Apple Development: Profile 1 (1111AAAA11)"
|
||||
1 valid identities found''',
|
||||
'',
|
||||
));
|
||||
when(mockProcessManager.runSync(
|
||||
<String>['security', 'find-certificate', '-c', '1111AAAA11', '-p'],
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
)).thenReturn(ProcessResult(
|
||||
1, // pid
|
||||
0, // exitCode
|
||||
'This is a mock certificate',
|
||||
'',
|
||||
));
|
||||
|
||||
final MockProcess mockProcess = MockProcess();
|
||||
final MockStdIn mockStdIn = MockStdIn();
|
||||
final MockStream mockStdErr = MockStream();
|
||||
|
||||
when(mockProcessManager.start(
|
||||
argThat(contains('openssl')),
|
||||
environment: anyNamed('environment'),
|
||||
workingDirectory: anyNamed('workingDirectory'),
|
||||
)).thenAnswer((Invocation invocation) => Future<Process>.value(mockProcess));
|
||||
|
||||
when(mockProcess.stdin).thenReturn(mockStdIn);
|
||||
when(mockProcess.stdout)
|
||||
.thenAnswer((Invocation invocation) => Stream<List<int>>.fromFuture(
|
||||
Future<List<int>>.value(utf8.encode(
|
||||
'subject= /CN=iPhone Developer: Profile 1 (1111AAAA11)/OU=3333CCCC33/O=My Team/C=US'
|
||||
))
|
||||
));
|
||||
when(mockProcess.stderr).thenAnswer((Invocation invocation) => mockStdErr);
|
||||
when(mockProcess.exitCode).thenAnswer((_) async => 0);
|
||||
|
||||
Map<String, String> signingConfigs;
|
||||
try {
|
||||
signingConfigs = await getCodeSigningIdentityDevelopmentTeam(iosApp: app);
|
||||
} catch (e) {
|
||||
// This should not throw
|
||||
expect(true, false);
|
||||
}
|
||||
|
||||
expect(testLogger.statusText, contains('Apple Development: Profile 1 (1111AAAA11)'));
|
||||
expect(testLogger.errorText, isEmpty);
|
||||
verify(mockStdIn.write('This is a mock certificate'));
|
||||
expect(signingConfigs, <String, String>{'DEVELOPMENT_TEAM': '3333CCCC33'});
|
||||
},
|
||||
overrides: <Type, Generator>{
|
||||
ProcessManager: () => mockProcessManager,
|
||||
OutputPreferences: () => OutputPreferences(wrapText: false),
|
||||
});
|
||||
|
||||
testUsingContext('Test multiple identity and certificate organization works', () async {
|
||||
when(mockProcessManager.runSync(<String>['which', 'security']))
|
||||
.thenReturn(exitsHappy);
|
||||
|
Loading…
Reference in New Issue
Block a user