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