AUTH-2993 cleaned up worker service tests
This commit is contained in:
parent
03d7320a44
commit
be7b7c7149
|
@ -10,11 +10,12 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func respondWithJSON(w http.ResponseWriter, v interface{}, status int) {
|
func respondWithJSON(w http.ResponseWriter, v interface{}, status int) {
|
||||||
|
@ -33,7 +34,7 @@ func respondWithData(w http.ResponseWriter, b []byte, status int) {
|
||||||
|
|
||||||
func updateHandler(w http.ResponseWriter, r *http.Request) {
|
func updateHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
version := "2020.08.05"
|
version := "2020.08.05"
|
||||||
host := "http://localhost:8090"
|
host := fmt.Sprintf("http://%s", r.Host)
|
||||||
url := host + "/download"
|
url := host + "/download"
|
||||||
|
|
||||||
query := r.URL.Query()
|
query := r.URL.Query()
|
||||||
|
@ -69,7 +70,8 @@ func gzipUpdateHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
fmt.Fprint(h, version)
|
fmt.Fprint(h, version)
|
||||||
checksum := fmt.Sprintf("%x", h.Sum(nil))
|
checksum := fmt.Sprintf("%x", h.Sum(nil))
|
||||||
|
|
||||||
v := VersionResponse{URL: "http://localhost:8090/gzip-download.tgz", Version: version, Checksum: checksum}
|
url := fmt.Sprintf("http://%s/gzip-download.tgz", r.Host)
|
||||||
|
v := VersionResponse{URL: url, Version: version, Checksum: checksum}
|
||||||
respondWithJSON(w, v, http.StatusOK)
|
respondWithJSON(w, v, http.StatusOK)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +112,7 @@ func failureHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
respondWithJSON(w, VersionResponse{Error: "unsupported os and architecture"}, http.StatusBadRequest)
|
respondWithJSON(w, VersionResponse{Error: "unsupported os and architecture"}, http.StatusBadRequest)
|
||||||
}
|
}
|
||||||
|
|
||||||
func startServer() {
|
func createServer() *httptest.Server {
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
mux.HandleFunc("/updater", updateHandler)
|
mux.HandleFunc("/updater", updateHandler)
|
||||||
mux.HandleFunc("/download", downloadHandler)
|
mux.HandleFunc("/download", downloadHandler)
|
||||||
|
@ -118,146 +120,154 @@ func startServer() {
|
||||||
mux.HandleFunc("/fail", failureHandler)
|
mux.HandleFunc("/fail", failureHandler)
|
||||||
mux.HandleFunc("/compressed", gzipUpdateHandler)
|
mux.HandleFunc("/compressed", gzipUpdateHandler)
|
||||||
mux.HandleFunc("/gzip-download.tgz", compressedDownloadHandler)
|
mux.HandleFunc("/gzip-download.tgz", compressedDownloadHandler)
|
||||||
http.ListenAndServe(":8090", mux)
|
return httptest.NewServer(mux)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createTestFile(t *testing.T, path string) {
|
func createTestFile(t *testing.T, path string) {
|
||||||
f, err := os.Create("tmpfile")
|
f, err := os.Create("tmpfile")
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
fmt.Fprint(f, "2020.08.04")
|
fmt.Fprint(f, "2020.08.04")
|
||||||
f.Close()
|
f.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateService(t *testing.T) {
|
func TestUpdateService(t *testing.T) {
|
||||||
go startServer()
|
ts := createServer()
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
testFilePath := "tmpfile"
|
testFilePath := "tmpfile"
|
||||||
createTestFile(t, testFilePath)
|
createTestFile(t, testFilePath)
|
||||||
defer os.Remove(testFilePath)
|
defer os.Remove(testFilePath)
|
||||||
|
log.Println("server url: ", ts.URL)
|
||||||
|
|
||||||
s := NewWorkersService("2020.8.2", "http://localhost:8090/updater", testFilePath, Options{})
|
s := NewWorkersService("2020.8.2", fmt.Sprintf("%s/updater", ts.URL), testFilePath, Options{})
|
||||||
v, err := s.Check()
|
v, err := s.Check()
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, v.String(), "2020.08.05")
|
require.Equal(t, v.String(), "2020.08.05")
|
||||||
|
|
||||||
assert.NoError(t, v.Apply())
|
require.NoError(t, v.Apply())
|
||||||
dat, err := ioutil.ReadFile(testFilePath)
|
dat, err := ioutil.ReadFile(testFilePath)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, string(dat), "2020.08.05")
|
require.Equal(t, string(dat), "2020.08.05")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBetaUpdateService(t *testing.T) {
|
func TestBetaUpdateService(t *testing.T) {
|
||||||
go startServer()
|
ts := createServer()
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
testFilePath := "tmpfile"
|
testFilePath := "tmpfile"
|
||||||
createTestFile(t, testFilePath)
|
createTestFile(t, testFilePath)
|
||||||
defer os.Remove(testFilePath)
|
defer os.Remove(testFilePath)
|
||||||
|
|
||||||
s := NewWorkersService("2020.8.2", "http://localhost:8090/updater", testFilePath, Options{IsBeta: true})
|
s := NewWorkersService("2020.8.2", fmt.Sprintf("%s/updater", ts.URL), testFilePath, Options{IsBeta: true})
|
||||||
v, err := s.Check()
|
v, err := s.Check()
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, v.String(), "2020.08.06")
|
require.Equal(t, v.String(), "2020.08.06")
|
||||||
|
|
||||||
assert.NoError(t, v.Apply())
|
require.NoError(t, v.Apply())
|
||||||
dat, err := ioutil.ReadFile(testFilePath)
|
dat, err := ioutil.ReadFile(testFilePath)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, string(dat), "2020.08.06")
|
require.Equal(t, string(dat), "2020.08.06")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFailUpdateService(t *testing.T) {
|
func TestFailUpdateService(t *testing.T) {
|
||||||
go startServer()
|
ts := createServer()
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
testFilePath := "tmpfile"
|
testFilePath := "tmpfile"
|
||||||
createTestFile(t, testFilePath)
|
createTestFile(t, testFilePath)
|
||||||
defer os.Remove(testFilePath)
|
defer os.Remove(testFilePath)
|
||||||
|
|
||||||
s := NewWorkersService("2020.8.2", "http://localhost:8090/fail", testFilePath, Options{})
|
s := NewWorkersService("2020.8.2", fmt.Sprintf("%s/fail", ts.URL), testFilePath, Options{})
|
||||||
v, err := s.Check()
|
v, err := s.Check()
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Nil(t, v)
|
require.Nil(t, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNoUpdateService(t *testing.T) {
|
func TestNoUpdateService(t *testing.T) {
|
||||||
go startServer()
|
ts := createServer()
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
testFilePath := "tmpfile"
|
testFilePath := "tmpfile"
|
||||||
createTestFile(t, testFilePath)
|
createTestFile(t, testFilePath)
|
||||||
defer os.Remove(testFilePath)
|
defer os.Remove(testFilePath)
|
||||||
|
|
||||||
s := NewWorkersService("2020.8.5", "http://localhost:8090/updater", testFilePath, Options{})
|
s := NewWorkersService("2020.8.5", fmt.Sprintf("%s/updater", ts.URL), testFilePath, Options{})
|
||||||
v, err := s.Check()
|
v, err := s.Check()
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Nil(t, v)
|
require.Nil(t, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestForcedUpdateService(t *testing.T) {
|
func TestForcedUpdateService(t *testing.T) {
|
||||||
go startServer()
|
ts := createServer()
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
testFilePath := "tmpfile"
|
testFilePath := "tmpfile"
|
||||||
createTestFile(t, testFilePath)
|
createTestFile(t, testFilePath)
|
||||||
defer os.Remove(testFilePath)
|
defer os.Remove(testFilePath)
|
||||||
|
|
||||||
s := NewWorkersService("2020.8.5", "http://localhost:8090/updater", testFilePath, Options{IsForced: true})
|
s := NewWorkersService("2020.8.5", fmt.Sprintf("%s/updater", ts.URL), testFilePath, Options{IsForced: true})
|
||||||
v, err := s.Check()
|
v, err := s.Check()
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, v.String(), "2020.08.05")
|
require.Equal(t, v.String(), "2020.08.05")
|
||||||
|
|
||||||
assert.NoError(t, v.Apply())
|
require.NoError(t, v.Apply())
|
||||||
dat, err := ioutil.ReadFile(testFilePath)
|
dat, err := ioutil.ReadFile(testFilePath)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, string(dat), "2020.08.05")
|
require.Equal(t, string(dat), "2020.08.05")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateSpecificVersionService(t *testing.T) {
|
func TestUpdateSpecificVersionService(t *testing.T) {
|
||||||
go startServer()
|
ts := createServer()
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
testFilePath := "tmpfile"
|
testFilePath := "tmpfile"
|
||||||
createTestFile(t, testFilePath)
|
createTestFile(t, testFilePath)
|
||||||
defer os.Remove(testFilePath)
|
defer os.Remove(testFilePath)
|
||||||
reqVersion := "2020.9.1"
|
reqVersion := "2020.9.1"
|
||||||
|
|
||||||
s := NewWorkersService("2020.8.2", "http://localhost:8090/updater", testFilePath, Options{RequestedVersion: reqVersion})
|
s := NewWorkersService("2020.8.2", fmt.Sprintf("%s/updater", ts.URL), testFilePath, Options{RequestedVersion: reqVersion})
|
||||||
v, err := s.Check()
|
v, err := s.Check()
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, reqVersion, v.String())
|
require.Equal(t, reqVersion, v.String())
|
||||||
|
|
||||||
assert.NoError(t, v.Apply())
|
require.NoError(t, v.Apply())
|
||||||
dat, err := ioutil.ReadFile(testFilePath)
|
dat, err := ioutil.ReadFile(testFilePath)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, reqVersion, string(dat))
|
require.Equal(t, reqVersion, string(dat))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCompressedUpdateService(t *testing.T) {
|
func TestCompressedUpdateService(t *testing.T) {
|
||||||
go startServer()
|
ts := createServer()
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
testFilePath := "tmpfile"
|
testFilePath := "tmpfile"
|
||||||
createTestFile(t, testFilePath)
|
createTestFile(t, testFilePath)
|
||||||
defer os.Remove(testFilePath)
|
defer os.Remove(testFilePath)
|
||||||
|
|
||||||
s := NewWorkersService("2020.8.2", "http://localhost:8090/compressed", testFilePath, Options{})
|
s := NewWorkersService("2020.8.2", fmt.Sprintf("%s/compressed", ts.URL), testFilePath, Options{})
|
||||||
v, err := s.Check()
|
v, err := s.Check()
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, "2020.09.02", v.String())
|
require.Equal(t, "2020.09.02", v.String())
|
||||||
|
|
||||||
assert.NoError(t, v.Apply())
|
require.NoError(t, v.Apply())
|
||||||
dat, err := ioutil.ReadFile(testFilePath)
|
dat, err := ioutil.ReadFile(testFilePath)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, "2020.09.02", string(dat))
|
require.Equal(t, "2020.09.02", string(dat))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVersionParsing(t *testing.T) {
|
func TestVersionParsing(t *testing.T) {
|
||||||
assert.False(t, IsNewerVersion("2020.8.2", "2020.8.2"))
|
require.False(t, IsNewerVersion("2020.8.2", "2020.8.2"))
|
||||||
assert.True(t, IsNewerVersion("2020.8.2", "2020.8.3"))
|
require.True(t, IsNewerVersion("2020.8.2", "2020.8.3"))
|
||||||
assert.True(t, IsNewerVersion("2020.8.2", "2021.1.2"))
|
require.True(t, IsNewerVersion("2020.8.2", "2021.1.2"))
|
||||||
assert.True(t, IsNewerVersion("2020.8.2", "2020.9.1"))
|
require.True(t, IsNewerVersion("2020.8.2", "2020.9.1"))
|
||||||
assert.True(t, IsNewerVersion("2020.8.2", "2020.12.45"))
|
require.True(t, IsNewerVersion("2020.8.2", "2020.12.45"))
|
||||||
assert.False(t, IsNewerVersion("2020.8.2", "2020.6.3"))
|
require.False(t, IsNewerVersion("2020.8.2", "2020.6.3"))
|
||||||
assert.False(t, IsNewerVersion("DEV", "2020.8.5"))
|
require.False(t, IsNewerVersion("DEV", "2020.8.5"))
|
||||||
assert.False(t, IsNewerVersion("2020.8.2", "asdlkfjasdf"))
|
require.False(t, IsNewerVersion("2020.8.2", "asdlkfjasdf"))
|
||||||
assert.True(t, IsNewerVersion("3.0.1", "4.2.1"))
|
require.True(t, IsNewerVersion("3.0.1", "4.2.1"))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue