21 #include <gmock/gmock.h>
22 #include <gtest/gtest.h>
33 TEST(GoogleMeshCaConfigTest, Basic) {
34 const char* json_str =
37 " \"api_type\": \"GRPC\","
38 " \"grpc_services\": [{"
40 " \"target_uri\": \"newmeshca.googleapis.com\","
41 " \"channel_credentials\": { \"google_default\": {}},"
42 " \"call_credentials\": [{"
44 " \"token_exchange_service_uri\": "
45 "\"newsecuretoken.googleapis.com\","
46 " \"resource\": \"newmeshca.googleapis.com\","
47 " \"audience\": \"newmeshca.googleapis.com\","
49 "\"https://www.newgoogleapis.com/auth/cloud-platform\","
50 " \"requested_token_type\": "
51 "\"urn:ietf:params:oauth:token-type:jwt\","
52 " \"subject_token_path\": \"/etc/secret/sajwt.token\","
53 " \"subject_token_type\": "
54 "\"urn:ietf:params:oauth:token-type:jwt\","
55 " \"actor_token_path\": \"/etc/secret/sajwt.token\","
56 " \"actor_token_type\": "
57 "\"urn:ietf:params:oauth:token-type:jwt\""
61 " \"timeout\": \"20s\""
64 " \"certificate_lifetime\": \"400s\","
65 " \"renewal_grace_period\": \"100s\","
66 " \"key_type\": \"RSA\","
67 " \"key_size\": 1024,"
69 "\"https://container.googleapis.com/v1/project/test-project1/locations/"
70 "test-zone2/clusters/test-cluster3\""
80 "newsecuretoken.googleapis.com");
84 "https://www.newgoogleapis.com/auth/cloud-platform");
86 "urn:ietf:params:oauth:token-type:jwt");
87 EXPECT_EQ(
config->sts_config().subject_token_path,
"/etc/secret/sajwt.token");
89 "urn:ietf:params:oauth:token-type:jwt");
90 EXPECT_EQ(
config->sts_config().actor_token_path,
"/etc/secret/sajwt.token");
92 "urn:ietf:params:oauth:token-type:jwt");
98 "https://container.googleapis.com/v1/project/test-project1/"
99 "locations/test-zone2/clusters/test-cluster3");
102 TEST(GoogleMeshCaConfigTest, Defaults) {
103 const char* json_str =
106 " \"api_type\": \"GRPC\","
107 " \"grpc_services\": [{"
108 " \"google_grpc\": {"
109 " \"call_credentials\": [{"
110 " \"sts_service\": {"
112 "\"https://www.googleapis.com/auth/cloud-platform\","
113 " \"subject_token_path\": \"/etc/secret/sajwt.token\","
114 " \"subject_token_type\": "
115 "\"urn:ietf:params:oauth:token-type:jwt\""
122 "\"https://container.googleapis.com/v1/project/test-project1/locations/"
123 "test-zone2/clusters/test-cluster3\""
133 "securetoken.googleapis.com");
137 "https://www.googleapis.com/auth/cloud-platform");
139 EXPECT_EQ(
config->sts_config().subject_token_path,
"/etc/secret/sajwt.token");
141 "urn:ietf:params:oauth:token-type:jwt");
149 "https://container.googleapis.com/v1/project/test-project1/"
150 "locations/test-zone2/clusters/test-cluster3");
153 TEST(GoogleMeshCaConfigTest, WrongExpectedValues) {
154 const char* json_str =
157 " \"api_type\": \"REST\","
158 " \"grpc_services\": [{"
159 " \"google_grpc\": {"
160 " \"call_credentials\": [{"
161 " \"sts_service\": {"
163 "\"https://www.googleapis.com/auth/cloud-platform\","
164 " \"subject_token_path\": \"/etc/secret/sajwt.token\","
165 " \"subject_token_type\": "
166 "\"urn:ietf:params:oauth:token-type:jwt\""
172 " \"key_type\": \"DSA\","
174 "\"https://container.googleapis.com/v1/project/test-project1/locations/"
175 "test-zone2/clusters/test-cluster3\""
185 "field:key_type error:Only RSA is supported"));
189 TEST(GoogleMeshCaConfigTest, WrongTypes) {
190 const char* json_str =
193 " \"api_type\": 123,"
194 " \"grpc_services\": [{"
195 " \"google_grpc\": {"
196 " \"target_uri\": 123,"
197 " \"call_credentials\": [{"
198 " \"sts_service\": {"
199 " \"token_exchange_service_uri\": 123,"
200 " \"resource\": 123,"
201 " \"audience\": 123,"
203 " \"requested_token_type\": 123,"
204 " \"subject_token_path\": 123,"
205 " \"subject_token_type\": 123,"
206 " \"actor_token_path\": 123,"
207 " \"actor_token_type\": 123"
214 " \"certificate_lifetime\": 400,"
215 " \"renewal_grace_period\": 100,"
216 " \"key_type\": 123,"
217 " \"key_size\": \"1024A\","
228 "field:server.*field:api_type error:type should be STRING.*"
229 "field:grpc_services.*field:google_grpc.*field:target_uri "
230 "error:type should be STRING.*"
231 "field:call_credentials.*field:sts_service.*field:token_exchange_"
232 "service_uri error:type should be STRING.*"
233 "field:resource error:type should be STRING.*"
234 "field:audience error:type should be STRING.*"
235 "field:scope error:type should be STRING.*"
236 "field:requested_token_type error:type should be STRING.*"
237 "field:subject_token_path error:type should be STRING.*"
238 "field:subject_token_type error:type should be STRING.*"
239 "field:actor_token_path error:type should be STRING.*"
240 "field:actor_token_type error:type should be STRING.*"
241 "field:timeout error:type should be STRING of the form given by "
242 "google.proto.Duration.*"
243 "field:certificate_lifetime error:type should be STRING of the form "
244 "given by google.proto.Duration.*"
245 "field:renewal_grace_period error:type should be STRING of the form "
246 "given by google.proto.Duration..*"
247 "field:key_type error:type should be STRING.*"
248 "field:key_size error:failed to parse.*"
249 "field:location error:type should be STRING"));
253 TEST(GoogleMeshCaConfigTest, GrpcServicesNotAnArray) {
254 const char* json_str =
257 " \"api_type\": \"GRPC\","
258 " \"grpc_services\": 123"
261 "\"https://container.googleapis.com/v1/project/test-project1/locations/"
262 "test-zone2/clusters/test-cluster3\""
272 "field:server.*field:grpc_services error:type should be ARRAY"));
276 TEST(GoogleMeshCaConfigTest, GoogleGrpcNotAnObject) {
277 const char* json_str =
280 " \"api_type\": \"GRPC\","
281 " \"grpc_services\": [{"
282 " \"google_grpc\": 123"
286 "\"https://container.googleapis.com/v1/project/test-project1/locations/"
287 "test-zone2/clusters/test-cluster3\""
297 "google_grpc error:type should be OBJECT"));
301 TEST(GoogleMeshCaConfigTest, CallCredentialsNotAnArray) {
302 const char* json_str =
305 " \"api_type\": \"GRPC\","
306 " \"grpc_services\": [{"
307 " \"google_grpc\": {"
308 " \"call_credentials\": 123"
313 "\"https://container.googleapis.com/v1/project/test-project1/locations/"
314 "test-zone2/clusters/test-cluster3\""
323 "field:server.*field:grpc_services.*field:google_grpc.*"
324 "field:call_credentials error:type should be ARRAY"));
328 TEST(GoogleMeshCaConfigTest, StsServiceNotAnObject) {
329 const char* json_str =
332 " \"api_type\": \"GRPC\","
333 " \"grpc_services\": [{"
334 " \"google_grpc\": {"
335 " \"call_credentials\": [{"
336 " \"sts_service\": 123"
342 "\"https://container.googleapis.com/v1/project/test-project1/locations/"
343 "test-zone2/clusters/test-cluster3\""
353 "field:server.*field:grpc_services.*field:google_grpc.*field:"
354 "call_credentials.*field:sts_service error:type should be OBJECT"));
362 int main(
int argc,
char** argv) {