@@ -3,6 +3,7 @@ package birdwatcher
3
3
import (
4
4
"net"
5
5
"os"
6
+ "strings"
6
7
"testing"
7
8
8
9
"github.com/stretchr/testify/assert"
@@ -12,44 +13,104 @@ import (
12
13
func TestWriteBirdConfig (t * testing.T ) {
13
14
t .Parallel ()
14
15
15
- // open tempfile
16
- tmpFile , err := os .CreateTemp ("" , "bird_test" )
17
- require .NoError (t , err )
18
- defer os .Remove (tmpFile .Name ())
16
+ t .Run ("empty config" , func (t * testing.T ) {
17
+ t .Parallel ()
19
18
20
- prefixes := make (PrefixCollection )
21
- prefixes ["match_route" ] = NewPrefixSet ("match_route" )
19
+ // open tempfile
20
+ tmpFile , err := os .CreateTemp ("" , "bird_test" )
21
+ require .NoError (t , err )
22
+ defer os .Remove (tmpFile .Name ())
22
23
23
- // write bird config with empty prefix list
24
- err = writeBirdConfig (tmpFile .Name (), prefixes )
25
- require .NoError (t , err )
24
+ prefixes := make (PrefixCollection )
25
+ prefixes ["match_route" ] = NewPrefixSet ("match_route" )
26
26
27
- // read data from temp file and compare it to file fixture
28
- data , err := os . ReadFile (tmpFile .Name ())
29
- require .NoError (t , err )
27
+ // write bird config with empty prefix list
28
+ err = writeBirdConfig (tmpFile .Name (), prefixes , false )
29
+ require .NoError (t , err )
30
30
31
- fixture , err := os .ReadFile ("testdata/bird/config_empty" )
32
- require .NoError (t , err )
31
+ // read data from temp file and compare it to file fixture
32
+ data , err := os .ReadFile (tmpFile .Name ())
33
+ require .NoError (t , err )
33
34
34
- assert .Equal (t , fixture , data )
35
+ fixture , err := os .ReadFile ("testdata/bird/config_empty" )
36
+ require .NoError (t , err )
35
37
36
- for _ , pref := range []string {"1.2.3.4/32" , "2.3.4.5/26" , "3.4.5.6/24" , "4.5.6.7/21" } {
37
- _ , prf , _ := net .ParseCIDR (pref )
38
- prefixes ["match_route" ].Add (* prf )
39
- }
38
+ assert .Equal (t , string (fixture ), string (data ))
39
+ })
40
40
41
- // write bird config to it
42
- err = writeBirdConfig (tmpFile .Name (), prefixes )
43
- require .NoError (t , err )
41
+ t .Run ("one prefixset" , func (t * testing.T ) {
42
+ t .Parallel ()
44
43
45
- // read data from temp file and compare it to file fixture
46
- data , err = os .ReadFile (tmpFile .Name ())
47
- require .NoError (t , err )
44
+ // open tempfile
45
+ tmpFile , err := os .CreateTemp ("" , "bird_test" )
46
+ require .NoError (t , err )
47
+ defer os .Remove (tmpFile .Name ())
48
48
49
- fixture , err = os .ReadFile ("testdata/bird/config" )
50
- require .NoError (t , err )
49
+ prefixes := make (PrefixCollection )
50
+ prefixes ["match_route" ] = NewPrefixSet ("match_route" )
51
+
52
+ for _ , pref := range []string {"1.2.3.4/32" , "2.3.4.5/26" , "3.4.5.6/24" , "4.5.6.7/21" } {
53
+ _ , prf , _ := net .ParseCIDR (pref )
54
+ prefixes ["match_route" ].Add (* prf )
55
+ }
56
+
57
+ // write bird config to it
58
+ err = writeBirdConfig (tmpFile .Name (), prefixes , false )
59
+ require .NoError (t , err )
60
+
61
+ // read data from temp file and compare it to file fixture
62
+ data , err := os .ReadFile (tmpFile .Name ())
63
+ require .NoError (t , err )
64
+
65
+ fixture , err := os .ReadFile ("testdata/bird/config" )
66
+ require .NoError (t , err )
67
+
68
+ assert .Equal (t , string (fixture ), string (data ))
69
+ })
70
+
71
+ t .Run ("one prefix, compat" , func (t * testing.T ) {
72
+ t .Parallel ()
73
+
74
+ // open tempfile
75
+ tmpFile , err := os .CreateTemp ("" , "bird_test" )
76
+ require .NoError (t , err )
77
+ defer os .Remove (tmpFile .Name ())
78
+
79
+ prefixes := make (PrefixCollection )
80
+
81
+ prefixes ["other_function" ] = NewPrefixSet ("other_function" )
82
+ for _ , pref := range []string {"5.6.7.8/32" , "6.7.8.9/26" , "7.8.9.10/24" } {
83
+ _ , prf , _ := net .ParseCIDR (pref )
84
+ prefixes ["other_function" ].Add (* prf )
85
+ }
86
+
87
+ // write bird config to it
88
+ err = writeBirdConfig (tmpFile .Name (), prefixes , true )
89
+ require .NoError (t , err )
90
+
91
+ // read data from temp file and compare it to file fixture
92
+ data , err := os .ReadFile (tmpFile .Name ())
93
+ require .NoError (t , err )
94
+
95
+ fixture , err := os .ReadFile ("testdata/bird/config_compat" )
96
+ require .NoError (t , err )
97
+
98
+ assert .Equal (t , string (fixture ), string (data ))
99
+ })
100
+ }
101
+
102
+ func TestPrefixPad (t * testing.T ) {
103
+ t .Parallel ()
104
+
105
+ prefixes := make ([]net.IPNet , 4 )
106
+
107
+ for i , pref := range []string {"1.2.3.0/24" , "2.3.4.0/24" , "3.4.5.0/24" , "3.4.5.0/26" } {
108
+ _ , prf , _ := net .ParseCIDR (pref )
109
+ prefixes [i ] = * prf
110
+ }
51
111
52
- assert .Equal (t , fixture , data )
112
+ padded := prefixPad (prefixes )
113
+ assert .Equal (t , "1.2.3.0/24,2.3.4.0/24,3.4.5.0/24,3.4.5.0/26" , strings .Join (padded , "" ))
53
114
}
54
115
55
116
func TestBirdCompareFiles (t * testing.T ) {
0 commit comments