@@ -1503,6 +1503,143 @@ func TestInternalError(t *testing.T) {
1503
1503
}
1504
1504
}
1505
1505
1506
+ func TestLicenseWithReporting (t * testing.T ) {
1507
+ t .Parallel ()
1508
+ ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
1509
+ switch {
1510
+ case r .RequestURI == "/" :
1511
+ _ , err := w .Write ([]byte (`[1,2,3,4,5,6,7,8,9]` ))
1512
+ if err != nil {
1513
+ t .Fatalf ("unexpected error: %v" , err )
1514
+ }
1515
+ case r .RequestURI == "/9/" :
1516
+ _ , err := w .Write ([]byte (`["nginx","processes","connections","slabs","http","resolvers","ssl","license","workers"]` ))
1517
+ if err != nil {
1518
+ t .Fatalf ("unexpected error: %v" , err )
1519
+ }
1520
+ case strings .HasPrefix (r .RequestURI , "/9/nginx" ):
1521
+ _ , err := w .Write ([]byte (`{
1522
+ "version": "1.29.0",
1523
+ "build": "nginx-plus-r34"
1524
+ }` ))
1525
+ if err != nil {
1526
+ t .Fatalf ("unexpected error: %v" , err )
1527
+ }
1528
+ case strings .HasPrefix (r .RequestURI , "/9/license" ):
1529
+ _ , err := w .Write ([]byte (`{
1530
+ "active_till" : 428250000,
1531
+ "eval": false,
1532
+ "reporting": {
1533
+ "healthy": true,
1534
+ "fails": 42,
1535
+ "grace": 86400
1536
+ }
1537
+ }` ))
1538
+ if err != nil {
1539
+ t .Fatalf ("unexpected error: %v" , err )
1540
+ }
1541
+ default :
1542
+ _ , err := w .Write ([]byte (`{}` ))
1543
+ if err != nil {
1544
+ t .Fatalf ("unexpected error: %v" , err )
1545
+ }
1546
+ }
1547
+ }))
1548
+ defer ts .Close ()
1549
+
1550
+ client , err := NewNginxClient (ts .URL , WithAPIVersion (9 ), WithCheckAPI ())
1551
+ if err != nil {
1552
+ t .Fatalf ("unexpected error: %v" , err )
1553
+ }
1554
+ if client == nil {
1555
+ t .Fatalf ("client is nil" )
1556
+ }
1557
+
1558
+ license , err := client .GetNginxLicense (context .Background ())
1559
+ if err != nil {
1560
+ t .Fatalf ("unexpected error: %v" , err )
1561
+ }
1562
+
1563
+ testReporting := LicenseReporting {
1564
+ Healthy : true ,
1565
+ Fails : 42 ,
1566
+ Grace : 86400 ,
1567
+ }
1568
+
1569
+ testLicense := NginxLicense {
1570
+ ActiveTill : 428250000 ,
1571
+ Eval : false ,
1572
+ Reporting : & testReporting ,
1573
+ }
1574
+
1575
+ if ! reflect .DeepEqual (license , & testLicense ) {
1576
+ t .Fatalf ("NGINX license: expected %v, actual %v; NGINX reporting: expected %v, actual %v" , testLicense , license , testReporting , license .Reporting )
1577
+ }
1578
+ }
1579
+
1580
+ func TestLicenseWithoutReporting (t * testing.T ) {
1581
+ t .Parallel ()
1582
+ ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
1583
+ switch {
1584
+ case r .RequestURI == "/" :
1585
+ _ , err := w .Write ([]byte (`[1,2,3,4,5,6,7,8,9]` ))
1586
+ if err != nil {
1587
+ t .Fatalf ("unexpected error: %v" , err )
1588
+ }
1589
+ case r .RequestURI == "/9/" :
1590
+ _ , err := w .Write ([]byte (`["nginx","processes","connections","slabs","http","resolvers","ssl","license","workers"]` ))
1591
+ if err != nil {
1592
+ t .Fatalf ("unexpected error: %v" , err )
1593
+ }
1594
+ case strings .HasPrefix (r .RequestURI , "/9/nginx" ):
1595
+ _ , err := w .Write ([]byte (`{
1596
+ "version": "1.29.0",
1597
+ "build": "nginx-plus-r34"
1598
+ }` ))
1599
+ if err != nil {
1600
+ t .Fatalf ("unexpected error: %v" , err )
1601
+ }
1602
+ case strings .HasPrefix (r .RequestURI , "/9/license" ):
1603
+ _ , err := w .Write ([]byte (`{
1604
+ "active_till" : 428250000,
1605
+ "eval": false
1606
+ }` ))
1607
+ if err != nil {
1608
+ t .Fatalf ("unexpected error: %v" , err )
1609
+ }
1610
+ default :
1611
+ _ , err := w .Write ([]byte (`{}` ))
1612
+ if err != nil {
1613
+ t .Fatalf ("unexpected error: %v" , err )
1614
+ }
1615
+ }
1616
+ }))
1617
+ defer ts .Close ()
1618
+
1619
+ client , err := NewNginxClient (ts .URL , WithAPIVersion (9 ), WithCheckAPI ())
1620
+ if err != nil {
1621
+ t .Fatalf ("unexpected error: %v" , err )
1622
+ }
1623
+ if client == nil {
1624
+ t .Fatalf ("client is nil" )
1625
+ }
1626
+
1627
+ license , err := client .GetNginxLicense (context .Background ())
1628
+ if err != nil {
1629
+ t .Fatalf ("unexpected error: %v" , err )
1630
+ }
1631
+
1632
+ testLicense := NginxLicense {
1633
+ ActiveTill : 428250000 ,
1634
+ Eval : false ,
1635
+ Reporting : nil ,
1636
+ }
1637
+
1638
+ if ! reflect .DeepEqual (license , & testLicense ) {
1639
+ t .Fatalf ("NGINX license: expected %v, actual %v" , testLicense , license )
1640
+ }
1641
+ }
1642
+
1506
1643
type response struct {
1507
1644
servers interface {}
1508
1645
statusCode int
0 commit comments