kitchen_sink.proto 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. syntax = "proto3";
  2. package tests.harness.cases;
  3. option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/go;cases";
  4. import "validate/validate.proto";
  5. import "google/protobuf/wrappers.proto";
  6. import "google/protobuf/duration.proto";
  7. import "google/protobuf/timestamp.proto";
  8. import "google/protobuf/any.proto";
  9. enum ComplexTestEnum {
  10. ComplexZero = 0;
  11. ComplexONE = 1;
  12. ComplexTWO = 2;
  13. }
  14. message ComplexTestMsg {
  15. string const = 1 [(validate.rules).string.const = "abcd"];
  16. ComplexTestMsg nested = 2;
  17. int32 int_const = 3 [(validate.rules).int32.const = 5];
  18. bool bool_const = 4 [(validate.rules).bool.const = false];
  19. google.protobuf.FloatValue float_val = 5 [(validate.rules).float.gt = 0];
  20. google.protobuf.Duration dur_val = 6 [(validate.rules).duration.lt = {seconds: 17}, (validate.rules).duration.required = true];
  21. google.protobuf.Timestamp ts_val = 7 [(validate.rules).timestamp.gt = {seconds: 7}];
  22. ComplexTestMsg another = 8;
  23. float float_const = 9 [(validate.rules).float.lt = 8];
  24. double double_in = 10 [(validate.rules).double = {in: [456.789, 123]}];
  25. ComplexTestEnum enum_const = 11 [(validate.rules).enum.const = 2];
  26. google.protobuf.Any any_val = 12 [(validate.rules).any = {in: ["type.googleapis.com/google.protobuf.Duration"]}];
  27. repeated google.protobuf.Timestamp rep_ts_val = 13 [(validate.rules).repeated = { items { timestamp { gte { nanos: 1000000}}}}];
  28. map<sint32, string> map_val = 14 [(validate.rules).map.keys.sint32.lt = 0];
  29. bytes bytes_val = 15 [(validate.rules).bytes.const = "\x00\x99"];
  30. oneof o {
  31. option (validate.required) = true;
  32. string x = 16;
  33. int32 y = 17;
  34. }
  35. }
  36. message KitchenSinkMessage { ComplexTestMsg val = 1; }