19 #include <gmock/gmock.h>
20 #include <gtest/gtest.h>
34 using ::grpc::experimental::ExternalCertificateVerifier;
35 using ::grpc::experimental::HostNameCertificateVerifier;
36 using ::grpc::experimental::NoOpCertificateVerifier;
37 using ::grpc::experimental::TlsCustomVerificationCheckRequest;
45 TEST(TlsCertificateVerifierTest, SyncCertificateVerifierSucceeds) {
48 ExternalCertificateVerifier::Create<SyncCertificateVerifier>(
true);
49 TlsCustomVerificationCheckRequest cpp_request(&
request);
51 verifier->Verify(&cpp_request,
nullptr, &sync_status);
56 TEST(TlsCertificateVerifierTest, SyncCertificateVerifierFails) {
59 ExternalCertificateVerifier::Create<SyncCertificateVerifier>(
false);
60 TlsCustomVerificationCheckRequest cpp_request(&
request);
62 verifier->Verify(&cpp_request,
nullptr, &sync_status);
67 TEST(TlsCertificateVerifierTest, AsyncCertificateVerifierSucceeds) {
70 ExternalCertificateVerifier::Create<AsyncCertificateVerifier>(
true);
71 TlsCustomVerificationCheckRequest cpp_request(&
request);
74 << async_status.error_code() <<
" " << async_status.error_message();
80 TEST(TlsCertificateVerifierTest, AsyncCertificateVerifierFails) {
83 ExternalCertificateVerifier::Create<AsyncCertificateVerifier>(
false);
84 TlsCustomVerificationCheckRequest cpp_request(&
request);
87 EXPECT_EQ(async_status.error_message(),
"AsyncCertificateVerifier failed");
93 TEST(TlsCertificateVerifierTest, NoOpCertificateVerifierSucceeds) {
96 auto verifier = std::make_shared<NoOpCertificateVerifier>();
97 TlsCustomVerificationCheckRequest cpp_request(&
request);
99 verifier->Verify(&cpp_request,
nullptr, &sync_status);
104 TEST(TlsCertificateVerifierTest, HostNameCertificateVerifierSucceeds) {
107 request.target_name =
"foo.bar.com";
108 request.peer_info.common_name =
"foo.bar.com";
109 auto verifier = std::make_shared<HostNameCertificateVerifier>();
110 TlsCustomVerificationCheckRequest cpp_request(&
request);
112 verifier->Verify(&cpp_request,
nullptr, &sync_status);
117 TEST(TlsCertificateVerifierTest, HostNameCertificateVerifierFails) {
120 request.target_name =
"foo.bar.com";
121 request.peer_info.common_name =
"foo.baz.com";
122 auto verifier = std::make_shared<HostNameCertificateVerifier>();
123 TlsCustomVerificationCheckRequest cpp_request(&
request);
125 verifier->Verify(&cpp_request,
nullptr, &sync_status);
130 TEST(TlsCertificateVerifierTest,
131 HostNameCertificateVerifierSucceedsMultipleFields) {
134 request.target_name =
"foo.bar.com";
135 request.peer_info.common_name =
"foo.baz.com";
136 char* dns_names[] = {
const_cast<char*
>(
"*.bar.com")};
137 request.peer_info.san_names.dns_names = dns_names;
138 request.peer_info.san_names.dns_names_size = 1;
139 auto verifier = std::make_shared<HostNameCertificateVerifier>();
140 TlsCustomVerificationCheckRequest cpp_request(&
request);
142 verifier->Verify(&cpp_request,
nullptr, &sync_status);
147 TEST(TlsCertificateVerifierTest,
148 HostNameCertificateVerifierFailsMultipleFields) {
151 request.target_name =
"foo.bar.com";
152 request.peer_info.common_name =
"foo.baz.com";
153 char* dns_names[] = {
const_cast<char*
>(
"*.")};
154 request.peer_info.san_names.dns_names = dns_names;
155 request.peer_info.san_names.dns_names_size = 1;
156 auto verifier = std::make_shared<HostNameCertificateVerifier>();
157 TlsCustomVerificationCheckRequest cpp_request(&
request);
159 verifier->Verify(&cpp_request,
nullptr, &sync_status);
168 int main(
int argc,
char** argv) {