github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/joyent/environ_firewall_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 package joyent_test 4 5 import ( 6 "github.com/joyent/gosdc/cloudapi" 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/network" 11 "github.com/juju/juju/provider/joyent" 12 ) 13 14 type FirewallSuite struct{} 15 16 var _ = gc.Suite(&FirewallSuite{}) 17 18 func (s *FirewallSuite) TestGetIngressRules(c *gc.C) { 19 testCases := []struct { 20 about string 21 envName string 22 rules []cloudapi.FirewallRule 23 expected []network.IngressRule 24 }{ 25 { 26 "single port model rule", 27 "switch", 28 []cloudapi.FirewallRule{{ 29 "", 30 true, 31 "FROM tag switch TO tag juju ALLOW tcp PORT 80", 32 }}, 33 []network.IngressRule{network.MustNewIngressRule("tcp", 80, 80, "0.0.0.0/0")}, 34 }, 35 { 36 "port range model rule", 37 "switch", 38 []cloudapi.FirewallRule{{ 39 "", 40 true, 41 "FROM tag switch TO tag juju ALLOW tcp (PORT 80 AND PORT 81 AND PORT 82 AND PORT 83)", 42 }}, 43 []network.IngressRule{network.MustNewIngressRule("tcp", 80, 83, "0.0.0.0/0")}, 44 }, 45 } 46 for i, t := range testCases { 47 c.Logf("test %d: %s", i, t.about) 48 ports, err := joyent.GetPorts(t.envName, t.rules) 49 c.Assert(err, jc.ErrorIsNil) 50 c.Assert(ports, jc.DeepEquals, t.expected) 51 } 52 53 } 54 55 func (s *FirewallSuite) TestRuleCreation(c *gc.C) { 56 testCases := []struct { 57 about string 58 rules network.IngressRule 59 expected string 60 }{{ 61 "single port firewall rule", 62 network.MustNewIngressRule("tcp", 80, 80), 63 "FROM tag switch TO tag juju ALLOW tcp PORT 80", 64 }, { 65 "multiple port firewall rule", 66 network.MustNewIngressRule("tcp", 80, 81), 67 "FROM tag switch TO tag juju ALLOW tcp ( PORT 80 AND PORT 81 )", 68 }} 69 70 for i, t := range testCases { 71 c.Logf("test case %d: %s", i, t.about) 72 rule := joyent.CreateFirewallRuleAll("switch", t.rules) 73 c.Check(rule, gc.Equals, t.expected) 74 } 75 }