grafana/pkg/build/versions/version_test.go
Dimitris Sotirakis 7e816d010c
G10: Replace beta with preview references (#68347)
* Update references

* Update grabpl to v3.0.38
2023-05-24 09:46:07 +02:00

70 lines
2.4 KiB
Go

package versions
import (
"encoding/json"
"fmt"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/require"
)
func TestIsGreaterThanOrEqual(t *testing.T) {
testCases := []struct {
newVersion string
stableVersion string
expected bool
}{
{newVersion: "9.0.0", stableVersion: "8.0.0", expected: true},
{newVersion: "6.0.0", stableVersion: "6.0.0", expected: true},
{newVersion: "7.0.0", stableVersion: "8.0.0", expected: false},
{newVersion: "8.5.0-preview1", stableVersion: "8.0.0", expected: true},
{newVersion: "8.5.0", stableVersion: "8.5.0-preview1", expected: true},
{newVersion: "9.0.0.1", stableVersion: "9.0.0", expected: true},
{newVersion: "9.0.0.2", stableVersion: "9.0.0.1", expected: true},
{newVersion: "9.1.0", stableVersion: "9.0.0.1", expected: true},
{newVersion: "9.1-0-preview1", stableVersion: "9.0.0.1", expected: true},
{newVersion: "9.0.0.1", stableVersion: "9.0.1.1", expected: false},
{newVersion: "9.0.1.1", stableVersion: "9.0.0.1", expected: true},
{newVersion: "9.0.0.1", stableVersion: "9.0.0.1", expected: true},
{newVersion: "7.0.0.1", stableVersion: "8.0.0", expected: false},
{newVersion: "9.1-0-preview1", stableVersion: "9.1-0-preview2", expected: false},
{newVersion: "9.1-0-preview3", stableVersion: "9.1-0-preview2", expected: true},
}
for _, tc := range testCases {
name := fmt.Sprintf("newVersion %s greater than or equal stableVersion %s = %v", tc.newVersion, tc.stableVersion, tc.expected)
t.Run(name, func(t *testing.T) {
result, err := IsGreaterThanOrEqual(tc.newVersion, tc.stableVersion)
require.NoError(t, err)
require.Equal(t, tc.expected, result)
})
}
}
func TestGetLatestVersion(t *testing.T) {
t.Run("it returns a version", func(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
response := VersionFromAPI{
Version: "8.4.0",
}
jsonRes, err := json.Marshal(&response)
require.NoError(t, err)
_, err = w.Write(jsonRes)
require.NoError(t, err)
}))
version, err := GetLatestVersion(server.URL)
require.NoError(t, err)
require.Equal(t, "8.4.0", version)
})
t.Run("it handles non 200 responses", func(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
w.WriteHeader(http.StatusInternalServerError)
}))
_, err := GetLatestVersion(server.URL)
require.Error(t, err)
})
}