@@ -53,3 +53,109 @@ func TestIsEqualPrivateNetwork(t *testing.T) {
5353 })
5454 }
5555}
56+
57+ func TestPrivateNetworksCompare (t * testing.T ) {
58+ tests := []struct {
59+ name string
60+ oldPNs []* lbSDK.PrivateNetwork
61+ newPNs []* lbSDK.PrivateNetwork
62+ expectedToDetach []* lbSDK.PrivateNetwork
63+ expectedToAttach []* lbSDK.PrivateNetwork
64+ }{
65+ {
66+ name : "no changes" ,
67+ oldPNs : []* lbSDK.PrivateNetwork {
68+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
69+ {PrivateNetworkID : "pn2" , DHCPConfig : & lbSDK.PrivateNetworkDHCPConfig {}},
70+ },
71+ newPNs : []* lbSDK.PrivateNetwork {
72+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
73+ {PrivateNetworkID : "pn2" , DHCPConfig : & lbSDK.PrivateNetworkDHCPConfig {}},
74+ },
75+ expectedToDetach : []* lbSDK.PrivateNetwork (nil ),
76+ expectedToAttach : []* lbSDK.PrivateNetwork (nil ),
77+ },
78+ {
79+ name : "private network removed" ,
80+ oldPNs : []* lbSDK.PrivateNetwork {
81+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
82+ {PrivateNetworkID : "pn2" , DHCPConfig : & lbSDK.PrivateNetworkDHCPConfig {}},
83+ },
84+ newPNs : []* lbSDK.PrivateNetwork {
85+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
86+ },
87+ expectedToDetach : []* lbSDK.PrivateNetwork {
88+ {PrivateNetworkID : "pn2" , DHCPConfig : & lbSDK.PrivateNetworkDHCPConfig {}},
89+ },
90+ expectedToAttach : []* lbSDK.PrivateNetwork (nil ),
91+ },
92+ {
93+ name : "private network added" ,
94+ oldPNs : []* lbSDK.PrivateNetwork {
95+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
96+ },
97+ newPNs : []* lbSDK.PrivateNetwork {
98+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
99+ {PrivateNetworkID : "pn2" , DHCPConfig : & lbSDK.PrivateNetworkDHCPConfig {}},
100+ },
101+ expectedToDetach : []* lbSDK.PrivateNetwork (nil ),
102+ expectedToAttach : []* lbSDK.PrivateNetwork {
103+ {PrivateNetworkID : "pn2" , DHCPConfig : & lbSDK.PrivateNetworkDHCPConfig {}},
104+ },
105+ },
106+ {
107+ name : "private network static configuration changed" ,
108+ oldPNs : []* lbSDK.PrivateNetwork {
109+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
110+ },
111+ newPNs : []* lbSDK.PrivateNetwork {
112+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.2" })}},
113+ },
114+ expectedToDetach : []* lbSDK.PrivateNetwork {
115+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
116+ },
117+ expectedToAttach : []* lbSDK.PrivateNetwork {
118+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.2" })}},
119+ },
120+ },
121+ {
122+ name : "private network configuration changed from static to DHCP" ,
123+ oldPNs : []* lbSDK.PrivateNetwork {
124+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
125+ },
126+ newPNs : []* lbSDK.PrivateNetwork {
127+ {PrivateNetworkID : "pn1" , DHCPConfig : & lbSDK.PrivateNetworkDHCPConfig {}},
128+ },
129+ expectedToDetach : []* lbSDK.PrivateNetwork {
130+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
131+ },
132+ expectedToAttach : []* lbSDK.PrivateNetwork {
133+ {PrivateNetworkID : "pn1" , DHCPConfig : & lbSDK.PrivateNetworkDHCPConfig {}},
134+ },
135+ },
136+ {
137+ name : "multiple private networks removed" ,
138+ oldPNs : []* lbSDK.PrivateNetwork {
139+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
140+ {PrivateNetworkID : "pn2" , DHCPConfig : & lbSDK.PrivateNetworkDHCPConfig {}},
141+ {PrivateNetworkID : "pn3" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.3" })}},
142+ },
143+ newPNs : []* lbSDK.PrivateNetwork {
144+ {PrivateNetworkID : "pn1" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.1" })}},
145+ },
146+ expectedToDetach : []* lbSDK.PrivateNetwork {
147+ {PrivateNetworkID : "pn2" , DHCPConfig : & lbSDK.PrivateNetworkDHCPConfig {}},
148+ {PrivateNetworkID : "pn3" , StaticConfig : & lbSDK.PrivateNetworkStaticConfig {IPAddress : scw .StringsPtr ([]string {"192.168.1.3" })}},
149+ },
150+ expectedToAttach : []* lbSDK.PrivateNetwork (nil ),
151+ },
152+ }
153+
154+ for _ , tt := range tests {
155+ t .Run (tt .name , func (t * testing.T ) {
156+ toDetach , toAttach := lb .PrivateNetworksCompare (tt .oldPNs , tt .newPNs )
157+ assert .ElementsMatch (t , tt .expectedToDetach , toDetach )
158+ assert .ElementsMatch (t , tt .expectedToAttach , toAttach )
159+ })
160+ }
161+ }
0 commit comments