@@ -317,14 +317,14 @@ func Test_stateBuilder_services(t *testing.T) {
317
317
}
318
318
}
319
319
320
- func Test_stateBuilder_ingestRoutes (t * testing.T ) {
320
+ func Test_stateBuilder_ingestRoute (t * testing.T ) {
321
321
assert := assert .New (t )
322
322
rand .Seed (42 )
323
323
type fields struct {
324
324
currentState * state.KongState
325
325
}
326
326
type args struct {
327
- routes []kong. Route
327
+ route FRoute
328
328
}
329
329
tests := []struct {
330
330
name string
@@ -339,8 +339,8 @@ func Test_stateBuilder_ingestRoutes(t *testing.T) {
339
339
currentState : emptyState (),
340
340
},
341
341
args : args {
342
- routes : []kong. Route {
343
- {
342
+ route : FRoute {
343
+ Route : kong. Route {
344
344
Name : kong .String ("foo" ),
345
345
},
346
346
},
@@ -365,8 +365,8 @@ func Test_stateBuilder_ingestRoutes(t *testing.T) {
365
365
currentState : existingRouteState (),
366
366
},
367
367
args : args {
368
- routes : []kong. Route {
369
- {
368
+ route : FRoute {
369
+ Route : kong. Route {
370
370
Name : kong .String ("foo" ),
371
371
},
372
372
},
@@ -395,7 +395,7 @@ func Test_stateBuilder_ingestRoutes(t *testing.T) {
395
395
d , _ := utils .GetKongDefaulter ()
396
396
b .defaulter = d
397
397
b .intermediate , _ = state .NewKongState ()
398
- if err := b .ingestRoutes (tt .args .routes ); (err != nil ) != tt .wantErr {
398
+ if err := b .ingestRoute (tt .args .route ); (err != nil ) != tt .wantErr {
399
399
t .Errorf ("stateBuilder.ingestPlugins() error = %v, wantErr %v" , err , tt .wantErr )
400
400
}
401
401
assert .Equal (tt .wantState , b .rawState )
@@ -1418,3 +1418,208 @@ func Test_stateBuilder_upstream(t *testing.T) {
1418
1418
})
1419
1419
}
1420
1420
}
1421
+
1422
+ func Test_stateBuilder (t * testing.T ) {
1423
+ assert := assert .New (t )
1424
+ rand .Seed (42 )
1425
+ type fields struct {
1426
+ targetContent * Content
1427
+ currentState * state.KongState
1428
+ }
1429
+ tests := []struct {
1430
+ name string
1431
+ fields fields
1432
+ want * utils.KongRawState
1433
+ }{
1434
+ {
1435
+ name : "end to end test with all entities" ,
1436
+ fields : fields {
1437
+ targetContent : & Content {
1438
+ Info : & Info {
1439
+ SelectorTags : []string {"tag1" },
1440
+ },
1441
+ Services : []FService {
1442
+ {
1443
+ Service : kong.Service {
1444
+ Name : kong .String ("foo-service" ),
1445
+ },
1446
+ Routes : []* FRoute {
1447
+ {
1448
+ Route : kong.Route {
1449
+ Name : kong .String ("foo-route1" ),
1450
+ },
1451
+ },
1452
+ {
1453
+ Route : kong.Route {
1454
+ ID : kong .String ("d125e79a-297c-414b-bc00-ad3a87be6c2b" ),
1455
+ Name : kong .String ("foo-route2" ),
1456
+ },
1457
+ },
1458
+ },
1459
+ },
1460
+ {
1461
+ Service : kong.Service {
1462
+ Name : kong .String ("bar-service" ),
1463
+ },
1464
+ Routes : []* FRoute {
1465
+ {
1466
+ Route : kong.Route {
1467
+ Name : kong .String ("bar-route1" ),
1468
+ },
1469
+ },
1470
+ {
1471
+ Route : kong.Route {
1472
+ Name : kong .String ("bar-route2" ),
1473
+ },
1474
+ },
1475
+ },
1476
+ },
1477
+ },
1478
+ Upstreams : []FUpstream {
1479
+ {
1480
+ Upstream : kong.Upstream {
1481
+ Name : kong .String ("foo" ),
1482
+ Slots : kong .Int (42 ),
1483
+ },
1484
+ },
1485
+ },
1486
+ },
1487
+ currentState : existingServiceState (),
1488
+ },
1489
+ want : & utils.KongRawState {
1490
+ Services : []* kong.Service {
1491
+ {
1492
+ ID : kong .String ("538c7f96-b164-4f1b-97bb-9f4bb472e89f" ),
1493
+ Name : kong .String ("foo-service" ),
1494
+ Port : kong .Int (80 ),
1495
+ Retries : kong .Int (5 ),
1496
+ Protocol : kong .String ("http" ),
1497
+ ConnectTimeout : kong .Int (60000 ),
1498
+ WriteTimeout : kong .Int (60000 ),
1499
+ ReadTimeout : kong .Int (60000 ),
1500
+ Tags : kong .StringSlice ("tag1" ),
1501
+ },
1502
+ {
1503
+ ID : kong .String ("dfd79b4d-7642-4b61-ba0c-9f9f0d3ba55b" ),
1504
+ Name : kong .String ("bar-service" ),
1505
+ Port : kong .Int (80 ),
1506
+ Retries : kong .Int (5 ),
1507
+ Protocol : kong .String ("http" ),
1508
+ ConnectTimeout : kong .Int (60000 ),
1509
+ WriteTimeout : kong .Int (60000 ),
1510
+ ReadTimeout : kong .Int (60000 ),
1511
+ Tags : kong .StringSlice ("tag1" ),
1512
+ },
1513
+ },
1514
+ Routes : []* kong.Route {
1515
+ {
1516
+ ID : kong .String ("5b1484f2-5209-49d9-b43e-92ba09dd9d52" ),
1517
+ Name : kong .String ("foo-route1" ),
1518
+ PreserveHost : kong .Bool (false ),
1519
+ RegexPriority : kong .Int (0 ),
1520
+ StripPath : kong .Bool (false ),
1521
+ Protocols : kong .StringSlice ("http" , "https" ),
1522
+ Service : & kong.Service {
1523
+ ID : kong .String ("538c7f96-b164-4f1b-97bb-9f4bb472e89f" ),
1524
+ },
1525
+ Tags : kong .StringSlice ("tag1" ),
1526
+ },
1527
+ {
1528
+ ID : kong .String ("d125e79a-297c-414b-bc00-ad3a87be6c2b" ),
1529
+ Name : kong .String ("foo-route2" ),
1530
+ PreserveHost : kong .Bool (false ),
1531
+ RegexPriority : kong .Int (0 ),
1532
+ StripPath : kong .Bool (false ),
1533
+ Protocols : kong .StringSlice ("http" , "https" ),
1534
+ Service : & kong.Service {
1535
+ ID : kong .String ("538c7f96-b164-4f1b-97bb-9f4bb472e89f" ),
1536
+ },
1537
+ Tags : kong .StringSlice ("tag1" ),
1538
+ },
1539
+ {
1540
+ ID : kong .String ("0cc0d614-4c88-4535-841a-cbe0709b0758" ),
1541
+ Name : kong .String ("bar-route1" ),
1542
+ PreserveHost : kong .Bool (false ),
1543
+ RegexPriority : kong .Int (0 ),
1544
+ StripPath : kong .Bool (false ),
1545
+ Protocols : kong .StringSlice ("http" , "https" ),
1546
+ Service : & kong.Service {
1547
+ ID : kong .String ("dfd79b4d-7642-4b61-ba0c-9f9f0d3ba55b" ),
1548
+ },
1549
+ Tags : kong .StringSlice ("tag1" ),
1550
+ },
1551
+ {
1552
+ ID : kong .String ("083f61d3-75bc-42b4-9df4-f91929e18fda" ),
1553
+ Name : kong .String ("bar-route2" ),
1554
+ PreserveHost : kong .Bool (false ),
1555
+ RegexPriority : kong .Int (0 ),
1556
+ StripPath : kong .Bool (false ),
1557
+ Protocols : kong .StringSlice ("http" , "https" ),
1558
+ Service : & kong.Service {
1559
+ ID : kong .String ("dfd79b4d-7642-4b61-ba0c-9f9f0d3ba55b" ),
1560
+ },
1561
+ Tags : kong .StringSlice ("tag1" ),
1562
+ },
1563
+ },
1564
+ Upstreams : []* kong.Upstream {
1565
+ {
1566
+ ID : kong .String ("9e6f82e5-4e74-4e81-a79e-4bbd6fe34cdc" ),
1567
+ Name : kong .String ("foo" ),
1568
+ Slots : kong .Int (42 ),
1569
+ Healthchecks : & kong.Healthcheck {
1570
+ Active : & kong.ActiveHealthcheck {
1571
+ Concurrency : kong .Int (10 ),
1572
+ Healthy : & kong.Healthy {
1573
+ HTTPStatuses : []int {200 , 302 },
1574
+ Interval : kong .Int (0 ),
1575
+ Successes : kong .Int (0 ),
1576
+ },
1577
+ HTTPPath : kong .String ("/" ),
1578
+ HTTPSVerifyCertificate : kong .Bool (true ),
1579
+ Type : kong .String ("http" ),
1580
+ Timeout : kong .Int (1 ),
1581
+ Unhealthy : & kong.Unhealthy {
1582
+ HTTPFailures : kong .Int (0 ),
1583
+ TCPFailures : kong .Int (0 ),
1584
+ Timeouts : kong .Int (0 ),
1585
+ Interval : kong .Int (0 ),
1586
+ HTTPStatuses : []int {429 , 404 , 500 , 501 , 502 , 503 , 504 , 505 },
1587
+ },
1588
+ },
1589
+ Passive : & kong.PassiveHealthcheck {
1590
+ Healthy : & kong.Healthy {
1591
+ HTTPStatuses : []int {200 , 201 , 202 , 203 , 204 , 205 ,
1592
+ 206 , 207 , 208 , 226 , 300 , 301 , 302 , 303 , 304 , 305 ,
1593
+ 306 , 307 , 308 },
1594
+ Successes : kong .Int (0 ),
1595
+ },
1596
+ Unhealthy : & kong.Unhealthy {
1597
+ HTTPFailures : kong .Int (0 ),
1598
+ TCPFailures : kong .Int (0 ),
1599
+ Timeouts : kong .Int (0 ),
1600
+ HTTPStatuses : []int {429 , 500 , 503 },
1601
+ },
1602
+ },
1603
+ },
1604
+ HashOn : kong .String ("none" ),
1605
+ HashFallback : kong .String ("none" ),
1606
+ HashOnCookiePath : kong .String ("/" ),
1607
+ Tags : kong .StringSlice ("tag1" ),
1608
+ },
1609
+ },
1610
+ },
1611
+ },
1612
+ }
1613
+ for _ , tt := range tests {
1614
+ t .Run (tt .name , func (t * testing.T ) {
1615
+ b := & stateBuilder {
1616
+ targetContent : tt .fields .targetContent ,
1617
+ currentState : tt .fields .currentState ,
1618
+ }
1619
+ d , _ := utils .GetKongDefaulter ()
1620
+ b .defaulter = d
1621
+ b .build ()
1622
+ assert .Equal (tt .want , b .rawState )
1623
+ })
1624
+ }
1625
+ }
0 commit comments