ident: implement remote-part validation

This is mostly equivalent to email without IP addresses.

Signed-off-by: Yonah <contrib@gensokyo.uk>
This commit is contained in:
2026-03-22 16:41:14 +09:00
parent 1354a2c9a3
commit ffa125b39d
3 changed files with 272 additions and 0 deletions

View File

@@ -88,6 +88,42 @@ func TestErrors(t *testing.T) {
Data: make([]byte, 1<<10),
Want: ident.EncodedSizeSystem,
}, "got 1024 bytes for a 32-byte identifier"},
{"InvalidLabelLDH start", &ident.InvalidLabelError{
Data: []byte{'-'},
Label: 0xbad,
Index: 0,
Reason: ident.InvalidLabelLDH,
}, "label 2989 starts with '-'"},
{"InvalidLabelLDH end", &ident.InvalidLabelError{
Data: []byte{0, '-'},
Label: 0xbad,
Index: 1,
Reason: ident.InvalidLabelLDH,
}, "label 2989 ends with '-'"},
{"InvalidLabelLDH", &ident.InvalidLabelError{
Data: []byte{0},
Label: 0xbad,
Index: 0,
Reason: ident.InvalidLabelLDH,
}, `label 2989 contains invalid byte '\x00' at index 0`},
{"InvalidLabelShort", &ident.InvalidLabelError{
Label: 0xf00d,
Reason: ident.InvalidLabelShort,
}, "label 61453 is empty"},
{"InvalidLabelLong", &ident.InvalidLabelError{
Label: 0xf00d,
Reason: ident.InvalidLabelLong,
}, "label 61453 is longer than 63 bytes"},
{"InvalidLabelError", &ident.InvalidLabelError{
Label: 0xcafe,
Reason: 0xbadf00d,
}, "invalid label 51966 at byte 0"},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {