| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | 
							- // Copyright (C) 2017 The Syncthing Authors.
 
- //
 
- // This Source Code Form is subject to the terms of the Mozilla Public
 
- // License, v. 2.0. If a copy of the MPL was not distributed with this file,
 
- // You can obtain one at https://mozilla.org/MPL/2.0/.
 
- package connections
 
- import (
 
- 	"testing"
 
- 	"github.com/syncthing/syncthing/lib/config"
 
- 	"github.com/syncthing/syncthing/lib/events"
 
- 	"github.com/syncthing/syncthing/lib/protocol"
 
- )
 
- func TestIsLANHost(t *testing.T) {
 
- 	cases := []struct {
 
- 		addr string
 
- 		lan  bool
 
- 	}{
 
- 		// loopback
 
- 		{"127.0.0.1:22000", true},
 
- 		{"127.0.0.1", true},
 
- 		// local nets
 
- 		{"10.20.30.40:22000", true},
 
- 		{"10.20.30.40", true},
 
- 		// neither
 
- 		{"192.0.2.1:22000", false},
 
- 		{"192.0.2.1", false},
 
- 		// doesn't resolve
 
- 		{"[banana::phone]:hello", false},
 
- 		{"„‹›fl´fi·‰ˇ¨Á˝", false},
 
- 	}
 
- 	cfg := config.Wrap("/dev/null", config.Configuration{
 
- 		Options: config.OptionsConfiguration{
 
- 			AlwaysLocalNets: []string{"10.20.30.0/24"},
 
- 		},
 
- 	}, protocol.LocalDeviceID, events.NoopLogger)
 
- 	s := &lanChecker{cfg: cfg}
 
- 	for _, tc := range cases {
 
- 		res := s.isLANHost(tc.addr)
 
- 		if res != tc.lan {
 
- 			t.Errorf("isLANHost(%q) => %v, expected %v", tc.addr, res, tc.lan)
 
- 		}
 
- 	}
 
- }
 
 
  |