@@ -13,6 +13,39 @@ import (
1313func TestGetLoadBalancersRequest (t * testing.T ) {
1414 assert .Equal (t , "/load-balancer" , (& GetLoadBalancersRequest {}).RequestURL ())
1515 assert .Equal (t , "/load-balancer?limit=50&offset=450" , (& GetLoadBalancersRequest {Page : & Page {Number : 10 , Size : 50 }}).RequestURL ())
16+
17+ assert .Equal (t , "/load-balancer?label=size&label=color%3Dred&limit=50&offset=450" , (& GetLoadBalancersRequest {
18+ Page : & Page {
19+ Number : 10 ,
20+ Size : 50 ,
21+ },
22+ Filters : []QueryFilter {
23+ FilterLabelKey {Key : "size" },
24+ FilterLabel {
25+ upcloud.Label {
26+ Key : "color" ,
27+ Value : "red" ,
28+ },
29+ },
30+ },
31+ }).RequestURL ())
32+
33+ // this should work also because Page is also QueryFilter
34+ assert .Equal (t , "/load-balancer?label=size&label=color%3Dred&limit=50&offset=450" , (& GetLoadBalancersRequest {
35+ Filters : []QueryFilter {
36+ & Page {
37+ Number : 10 ,
38+ Size : 50 ,
39+ },
40+ FilterLabelKey {Key : "size" },
41+ FilterLabel {
42+ upcloud.Label {
43+ Key : "color" ,
44+ Value : "red" ,
45+ },
46+ },
47+ },
48+ }).RequestURL ())
1649}
1750
1851func TestCreateLoadBalancerRequest (t * testing.T ) {
@@ -1263,3 +1296,85 @@ func ExampleCreateLoadBalancerRequest() {
12631296 fmt .Println (string (js ))
12641297 }
12651298}
1299+
1300+ func TestCreateLoadBalancerLabelsRequest (t * testing.T ) {
1301+ expected := `
1302+ {
1303+ "name": "example-service",
1304+ "plan": "development",
1305+ "zone": "fi-hel1",
1306+ "network_uuid": "03631160-d57a-4926-ad48-a2f828229dcb",
1307+ "configured_status": "started",
1308+ "frontends": [],
1309+ "backends": [],
1310+ "resolvers": [],
1311+ "labels": [
1312+ {
1313+ "key": "managedby",
1314+ "value": "upcloud-go-sdk-unit-test"
1315+ }
1316+ ]
1317+ }
1318+ `
1319+ r := CreateLoadBalancerRequest {
1320+ Name : "example-service" ,
1321+ Plan : "development" ,
1322+ Zone : "fi-hel1" ,
1323+ NetworkUUID : "03631160-d57a-4926-ad48-a2f828229dcb" ,
1324+ ConfiguredStatus : upcloud .LoadBalancerConfiguredStatusStarted ,
1325+ Frontends : []LoadBalancerFrontend {},
1326+ Backends : []LoadBalancerBackend {},
1327+ Resolvers : []LoadBalancerResolver {},
1328+ Labels : []upcloud.Label {
1329+ {
1330+ Key : "managedby" ,
1331+ Value : "upcloud-go-sdk-unit-test" ,
1332+ },
1333+ },
1334+ }
1335+ actual , err := json .Marshal (& r )
1336+ assert .NoError (t , err )
1337+ assert .JSONEq (t , expected , string (actual ))
1338+ }
1339+
1340+ func TestModifyLoadBalancerLabelsRequest (t * testing.T ) {
1341+ expected := `
1342+ {
1343+ "labels": [
1344+ {
1345+ "key": "managedby",
1346+ "value": "upcloud-go-sdk-unit-test"
1347+ }
1348+ ]
1349+ }
1350+ `
1351+ r := ModifyLoadBalancerRequest {
1352+ Labels : & []upcloud.Label {
1353+ {
1354+ Key : "managedby" ,
1355+ Value : "upcloud-go-sdk-unit-test" ,
1356+ },
1357+ },
1358+ }
1359+ actual , err := json .Marshal (& r )
1360+ assert .NoError (t , err )
1361+ assert .JSONEq (t , expected , string (actual ))
1362+
1363+ expected = `
1364+ {
1365+ "labels": []
1366+ }
1367+ `
1368+ r = ModifyLoadBalancerRequest {
1369+ Labels : & []upcloud.Label {},
1370+ }
1371+ actual , err = json .Marshal (& r )
1372+ assert .NoError (t , err )
1373+ assert .JSONEq (t , expected , string (actual ))
1374+
1375+ expected = `{}`
1376+ r = ModifyLoadBalancerRequest {}
1377+ actual , err = json .Marshal (& r )
1378+ assert .NoError (t , err )
1379+ assert .JSONEq (t , expected , string (actual ))
1380+ }
0 commit comments