// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; import "google/api/routing.proto"; import "google/protobuf/empty.proto"; package google.explicit.dynamic.routing.header; option java_package = "com.google.explicit.dynamic.routing.header"; option java_multiple_files = true; // This service is only meant for unit testing RoutingRuleParser service RoutingRuleParserTesting { // Test case for no routing rule found rpc NoRoutingRuleTest(NoRoutingRuleTestRequest) returns (google.protobuf.Empty) { } // Test case for empty path template rpc EmptyPathTemplateTest(EmptyPathTemplateTestRequest) returns (google.protobuf.Empty) { option (google.api.routing) = { routing_parameters { field: "name" } }; } // Test case for path template has zero named segment rpc ZeroSegmentPathTemplateTest(ZeroSegmentPathTemplateTestRequest) returns (google.protobuf.Empty) { option (google.api.routing) = { routing_parameters { field: "name" path_template: "/v1beta1/tests/*" } }; } // Test case for path template has more than one named segment rpc MultipleSegmentsPathTemplateTest(MultipleSegmentsPathTemplateTestRequest) returns (google.protobuf.Empty) { option (google.api.routing) = { routing_parameters { field: "name" path_template: "/v1beta1/{name=tests/*}/{second_name=*}" } }; } // Test case for happy path rpc HappyPathTest(HappyPathTestRequest) returns (google.protobuf.Empty) { option (google.api.routing) = { routing_parameters { field: "name" path_template: "/v1beta1/{rename=tests/*}" } }; } // Test case for happy path with multiple routing parameters rpc MultipleRoutingParamsHappyPathTest(MultipleRoutingParamsHappyPathTestReqest) returns (google.protobuf.Empty) { option (google.api.routing) = { routing_parameters { field: "name" path_template: "/v1beta1/{rename=tests/*}" } routing_parameters { field: "routing_id" path_template: "/v1beta1/{id=projects/*}/tables/*" } }; } // Test case for happy path with nested fields rpc NestedFieldsHappyPathTest(NestedFieldsHappyPathTestRequest) returns (google.protobuf.Empty) { option (google.api.routing) = { routing_parameters { field: "account.name" path_template: "/v1beta1/{rename=tests/*}" } }; } // Test case for field validation. We already have extensive unit tests for field validation, so only testing one simple case. rpc FieldDoesNotExistTest(FieldDoesNotExistTestRequest) returns (google.protobuf.Empty) { option (google.api.routing) = { routing_parameters { field: "does_not_exist" path_template: "/v1beta1/{rename=tests/*}" } }; } } message NoRoutingRuleTestRequest { } message EmptyPathTemplateTestRequest { string name = 1; } message ZeroSegmentPathTemplateTestRequest { string name = 1; } message MultipleSegmentsPathTemplateTestRequest { string name = 1; } message HappyPathTestRequest { string name = 1; } message MultipleRoutingParamsHappyPathTestReqest { string name = 1; string routing_id = 2; } message NestedFieldsHappyPathTestRequest { Account account = 1; } message FieldDoesNotExistTestRequest { string name = 1; } message Account { string name = 1; }