JustBeforeEach(func() { server.AppendHandlers( ghttp.CombineHandlers( ghttp.VerifyRequest("POST", fmt.Sprintf("/containers/%s/net/out", handle)), verifyRequestBody(&rule, &garden.NetOutRule{}), ghttp.RespondWith(200, "{}"))) }) Context("when a NetOutRule is passed", func() { BeforeEach(func() { rule = garden.NetOutRule{ Protocol: garden.ProtocolICMP, Networks: []garden.IPRange{garden.IPRangeFromIP(net.ParseIP("1.2.3.4"))}, Ports: []garden.PortRange{garden.PortRangeFromPort(2), garden.PortRangeFromPort(4)}, ICMPs: &garden.ICMPControl{Type: 3, Code: garden.ICMPControlCode(3)}, Log: true, } }) It("should send the rule over the wire", func() { Ω(connection.NetOut(handle, rule)).Should(Succeed()) }) }) }) Describe("Listing containers", func() { BeforeEach(func() { server.AppendHandlers( ghttp.CombineHandlers( ghttp.VerifyRequest("GET", "/containers", "foo=bar"),
}) Describe("IPRangeFromIPNet", func() { It("Creates an IPRange with the Start and End set to the extent of the IPNet", func() { ip, cidr, err := net.ParseCIDR("1.2.3.0/24") Ω(err).Should(Succeed()) r := garden.IPRangeFromIPNet(cidr) Ω(r.Start.String()).Should(Equal(ip.String())) Ω(r.End.String()).Should(Equal("1.2.3.255")) }) }) Describe("PortRangeFromPort", func() { It("Creates an PortRange with the Start and End set to the passed port", func() { r := garden.PortRangeFromPort(2) Ω(r.Start).Should(Equal(uint16(2))) Ω(r.End).Should(Equal(r.Start)) }) }) Describe("ICMPControlCode", func() { It("returns an ICMPCode with the passed uint8", func() { var icmpVar *garden.ICMPCode code := garden.ICMPControlCode(uint8(2)) Ω(code).Should(BeAssignableToTypeOf(icmpVar)) Ω(*code).Should(BeNumerically("==", 2)) }) }) })