53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
|
// Copyright (c) Tailscale Inc & AUTHORS
|
||
|
// SPDX-License-Identifier: BSD-3-Clause
|
||
|
|
||
|
package tka
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestGenerateDeeplink(t *testing.T) {
|
||
|
pub, _ := testingKey25519(t, 1)
|
||
|
key := Key{Kind: Key25519, Public: pub, Votes: 2}
|
||
|
c := newTestchain(t, `
|
||
|
G1 -> L1
|
||
|
|
||
|
G1.template = genesis
|
||
|
`,
|
||
|
optTemplate("genesis", AUM{MessageKind: AUMCheckpoint, State: &State{
|
||
|
Keys: []Key{key},
|
||
|
DisablementSecrets: [][]byte{DisablementKDF([]byte{1, 2, 3})},
|
||
|
}}),
|
||
|
)
|
||
|
a, _ := Open(c.Chonk())
|
||
|
|
||
|
nodeKey := "nodekey:1234567890"
|
||
|
tlPub := "tlpub:1234567890"
|
||
|
deviceName := "Example Device"
|
||
|
osName := "iOS"
|
||
|
loginName := "insecure@example.com"
|
||
|
|
||
|
deeplink, err := a.NewDeeplink(NewDeeplinkParams{
|
||
|
NodeKey: nodeKey,
|
||
|
TLPub: tlPub,
|
||
|
DeviceName: deviceName,
|
||
|
OSName: osName,
|
||
|
LoginName: loginName,
|
||
|
})
|
||
|
if err != nil {
|
||
|
t.Errorf("deeplink generation failed: %v", err)
|
||
|
}
|
||
|
|
||
|
res := a.ValidateDeeplink(deeplink)
|
||
|
if !res.IsValid {
|
||
|
t.Errorf("deeplink validation failed: %s", res.Error)
|
||
|
}
|
||
|
if res.NodeKey != nodeKey {
|
||
|
t.Errorf("node key mismatch: %s != %s", res.NodeKey, nodeKey)
|
||
|
}
|
||
|
if res.TLPub != tlPub {
|
||
|
t.Errorf("tlpub mismatch: %s != %s", res.TLPub, tlPub)
|
||
|
}
|
||
|
}
|