xref: /aosp_15_r20/external/grpc-grpc/src/objective-c/tests/InteropTests/InteropTestsLocalSSL.m (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1/*
2 *
3 * Copyright 2015 gRPC authors.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 */
18
19#import <GRPCClient/GRPCCall+Tests.h>
20#import <GRPCClient/GRPCTransport.h>
21#import <GRPCClient/internal_testing/GRPCCall+InternalTests.h>
22
23#import "../Common/TestUtils.h"
24#import "InteropTests.h"
25
26// The server address is derived from preprocessor macro, which is
27// in turn derived from environment variable of the same name.
28#define NSStringize_helper(x) #x
29#define NSStringize(x) @NSStringize_helper(x)
30
31// The Protocol Buffers encoding overhead of local interop server. Acquired
32// by experiment. Adjust this when server's proto file changes.
33static int32_t kLocalInteropServerOverhead = 10;
34
35/** Tests in InteropTests.m, sending the RPCs to a local SSL server. */
36@interface InteropTestsLocalSSL : InteropTests
37@end
38
39@implementation InteropTestsLocalSSL
40
41+ (NSString *)host {
42  return GRPCGetLocalInteropTestServerAddressSSL();
43}
44
45+ (NSString *)PEMRootCertificates {
46  NSBundle *bundle = [NSBundle bundleForClass:[self class]];
47  NSString *certsPath = [bundle pathForResource:@"TestCertificates.bundle/test-certificates"
48                                         ofType:@"pem"];
49  NSError *error;
50  return [NSString stringWithContentsOfFile:certsPath encoding:NSUTF8StringEncoding error:&error];
51}
52
53+ (NSString *)hostNameOverride {
54  return @"foo.test.google.fr";
55}
56
57- (int32_t)encodingOverhead {
58  return kLocalInteropServerOverhead;  // bytes
59}
60
61+ (GRPCTransportID)transport {
62  return GRPCDefaultTransportImplList.core_secure;
63}
64
65- (void)setUp {
66  [super setUp];
67
68  // Register test server certificates and name.
69  NSBundle *bundle = [NSBundle bundleForClass:[self class]];
70  NSString *certsPath = [bundle pathForResource:@"TestCertificates.bundle/test-certificates"
71                                         ofType:@"pem"];
72  [GRPCCall useTestCertsPath:certsPath
73                    testName:@"foo.test.google.fr"
74                     forHost:GRPCGetLocalInteropTestServerAddressSSL()];
75}
76
77- (void)testExceptions {
78  // Try to set userAgentPrefix for host that is nil. This should cause
79  // an exception.
80  @try {
81    [GRPCCall useTestCertsPath:nil testName:nil forHost:nil];
82    XCTFail(@"Did not receive an exception when parameters are nil");
83  } @catch (NSException *theException) {
84    NSLog(@"Received exception as expected: %@", theException.name);
85  }
86}
87
88@end
89