Skip to content
File

Blob: spec/tun/session_test.go

go46 lines
1package tun
2 
3import (
4 "strings"
5 "testing"
6 
7 "go.miragespace.co/specter/spec/chord"
8 
9 "github.com/stretchr/testify/require"
10)
11 
12func TestLabelAndAliasFormats(t *testing.T) {
13 label, inv, err := EphemeralLabel(chord.MaxIdentitifer-1, []byte("public key"))
14 require.NoError(t, err)
15 require.Len(t, label, 47)
16 home, parsed, ok := ParseEphemeralLabel(label)
17 require.True(t, ok)
18 require.Equal(t, chord.MaxIdentitifer-1, home)
19 require.Equal(t, inv, parsed)
20 _, _, err = EphemeralLabel(chord.MaxIdentitifer, nil)
21 require.Error(t, err)
22 for _, bad := range []string{strings.ToUpper(label), label[:46], label + ".example.com", label[:46] + "g"} {
23 _, _, ok := ParseEphemeralLabel(bad)
24 require.False(t, ok, bad)
25 }
26 alias := SessionAlias(inv)
27 require.Len(t, alias, 40)
28 require.True(t, IsSessionAlias(alias))
29 for _, bad := range []string{strings.ToUpper(alias), alias + "0", "v2:" + strings.Repeat("a", 46), strings.Repeat("a", 44)} {
30 require.False(t, IsSessionAlias(bad))
31 }
32 secret := [32]byte{1, 2, 3, 4}
33 token := EncodeDelegationToken(secret)
34 require.Len(t, token, 47)
35 got, err := ParseDelegationToken(token)
36 require.NoError(t, err)
37 require.Equal(t, secret, got)
38 id := DelegationID(secret)
39 require.True(t, IsDelegationID(id))
40 require.False(t, IsDelegationID(strings.ToUpper(id)))
41 for _, bad := range []string{id, token + "=", " " + token, token[:46], token[:46] + "B"} {
42 _, err := ParseDelegationToken(bad)
43 require.Error(t, err, bad)
44 }
45}