@@ -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