commit c6a697b11c41a39cbcc53eb2f878c836a4d15bf7
Author: David Fifield <[email protected]>
Date:   Wed Nov 13 22:55:36 2013 -0800

    Add tests for getServerBindaddrs.
---
 pt_test.go |  109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 109 insertions(+)

diff --git a/pt_test.go b/pt_test.go
index ff3373d..ee471fa 100644
--- a/pt_test.go
+++ b/pt_test.go
@@ -221,6 +221,115 @@ func TestResolveAddr(t *testing.T) {
        }
 }
 
+func bindaddrSliceContains(s []Bindaddr, v Bindaddr) bool {
+       for _, sv := range s {
+               if sv.MethodName == v.MethodName && tcpAddrsEqual(sv.Addr, 
v.Addr) {
+                       return true
+               }
+       }
+       return false
+}
+
+func bindaddrSetsEqual(a, b []Bindaddr) bool {
+       for _, v := range a {
+               if !bindaddrSliceContains(b, v) {
+                       return false
+               }
+       }
+       for _, v := range b {
+               if !bindaddrSliceContains(a, v) {
+                       return false
+               }
+       }
+       return true
+}
+
+func TestGetServerBindaddrs(t *testing.T) {
+       badTests := [...]struct {
+               ptServerBindaddr   string
+               ptServerTransports string
+               methodNames        []string
+       }{
+               {
+                       "xxx",
+                       "xxx",
+                       []string{},
+               },
+               {
+                       "alpha-1.2.3.4",
+                       "alpha",
+                       []string{"alpha", "beta", "gamma"},
+               },
+       }
+       goodTests := [...]struct {
+               ptServerBindaddr   string
+               ptServerTransports string
+               methodNames        []string
+               expected           []Bindaddr
+       }{
+               {
+                       "alpha-1.2.3.4:1111,beta-[1:2::3:4]:2222",
+                       "alpha,beta,gamma",
+                       []string{"alpha", "beta"},
+                       []Bindaddr{
+                               {"alpha", &net.TCPAddr{IP: 
net.ParseIP("1.2.3.4"), Port: 1111}},
+                               {"beta", &net.TCPAddr{IP: 
net.ParseIP("1:2::3:4"), Port: 2222}},
+                       },
+               },
+               {
+                       "alpha-1.2.3.4:1111",
+                       "xxx",
+                       []string{"alpha", "beta", "gamma"},
+                       []Bindaddr{},
+               },
+               {
+                       "alpha-1.2.3.4:1111",
+                       "alpha,beta,gamma",
+                       []string{},
+                       []Bindaddr{},
+               },
+               {
+                       "alpha-1.2.3.4:1111,beta-[1:2::3:4]:2222",
+                       "*",
+                       []string{"alpha", "beta"},
+                       []Bindaddr{
+                               {"alpha", &net.TCPAddr{IP: 
net.ParseIP("1.2.3.4"), Port: 1111}},
+                               {"beta", &net.TCPAddr{IP: 
net.ParseIP("1:2::3:4"), Port: 2222}},
+                       },
+               },
+       }
+
+       os.Clearenv()
+       _, err := getServerBindaddrs([]string{"alpha", "beta", "gamma"})
+       if err == nil {
+               t.Errorf("empty environment unexpectedly succeeded")
+       }
+
+       for _, test := range badTests {
+               os.Setenv("TOR_PT_SERVER_BINDADDR", test.ptServerBindaddr)
+               os.Setenv("TOR_PT_SERVER_TRANSPORTS", test.ptServerTransports)
+               _, err := getServerBindaddrs(test.methodNames)
+               if err == nil {
+                       t.Errorf("TOR_PT_SERVER_BINDADDR=%q 
TOR_PT_SERVER_TRANSPORTS=%q %q unexpectedly succeeded",
+                               test.ptServerBindaddr, test.ptServerTransports, 
test.methodNames)
+               }
+       }
+
+       for _, test := range goodTests {
+               os.Setenv("TOR_PT_SERVER_BINDADDR", test.ptServerBindaddr)
+               os.Setenv("TOR_PT_SERVER_TRANSPORTS", test.ptServerTransports)
+               output, err := getServerBindaddrs(test.methodNames)
+               if err != nil {
+                       t.Errorf("TOR_PT_SERVER_BINDADDR=%q 
TOR_PT_SERVER_TRANSPORTS=%q %q unexpectedly returned an error: %s",
+                               test.ptServerBindaddr, test.ptServerTransports, 
test.methodNames, err)
+               }
+               if !bindaddrSetsEqual(output, test.expected) {
+                       t.Errorf("TOR_PT_SERVER_BINDADDR=%q 
TOR_PT_SERVER_TRANSPORTS=%q %q → %q (expected %q)",
+                               test.ptServerBindaddr, test.ptServerTransports, 
test.methodNames, output, test.expected)
+               }
+       }
+}
+
 func TestReadAuthCookie(t *testing.T) {
        badTests := [...][]byte{
                []byte(""),

_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to