local_test.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. //go:build go1.19
  4. package local
  5. import (
  6. "context"
  7. "net"
  8. "net/http"
  9. "testing"
  10. "tailscale.com/tstest/deptest"
  11. "tailscale.com/tstest/nettest"
  12. "tailscale.com/types/key"
  13. )
  14. func TestGetServeConfigFromJSON(t *testing.T) {
  15. sc, err := getServeConfigFromJSON([]byte("null"))
  16. if sc != nil {
  17. t.Errorf("want nil for null")
  18. }
  19. if err != nil {
  20. t.Errorf("reading null: %v", err)
  21. }
  22. sc, err = getServeConfigFromJSON([]byte(`{"TCP":{}}`))
  23. if err != nil {
  24. t.Errorf("reading object: %v", err)
  25. } else if sc == nil {
  26. t.Errorf("want non-nil for object")
  27. } else if sc.TCP == nil {
  28. t.Errorf("want non-nil TCP for object")
  29. }
  30. }
  31. func TestWhoIsPeerNotFound(t *testing.T) {
  32. nw := nettest.GetNetwork(t)
  33. ts := nettest.NewHTTPServer(nw, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  34. w.WriteHeader(404)
  35. }))
  36. defer ts.Close()
  37. lc := &Client{
  38. Dial: func(ctx context.Context, network, addr string) (net.Conn, error) {
  39. return nw.Dial(ctx, network, ts.Listener.Addr().String())
  40. },
  41. }
  42. var k key.NodePublic
  43. if err := k.UnmarshalText([]byte("nodekey:5c8f86d5fc70d924e55f02446165a5dae8f822994ad26bcf4b08fd841f9bf261")); err != nil {
  44. t.Fatal(err)
  45. }
  46. res, err := lc.WhoIsNodeKey(context.Background(), k)
  47. if err != ErrPeerNotFound {
  48. t.Errorf("got (%v, %v), want ErrPeerNotFound", res, err)
  49. }
  50. res, err = lc.WhoIs(context.Background(), "1.2.3.4:5678")
  51. if err != ErrPeerNotFound {
  52. t.Errorf("got (%v, %v), want ErrPeerNotFound", res, err)
  53. }
  54. }
  55. func TestDeps(t *testing.T) {
  56. deptest.DepChecker{
  57. BadDeps: map[string]string{
  58. // Make sure we don't again accidentally bring in a dependency on
  59. // drive or its transitive dependencies
  60. "testing": "do not use testing package in production code",
  61. "tailscale.com/drive/driveimpl": "https://github.com/tailscale/tailscale/pull/10631",
  62. "github.com/studio-b12/gowebdav": "https://github.com/tailscale/tailscale/pull/10631",
  63. },
  64. }.Check(t)
  65. }