@@ -1503,6 +1503,143 @@ func TestInternalError(t *testing.T) {
15031503 }
15041504}
15051505
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+
15061643type response struct {
15071644 servers interface {}
15081645 statusCode int
0 commit comments