// 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) } }