evaluate_args_test.cc
Go to the documentation of this file.
1 // Copyright 2021 gRPC authors.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
16 
18 
19 #include <gmock/gmock.h>
20 #include <gtest/gtest.h>
21 
25 
26 namespace grpc_core {
27 
29  protected:
31 };
32 
33 TEST_F(EvaluateArgsTest, EmptyMetadata) {
34  EvaluateArgs args = util_.MakeEvaluateArgs();
35  EXPECT_THAT(args.GetPath(), ::testing::IsEmpty());
36  EXPECT_THAT(args.GetMethod(), ::testing::IsEmpty());
37  EXPECT_THAT(args.GetAuthority(), ::testing::IsEmpty());
38  EXPECT_EQ(args.GetHeaderValue("some_key", nullptr), absl::nullopt);
39 }
40 
41 TEST_F(EvaluateArgsTest, GetPathSuccess) {
42  util_.AddPairToMetadata(":path", "/expected/path");
43  EvaluateArgs args = util_.MakeEvaluateArgs();
44  EXPECT_EQ(args.GetPath(), "/expected/path");
45 }
46 
47 TEST_F(EvaluateArgsTest, GetAuthoritySuccess) {
48  util_.AddPairToMetadata(":authority", "test.google.com");
49  EvaluateArgs args = util_.MakeEvaluateArgs();
50  EXPECT_EQ(args.GetAuthority(), "test.google.com");
51 }
52 
53 TEST_F(EvaluateArgsTest, GetMethodSuccess) {
54  util_.AddPairToMetadata(":method", "GET");
55  EvaluateArgs args = util_.MakeEvaluateArgs();
56  EXPECT_EQ(args.GetMethod(), "GET");
57 }
58 
59 TEST_F(EvaluateArgsTest, GetHeaderValueSuccess) {
60  util_.AddPairToMetadata("key123", "value123");
61  EvaluateArgs args = util_.MakeEvaluateArgs();
62  std::string concatenated_value;
64  args.GetHeaderValue("key123", &concatenated_value);
65  ASSERT_TRUE(value.has_value());
66  EXPECT_EQ(value.value(), "value123");
67 }
68 
69 TEST_F(EvaluateArgsTest, GetHeaderValueAliasesHost) {
70  util_.AddPairToMetadata(":authority", "test.google.com");
71  EvaluateArgs args = util_.MakeEvaluateArgs();
72  std::string concatenated_value;
74  args.GetHeaderValue("host", &concatenated_value);
75  ASSERT_TRUE(value.has_value());
76  EXPECT_EQ(value.value(), "test.google.com");
77 }
78 
79 TEST_F(EvaluateArgsTest, TestLocalAddressAndPort) {
80  util_.SetLocalEndpoint("ipv6:[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:456");
81  EvaluateArgs args = util_.MakeEvaluateArgs();
82  grpc_resolved_address local_address = args.GetLocalAddress();
83  EXPECT_EQ(grpc_sockaddr_to_uri(&local_address).value(),
84  "ipv6:%5B2001:db8:85a3::8a2e:370:7334%5D:456");
85  EXPECT_EQ(args.GetLocalAddressString(),
86  "2001:0db8:85a3:0000:0000:8a2e:0370:7334");
87  EXPECT_EQ(args.GetLocalPort(), 456);
88 }
89 
90 TEST_F(EvaluateArgsTest, TestPeerAddressAndPort) {
91  util_.SetPeerEndpoint("ipv4:255.255.255.255:123");
92  EvaluateArgs args = util_.MakeEvaluateArgs();
93  grpc_resolved_address peer_address = args.GetPeerAddress();
94  EXPECT_EQ(grpc_sockaddr_to_uri(&peer_address).value(),
95  "ipv4:255.255.255.255:123");
96  EXPECT_EQ(args.GetPeerAddressString(), "255.255.255.255");
97  EXPECT_EQ(args.GetPeerPort(), 123);
98 }
99 
100 TEST_F(EvaluateArgsTest, EmptyAuthContext) {
101  EvaluateArgs args = util_.MakeEvaluateArgs();
102  EXPECT_TRUE(args.GetTransportSecurityType().empty());
103  EXPECT_TRUE(args.GetSpiffeId().empty());
104  EXPECT_TRUE(args.GetUriSans().empty());
105  EXPECT_TRUE(args.GetDnsSans().empty());
106  EXPECT_TRUE(args.GetSubject().empty());
107  EXPECT_TRUE(args.GetCommonName().empty());
108 }
109 
110 TEST_F(EvaluateArgsTest, GetTransportSecurityTypeSuccessOneProperty) {
111  util_.AddPropertyToAuthContext(GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME,
112  "ssl");
113  EvaluateArgs args = util_.MakeEvaluateArgs();
114  EXPECT_EQ(args.GetTransportSecurityType(), "ssl");
115 }
116 
117 TEST_F(EvaluateArgsTest, GetTransportSecurityTypeFailDuplicateProperty) {
118  util_.AddPropertyToAuthContext(GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME,
119  "type1");
120  util_.AddPropertyToAuthContext(GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME,
121  "type2");
122  EvaluateArgs args = util_.MakeEvaluateArgs();
123  EXPECT_TRUE(args.GetTransportSecurityType().empty());
124 }
125 
126 TEST_F(EvaluateArgsTest, GetSpiffeIdSuccessOneProperty) {
127  util_.AddPropertyToAuthContext(GRPC_PEER_SPIFFE_ID_PROPERTY_NAME, "id123");
128  EvaluateArgs args = util_.MakeEvaluateArgs();
129  EXPECT_EQ(args.GetSpiffeId(), "id123");
130 }
131 
132 TEST_F(EvaluateArgsTest, GetSpiffeIdFailDuplicateProperty) {
133  util_.AddPropertyToAuthContext(GRPC_PEER_SPIFFE_ID_PROPERTY_NAME, "id123");
134  util_.AddPropertyToAuthContext(GRPC_PEER_SPIFFE_ID_PROPERTY_NAME, "id456");
135  EvaluateArgs args = util_.MakeEvaluateArgs();
136  EXPECT_TRUE(args.GetSpiffeId().empty());
137 }
138 
139 TEST_F(EvaluateArgsTest, GetUriSanSuccessMultipleProperties) {
140  util_.AddPropertyToAuthContext(GRPC_PEER_URI_PROPERTY_NAME, "foo");
141  util_.AddPropertyToAuthContext(GRPC_PEER_URI_PROPERTY_NAME, "bar");
142  EvaluateArgs args = util_.MakeEvaluateArgs();
143  EXPECT_THAT(args.GetUriSans(), ::testing::ElementsAre("foo", "bar"));
144 }
145 
146 TEST_F(EvaluateArgsTest, GetDnsSanSuccessMultipleProperties) {
147  util_.AddPropertyToAuthContext(GRPC_PEER_DNS_PROPERTY_NAME, "foo");
148  util_.AddPropertyToAuthContext(GRPC_PEER_DNS_PROPERTY_NAME, "bar");
149  EvaluateArgs args = util_.MakeEvaluateArgs();
150  EXPECT_THAT(args.GetDnsSans(), ::testing::ElementsAre("foo", "bar"));
151 }
152 
153 TEST_F(EvaluateArgsTest, GetCommonNameSuccessOneProperty) {
154  util_.AddPropertyToAuthContext(GRPC_X509_CN_PROPERTY_NAME, "server123");
155  EvaluateArgs args = util_.MakeEvaluateArgs();
156  EXPECT_EQ(args.GetCommonName(), "server123");
157 }
158 
159 TEST_F(EvaluateArgsTest, GetCommonNameFailDuplicateProperty) {
160  util_.AddPropertyToAuthContext(GRPC_X509_CN_PROPERTY_NAME, "server123");
161  util_.AddPropertyToAuthContext(GRPC_X509_CN_PROPERTY_NAME, "server456");
162  EvaluateArgs args = util_.MakeEvaluateArgs();
163  EXPECT_TRUE(args.GetCommonName().empty());
164 }
165 
166 TEST_F(EvaluateArgsTest, GetSubjectSuccessOneProperty) {
167  util_.AddPropertyToAuthContext(GRPC_X509_SUBJECT_PROPERTY_NAME,
168  "CN=abc,OU=Google");
169  EvaluateArgs args = util_.MakeEvaluateArgs();
170  EXPECT_EQ(args.GetSubject(), "CN=abc,OU=Google");
171 }
172 
173 TEST_F(EvaluateArgsTest, GetSubjectFailDuplicateProperty) {
174  util_.AddPropertyToAuthContext(GRPC_X509_SUBJECT_PROPERTY_NAME,
175  "CN=abc,OU=Google");
176  util_.AddPropertyToAuthContext(GRPC_X509_SUBJECT_PROPERTY_NAME,
177  "CN=def,OU=Google");
178  EvaluateArgs args = util_.MakeEvaluateArgs();
179  EXPECT_TRUE(args.GetSubject().empty());
180 }
181 
182 } // namespace grpc_core
183 
184 int main(int argc, char** argv) {
185  grpc::testing::TestEnvironment env(&argc, argv);
186  ::testing::InitGoogleTest(&argc, argv);
187  grpc_init();
188  int ret = RUN_ALL_TESTS();
189  grpc_shutdown();
190  return ret;
191 }
GRPC_PEER_DNS_PROPERTY_NAME
#define GRPC_PEER_DNS_PROPERTY_NAME
Definition: grpc_security_constants.h:48
grpc_core::EvaluateArgs
Definition: evaluate_args.h:34
sockaddr_utils.h
generate.env
env
Definition: generate.py:37
EXPECT_THAT
#define EXPECT_THAT(value, matcher)
grpc_core
Definition: call_metric_recorder.h:31
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
grpc_resolved_address
Definition: resolved_address.h:34
evaluate_args.h
testing::Test
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:402
EXPECT_EQ
#define EXPECT_EQ(a, b)
Definition: iomgr/time_averaged_stats_test.cc:27
testing::ElementsAre
internal::ElementsAreMatcher< ::testing::tuple<> > ElementsAre()
Definition: cares/cares/test/gmock-1.8.0/gmock/gmock.h:13040
evaluate_args_test_util.h
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME
#define GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME
Definition: grpc_security_constants.h:26
GRPC_PEER_SPIFFE_ID_PROPERTY_NAME
#define GRPC_PEER_SPIFFE_ID_PROPERTY_NAME
Definition: grpc_security_constants.h:49
GRPC_X509_SUBJECT_PROPERTY_NAME
#define GRPC_X509_SUBJECT_PROPERTY_NAME
Definition: grpc_security_constants.h:31
absl::optional< absl::string_view >
GRPC_X509_CN_PROPERTY_NAME
#define GRPC_X509_CN_PROPERTY_NAME
Definition: grpc_security_constants.h:30
grpc_core::TEST_F
TEST_F(AuthorizationMatchersTest, AlwaysAuthorizationMatcher)
Definition: authorization_matchers_test.cc:35
RUN_ALL_TESTS
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2471
grpc_core::EvaluateArgsTestUtil
Definition: evaluate_args_test_util.h:29
grpc_core::EvaluateArgsTest
Definition: evaluate_args_test.cc:28
main
int main(int argc, char **argv)
Definition: evaluate_args_test.cc:184
test_config.h
value
const char * value
Definition: hpack_parser_table.cc:165
testing::InitGoogleTest
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
Definition: bloaty/third_party/googletest/googletest/src/gtest.cc:6106
absl::container_internal::IsEmpty
bool IsEmpty(ctrl_t c)
Definition: abseil-cpp/absl/container/internal/raw_hash_set.h:489
ret
UniquePtr< SSL_SESSION > ret
Definition: ssl_x509.cc:1029
grpc::testing::TestEnvironment
Definition: test/core/util/test_config.h:54
ASSERT_TRUE
#define ASSERT_TRUE(condition)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:1973
grpc_core::EvaluateArgsTest::util_
EvaluateArgsTestUtil util_
Definition: evaluate_args_test.cc:30
EXPECT_TRUE
#define EXPECT_TRUE(condition)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:1967
grpc_init
GRPCAPI void grpc_init(void)
Definition: init.cc:146
grpc_sockaddr_to_uri
absl::StatusOr< std::string > grpc_sockaddr_to_uri(const grpc_resolved_address *resolved_addr)
Definition: sockaddr_utils.cc:260
GRPC_PEER_URI_PROPERTY_NAME
#define GRPC_PEER_URI_PROPERTY_NAME
Definition: grpc_security_constants.h:50
grpc_shutdown
GRPCAPI void grpc_shutdown(void)
Definition: init.cc:209
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:16