1syntax = "proto3"; 2 3package tests.harness.cases; 4option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/go;cases"; 5import "validate/validate.proto"; 6 7message StringNone { string val = 1; } 8message StringConst { string val = 1 [(validate.rules).string.const = "foo"]; } 9message StringIn { string val = 1 [(validate.rules).string = {in: ["bar", "baz"]}]; } 10message StringNotIn { string val = 1 [(validate.rules).string = {not_in: ["fizz", "buzz"]}]; } 11message StringLen { string val = 1 [(validate.rules).string.len = 3]; } 12message StringMinLen { string val = 1 [(validate.rules).string.min_len = 3]; } 13message StringMaxLen { string val = 1 [(validate.rules).string.max_len = 5]; } 14message StringMinMaxLen { string val = 1 [(validate.rules).string = {min_len: 3, max_len: 5}]; } 15message StringEqualMinMaxLen { string val = 1 [(validate.rules).string = {min_len: 5, max_len: 5}]; } 16message StringLenBytes { string val = 1 [(validate.rules).string.len_bytes = 4]; } 17message StringMinBytes { string val = 1 [(validate.rules).string.min_bytes = 4]; } 18message StringMaxBytes { string val = 1 [(validate.rules).string.max_bytes = 8]; } 19message StringMinMaxBytes { string val = 1 [(validate.rules).string = {min_bytes: 4, max_bytes: 8}]; } 20message StringEqualMinMaxBytes { string val = 1 [(validate.rules).string = {min_bytes: 4, max_bytes: 8}]; } 21message StringPattern { string val = 1 [(validate.rules).string.pattern = "(?i)^[a-z0-9]+$"]; } 22message StringPatternEscapes { string val = 1 [(validate.rules).string.pattern = "\\* \\\\ \\w"]; } 23message StringPrefix { string val = 1 [(validate.rules).string.prefix = "foo"]; } 24message StringContains { string val = 1 [(validate.rules).string.contains = "bar"]; } 25message StringNotContains { string val = 1 [(validate.rules).string.not_contains = "bar"]; } 26message StringSuffix { string val = 1 [(validate.rules).string.suffix = "baz"]; } 27message StringEmail { string val = 1 [(validate.rules).string.email = true]; } 28message StringAddress { string val = 1 [(validate.rules).string.address = true]; } 29message StringHostname { string val = 1 [(validate.rules).string.hostname = true]; } 30message StringIP { string val = 1 [(validate.rules).string.ip = true]; } 31message StringIPv4 { string val = 1 [(validate.rules).string.ipv4 = true]; } 32message StringIPv6 { string val = 1 [(validate.rules).string.ipv6 = true]; } 33message StringURI { string val = 1 [(validate.rules).string.uri = true]; } 34message StringURIRef { string val = 1 [(validate.rules).string.uri_ref = true]; } 35message StringUUID { string val = 1 [(validate.rules).string.uuid = true]; } 36message StringHttpHeaderName { string val = 1 [(validate.rules).string.well_known_regex = HTTP_HEADER_NAME]; } 37message StringHttpHeaderValue { string val = 1 [(validate.rules).string.well_known_regex = HTTP_HEADER_VALUE]; } 38message StringValidHeader { string val = 1 [(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE, strict: false}]; } 39message StringUUIDIgnore { string val = 1 [(validate.rules).string = {uuid: true, ignore_empty: true}]; } 40