AUTH-2993 cleaned up worker service tests

This commit is contained in:
Dalton 2020-10-02 13:01:05 -05:00
parent 03d7320a44
commit be7b7c7149
1 changed files with 68 additions and 58 deletions

View File

@ -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"))
} }