deeplink_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. package tka
  4. import (
  5. "testing"
  6. )
  7. func TestGenerateDeeplink(t *testing.T) {
  8. pub, _ := testingKey25519(t, 1)
  9. key := Key{Kind: Key25519, Public: pub, Votes: 2}
  10. c := newTestchain(t, `
  11. G1 -> L1
  12. G1.template = genesis
  13. `,
  14. optTemplate("genesis", AUM{MessageKind: AUMCheckpoint, State: &State{
  15. Keys: []Key{key},
  16. DisablementSecrets: [][]byte{DisablementKDF([]byte{1, 2, 3})},
  17. }}),
  18. )
  19. a, _ := Open(c.Chonk())
  20. nodeKey := "nodekey:1234567890"
  21. tlPub := "tlpub:1234567890"
  22. deviceName := "Example Device"
  23. osName := "iOS"
  24. loginName := "[email protected]"
  25. deeplink, err := a.NewDeeplink(NewDeeplinkParams{
  26. NodeKey: nodeKey,
  27. TLPub: tlPub,
  28. DeviceName: deviceName,
  29. OSName: osName,
  30. LoginName: loginName,
  31. })
  32. if err != nil {
  33. t.Errorf("deeplink generation failed: %v", err)
  34. }
  35. res := a.ValidateDeeplink(deeplink)
  36. if !res.IsValid {
  37. t.Errorf("deeplink validation failed: %s", res.Error)
  38. }
  39. if res.NodeKey != nodeKey {
  40. t.Errorf("node key mismatch: %s != %s", res.NodeKey, nodeKey)
  41. }
  42. if res.TLPub != tlPub {
  43. t.Errorf("tlpub mismatch: %s != %s", res.TLPub, tlPub)
  44. }
  45. }