Skip to content

Commit bcf8a4f

Browse files
authored
Add additional test cases for double colon in IPv6 (#350)
1 parent c9f2cb4 commit bcf8a4f

File tree

1 file changed

+136
-12
lines changed

1 file changed

+136
-12
lines changed

tools/protovalidate-conformance/internal/cases/cases_is_ip.go

Lines changed: 136 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -276,22 +276,10 @@ func isIPSuite() suites.Suite {
276276
Message: &cases.IsIp{Val: "0:0:0:0:0:0:0:0"},
277277
Expected: results.Success(true),
278278
},
279-
"version/omitted/valid/ipv6/h": {
280-
Message: &cases.IsIp{Val: "::1"},
281-
Expected: results.Success(true),
282-
},
283-
"version/omitted/valid/ipv6/i": {
284-
Message: &cases.IsIp{Val: "::"},
285-
Expected: results.Success(true),
286-
},
287279
"version/omitted/valid/ipv6/j": {
288280
Message: &cases.IsIp{Val: "0:00::000:0000"},
289281
Expected: results.Success(true),
290282
},
291-
"version/omitted/valid/ipv6/k": {
292-
Message: &cases.IsIp{Val: "0::"},
293-
Expected: results.Success(true),
294-
},
295283
"version/omitted/valid/ipv6_embedded_ipv4": {
296284
Message: &cases.IsIp{Val: "0:0:0:0:0:ffff:192.1.56.10"},
297285
Expected: results.Success(true),
@@ -500,5 +488,141 @@ func isIPSuite() suites.Suite {
500488
},
501489
),
502490
},
491+
"version/6/valid/ipv6/double_colon": {
492+
Message: &cases.IsIp{Val: "::", Version: proto.Int32(6)},
493+
Expected: results.Success(true),
494+
},
495+
"version/6/valid/ipv6/1h16_double_colon": {
496+
Message: &cases.IsIp{Val: "1::", Version: proto.Int32(6)},
497+
Expected: results.Success(true),
498+
},
499+
"version/6/valid/ipv6/2h16_double_colon": {
500+
Message: &cases.IsIp{Val: "1:2::", Version: proto.Int32(6)},
501+
Expected: results.Success(true),
502+
},
503+
"version/6/valid/ipv6/3h16_double_colon": {
504+
Message: &cases.IsIp{Val: "1:2:3::", Version: proto.Int32(6)},
505+
Expected: results.Success(true),
506+
},
507+
"version/6/valid/ipv6/4h16_double_colon": {
508+
Message: &cases.IsIp{Val: "1:2:3:4::", Version: proto.Int32(6)},
509+
Expected: results.Success(true),
510+
},
511+
"version/6/valid/ipv6/5h16_double_colon": {
512+
Message: &cases.IsIp{Val: "1:2:3:4:5::", Version: proto.Int32(6)},
513+
Expected: results.Success(true),
514+
},
515+
"version/6/valid/ipv6/6h16_double_colon": {
516+
Message: &cases.IsIp{Val: "1:2:3:4:5:6::", Version: proto.Int32(6)},
517+
Expected: results.Success(true),
518+
},
519+
"version/6/valid/ipv6/7h16_double_colon": {
520+
Message: &cases.IsIp{Val: "1:2:3:4:5:6:7::", Version: proto.Int32(6)},
521+
Expected: results.Success(true),
522+
},
523+
"version/6/invalid/ipv6/7h16_double_colon": {
524+
Message: &cases.IsIp{Val: "1:2:3:4:5:6:7:8::", Version: proto.Int32(6)},
525+
Expected: results.Violations(
526+
&validate.Violation{
527+
ConstraintId: proto.String("library.is_ip"),
528+
},
529+
),
530+
},
531+
"version/6/valid/ipv6/1h16_double_colon_1h16": {
532+
Message: &cases.IsIp{Val: "1::1", Version: proto.Int32(6)},
533+
Expected: results.Success(true),
534+
},
535+
"version/6/valid/ipv6/2h16_double_colon_1h16": {
536+
Message: &cases.IsIp{Val: "1:2::1", Version: proto.Int32(6)},
537+
Expected: results.Success(true),
538+
},
539+
"version/6/valid/ipv6/3h16_double_colon_1h16": {
540+
Message: &cases.IsIp{Val: "1:2:3::1", Version: proto.Int32(6)},
541+
Expected: results.Success(true),
542+
},
543+
"version/6/valid/ipv6/4h16_double_colon_1h16": {
544+
Message: &cases.IsIp{Val: "1:2:3:4::1", Version: proto.Int32(6)},
545+
Expected: results.Success(true),
546+
},
547+
"version/6/valid/ipv6/5h16_double_colon_1h16": {
548+
Message: &cases.IsIp{Val: "1:2:3:4:5::1", Version: proto.Int32(6)},
549+
Expected: results.Success(true),
550+
},
551+
"version/6/valid/ipv6/6h16_double_colon_1h16": {
552+
Message: &cases.IsIp{Val: "1:2:3:4:5:6::1", Version: proto.Int32(6)},
553+
Expected: results.Success(true),
554+
},
555+
"version/6/invalid/ipv6/7h16_double_colon_1h16": {
556+
Message: &cases.IsIp{Val: "1:2:3:4:5:6:7::1", Version: proto.Int32(6)},
557+
Expected: results.Violations(
558+
&validate.Violation{
559+
ConstraintId: proto.String("library.is_ip"),
560+
},
561+
),
562+
},
563+
"version/6/valid/ipv6/double_colon_1h16": {
564+
Message: &cases.IsIp{Val: "::1", Version: proto.Int32(6)},
565+
Expected: results.Success(true),
566+
},
567+
"version/6/valid/ipv6/double_colon_2h16": {
568+
Message: &cases.IsIp{Val: "::1:2", Version: proto.Int32(6)},
569+
Expected: results.Success(true),
570+
},
571+
"version/6/valid/ipv6/double_colon_3h16": {
572+
Message: &cases.IsIp{Val: "::1:2:3", Version: proto.Int32(6)},
573+
Expected: results.Success(true),
574+
},
575+
"version/6/valid/ipv6/double_colon_4h16": {
576+
Message: &cases.IsIp{Val: "::1:2:3:4", Version: proto.Int32(6)},
577+
Expected: results.Success(true),
578+
},
579+
"version/6/valid/ipv6/double_colon_5h16": {
580+
Message: &cases.IsIp{Val: "::1:2:3:4:5", Version: proto.Int32(6)},
581+
Expected: results.Success(true),
582+
},
583+
"version/6/valid/ipv6/double_colon_6h16": {
584+
Message: &cases.IsIp{Val: "::1:2:3:4:5:6", Version: proto.Int32(6)},
585+
Expected: results.Success(true),
586+
},
587+
"version/6/valid/ipv6/double_colon_7h16": {
588+
Message: &cases.IsIp{Val: "::1:2:3:4:5:6:7", Version: proto.Int32(6)},
589+
Expected: results.Success(true),
590+
},
591+
"version/6/invalid/ipv6/double_colon_8h16": {
592+
Message: &cases.IsIp{Val: "::1:2:3:4:5:6:7:8", Version: proto.Int32(6)},
593+
Expected: results.Violations(
594+
&validate.Violation{
595+
ConstraintId: proto.String("library.is_ip"),
596+
},
597+
),
598+
},
599+
"version/6/valid/ipv6/1h16_double_colon_2h16": {
600+
Message: &cases.IsIp{Val: "1::1:2", Version: proto.Int32(6)},
601+
Expected: results.Success(true),
602+
},
603+
"version/6/valid/ipv6/1h16_double_colon_3h16": {
604+
Message: &cases.IsIp{Val: "1::1:2:3", Version: proto.Int32(6)},
605+
Expected: results.Success(true),
606+
},
607+
"version/6/valid/ipv6/1h16_double_colon_4h16": {
608+
Message: &cases.IsIp{Val: "1::1:2:3:4", Version: proto.Int32(6)},
609+
Expected: results.Success(true),
610+
},
611+
"version/6/valid/ipv6/1h16_double_colon_5h16": {
612+
Message: &cases.IsIp{Val: "1::1:2:3:4:5", Version: proto.Int32(6)},
613+
Expected: results.Success(true),
614+
},
615+
"version/6/valid/ipv6/1h16_double_colon_6h16": {
616+
Message: &cases.IsIp{Val: "1::1:2:3:4:5:6", Version: proto.Int32(6)},
617+
Expected: results.Success(true),
618+
},
619+
"version/6/invalid/ipv6/1h16_double_colon_7h16": {
620+
Message: &cases.IsIp{Val: "1::1:2:3:4:5:6:7", Version: proto.Int32(6)},
621+
Expected: results.Violations(
622+
&validate.Violation{
623+
ConstraintId: proto.String("library.is_ip"),
624+
},
625+
),
626+
},
503627
}
504628
}

0 commit comments

Comments
 (0)