mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 01:53:33 -06:00
70 lines
2.4 KiB
Go
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)
|
|
})
|
|
}
|