github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/provider/gce/google/conn_network_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package google_test 5 6 import ( 7 "sort" 8 9 "github.com/juju/errors" 10 jc "github.com/juju/testing/checkers" 11 "google.golang.org/api/compute/v1" 12 gc "gopkg.in/check.v1" 13 14 "github.com/juju/juju/network" 15 ) 16 17 func (s *connSuite) TestConnectionPorts(c *gc.C) { 18 s.FakeConn.Firewall = &compute.Firewall{ 19 Name: "spam", 20 TargetTags: []string{"spam"}, 21 SourceRanges: []string{"0.0.0.0/0"}, 22 Allowed: []*compute.FirewallAllowed{{ 23 IPProtocol: "tcp", 24 Ports: []string{"80-81"}, 25 }}, 26 } 27 28 ports, err := s.Conn.Ports("spam") 29 c.Assert(err, jc.ErrorIsNil) 30 31 c.Check(ports, jc.DeepEquals, []network.PortRange{{ 32 FromPort: 80, 33 ToPort: 81, 34 Protocol: "tcp", 35 }}) 36 } 37 38 func (s *connSuite) TestConnectionPortsAPI(c *gc.C) { 39 s.FakeConn.Firewall = &compute.Firewall{ 40 Name: "spam", 41 TargetTags: []string{"spam"}, 42 SourceRanges: []string{"0.0.0.0/0"}, 43 Allowed: []*compute.FirewallAllowed{{ 44 IPProtocol: "tcp", 45 Ports: []string{"80-81"}, 46 }}, 47 } 48 49 _, err := s.Conn.Ports("eggs") 50 c.Assert(err, jc.ErrorIsNil) 51 52 c.Check(s.FakeConn.Calls, gc.HasLen, 1) 53 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetFirewall") 54 c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam") 55 c.Check(s.FakeConn.Calls[0].Name, gc.Equals, "eggs") 56 } 57 58 func (s *connSuite) TestConnectionOpenPortsAdd(c *gc.C) { 59 s.FakeConn.Err = errors.NotFoundf("spam") 60 61 ports := network.PortRange{ 62 FromPort: 80, 63 ToPort: 81, 64 Protocol: "tcp", 65 } 66 err := s.Conn.OpenPorts("spam", ports) 67 c.Assert(err, jc.ErrorIsNil) 68 69 c.Check(s.FakeConn.Calls, gc.HasLen, 2) 70 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetFirewall") 71 c.Check(s.FakeConn.Calls[1].FuncName, gc.Equals, "AddFirewall") 72 sort.Strings(s.FakeConn.Calls[1].Firewall.Allowed[0].Ports) 73 c.Check(s.FakeConn.Calls[1].Firewall, jc.DeepEquals, &compute.Firewall{ 74 Name: "spam", 75 TargetTags: []string{"spam"}, 76 SourceRanges: []string{"0.0.0.0/0"}, 77 Allowed: []*compute.FirewallAllowed{{ 78 IPProtocol: "tcp", 79 Ports: []string{"80", "81"}, 80 }}, 81 }) 82 } 83 84 func (s *connSuite) TestConnectionOpenPortsUpdate(c *gc.C) { 85 s.FakeConn.Firewall = &compute.Firewall{ 86 Name: "spam", 87 TargetTags: []string{"spam"}, 88 SourceRanges: []string{"0.0.0.0/0"}, 89 Allowed: []*compute.FirewallAllowed{{ 90 IPProtocol: "tcp", 91 Ports: []string{"80-81"}, 92 }}, 93 } 94 95 ports := network.PortRange{ 96 FromPort: 443, 97 ToPort: 443, 98 Protocol: "tcp", 99 } 100 err := s.Conn.OpenPorts("spam", ports) 101 c.Assert(err, jc.ErrorIsNil) 102 103 c.Check(s.FakeConn.Calls, gc.HasLen, 2) 104 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetFirewall") 105 c.Check(s.FakeConn.Calls[1].FuncName, gc.Equals, "UpdateFirewall") 106 sort.Strings(s.FakeConn.Calls[1].Firewall.Allowed[0].Ports) 107 c.Check(s.FakeConn.Calls[1].Firewall, jc.DeepEquals, &compute.Firewall{ 108 Name: "spam", 109 TargetTags: []string{"spam"}, 110 SourceRanges: []string{"0.0.0.0/0"}, 111 Allowed: []*compute.FirewallAllowed{{ 112 IPProtocol: "tcp", 113 Ports: []string{"443", "80", "81"}, 114 }}, 115 }) 116 } 117 118 func (s *connSuite) TestConnectionClosePortsRemove(c *gc.C) { 119 s.FakeConn.Firewall = &compute.Firewall{ 120 Name: "spam", 121 TargetTags: []string{"spam"}, 122 SourceRanges: []string{"0.0.0.0/0"}, 123 Allowed: []*compute.FirewallAllowed{{ 124 IPProtocol: "tcp", 125 Ports: []string{"443"}, 126 }}, 127 } 128 129 ports := network.PortRange{ 130 FromPort: 443, 131 ToPort: 443, 132 Protocol: "tcp", 133 } 134 err := s.Conn.ClosePorts("spam", ports) 135 c.Assert(err, jc.ErrorIsNil) 136 137 c.Check(s.FakeConn.Calls, gc.HasLen, 2) 138 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetFirewall") 139 c.Check(s.FakeConn.Calls[1].FuncName, gc.Equals, "RemoveFirewall") 140 c.Check(s.FakeConn.Calls[1].Name, gc.Equals, "spam") 141 } 142 143 func (s *connSuite) TestConnectionClosePortsUpdate(c *gc.C) { 144 s.FakeConn.Firewall = &compute.Firewall{ 145 Name: "spam", 146 TargetTags: []string{"spam"}, 147 SourceRanges: []string{"0.0.0.0/0"}, 148 Allowed: []*compute.FirewallAllowed{{ 149 IPProtocol: "tcp", 150 Ports: []string{"80-81", "443"}, 151 }}, 152 } 153 154 ports := network.PortRange{ 155 FromPort: 443, 156 ToPort: 443, 157 Protocol: "tcp", 158 } 159 err := s.Conn.ClosePorts("spam", ports) 160 c.Assert(err, jc.ErrorIsNil) 161 162 c.Check(s.FakeConn.Calls, gc.HasLen, 2) 163 c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetFirewall") 164 c.Check(s.FakeConn.Calls[1].FuncName, gc.Equals, "UpdateFirewall") 165 sort.Strings(s.FakeConn.Calls[1].Firewall.Allowed[0].Ports) 166 c.Check(s.FakeConn.Calls[1].Firewall, jc.DeepEquals, &compute.Firewall{ 167 Name: "spam", 168 TargetTags: []string{"spam"}, 169 SourceRanges: []string{"0.0.0.0/0"}, 170 Allowed: []*compute.FirewallAllowed{{ 171 IPProtocol: "tcp", 172 Ports: []string{"80", "81"}, 173 }}, 174 }) 175 }