ssh_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. //go:build linux || (darwin && !ios)
  4. package ipnlocal
  5. import (
  6. "encoding/json"
  7. "reflect"
  8. "testing"
  9. "tailscale.com/health"
  10. "tailscale.com/ipn/store/mem"
  11. "tailscale.com/tailcfg"
  12. "tailscale.com/util/eventbus/eventbustest"
  13. "tailscale.com/util/must"
  14. )
  15. func TestSSHKeyGen(t *testing.T) {
  16. dir := t.TempDir()
  17. lb := &LocalBackend{varRoot: dir}
  18. keys, err := lb.getTailscaleSSH_HostKeys(nil)
  19. if err != nil {
  20. t.Fatal(err)
  21. }
  22. got := map[string]bool{}
  23. for _, k := range keys {
  24. got[k.PublicKey().Type()] = true
  25. }
  26. want := map[string]bool{
  27. "ssh-rsa": true,
  28. "ecdsa-sha2-nistp256": true,
  29. "ssh-ed25519": true,
  30. }
  31. if !reflect.DeepEqual(got, want) {
  32. t.Fatalf("keys = %v; want %v", got, want)
  33. }
  34. keys2, err := lb.getTailscaleSSH_HostKeys(nil)
  35. if err != nil {
  36. t.Fatal(err)
  37. }
  38. if !reflect.DeepEqual(keys, keys2) {
  39. t.Errorf("got different keys on second call")
  40. }
  41. }
  42. type fakeSSHServer struct {
  43. SSHServer
  44. }
  45. func TestGetSSHUsernames(t *testing.T) {
  46. pm := must.Get(newProfileManager(new(mem.Store), t.Logf, health.NewTracker(eventbustest.NewBus(t))))
  47. b := &LocalBackend{pm: pm, store: pm.Store()}
  48. b.sshServer = fakeSSHServer{}
  49. res, err := b.getSSHUsernames(new(tailcfg.C2NSSHUsernamesRequest))
  50. if err != nil {
  51. t.Fatal(err)
  52. }
  53. t.Logf("Got: %s", must.Get(json.Marshal(res)))
  54. }