Skip to content

Commit c24c58b

Browse files
authored
Update N+ license handling to reflect reporting section presence (#528)
1 parent f593732 commit c24c58b

File tree

2 files changed

+138
-1
lines changed

2 files changed

+138
-1
lines changed

client/nginx.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,9 +225,9 @@ type LicenseReporting struct {
225225

226226
// NginxLicense contains licensing information about NGINX Plus.
227227
type NginxLicense struct {
228+
Reporting *LicenseReporting
228229
ActiveTill uint64 `json:"active_till"`
229230
Eval bool
230-
Reporting LicenseReporting
231231
}
232232

233233
// Caches is a map of cache stats by cache zone.

client/nginx_test.go

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
15061643
type response struct {
15071644
servers interface{}
15081645
statusCode int

0 commit comments

Comments
 (0)