Skip to content

Commit 237b7f7

Browse files
committed
vultr: fix port parsing regression; add tests
1 parent 441156b commit 237b7f7

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed

vultr/resource_firewall_rule.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,9 @@ func resourceFirewallRuleDelete(d *schema.ResourceData, meta interface{}) error
173173
}
174174

175175
func splitFirewallRule(portRange string) (int, int, error) {
176+
if len(portRange) == 0 {
177+
return 0, 0, nil
178+
}
176179
ports := strings.Split(portRange, "-")
177180
from, err := strconv.Atoi(strings.TrimSpace(ports[0]))
178181
if err != nil {

vultr/resource_firewall_rule_test.go

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package vultr
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestSplitFirewallRule(t *testing.T) {
8+
cases := []struct {
9+
portRange string
10+
from int
11+
to int
12+
err bool
13+
}{
14+
{
15+
portRange: "",
16+
from: 0,
17+
to: 0,
18+
err: false,
19+
},
20+
{
21+
portRange: ":",
22+
from: 0,
23+
to: 0,
24+
err: true,
25+
},
26+
{
27+
portRange: "-",
28+
from: 0,
29+
to: 0,
30+
err: true,
31+
},
32+
{
33+
portRange: "22",
34+
from: 22,
35+
to: 22,
36+
err: false,
37+
},
38+
{
39+
portRange: "foo",
40+
from: 0,
41+
to: 0,
42+
err: true,
43+
},
44+
{
45+
portRange: "22:23",
46+
from: 0,
47+
to: 0,
48+
err: true,
49+
},
50+
{
51+
portRange: "22 - 23",
52+
from: 22,
53+
to: 23,
54+
err: false,
55+
},
56+
{
57+
portRange: "80-81",
58+
from: 80,
59+
to: 81,
60+
err: false,
61+
},
62+
}
63+
64+
for i, c := range cases {
65+
from, to, err := splitFirewallRule(c.portRange)
66+
if (err != nil) != c.err {
67+
no := "no"
68+
if c.err {
69+
no = "an"
70+
}
71+
t.Errorf("test case %d: expected %s error, got %v", i, no, err)
72+
}
73+
if from != c.from || to != c.to {
74+
t.Errorf("test case %d: expected range %d:%d, got %d:%d", i, c.from, c.to, from, to)
75+
}
76+
}
77+
}

0 commit comments

Comments
 (0)