From be7b7c714901cc50aa5df85c776f79a0a80a73e8 Mon Sep 17 00:00:00 2001 From: Dalton Date: Fri, 2 Oct 2020 13:01:05 -0500 Subject: [PATCH] AUTH-2993 cleaned up worker service tests --- .../updater/workers_service_test.go | 126 ++++++++++-------- 1 file changed, 68 insertions(+), 58 deletions(-) diff --git a/cmd/cloudflared/updater/workers_service_test.go b/cmd/cloudflared/updater/workers_service_test.go index eefe478b..7eae8e0d 100644 --- a/cmd/cloudflared/updater/workers_service_test.go +++ b/cmd/cloudflared/updater/workers_service_test.go @@ -10,11 +10,12 @@ import ( "io/ioutil" "log" "net/http" + "net/http/httptest" "os" "runtime" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) 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) { version := "2020.08.05" - host := "http://localhost:8090" + host := fmt.Sprintf("http://%s", r.Host) url := host + "/download" query := r.URL.Query() @@ -69,7 +70,8 @@ func gzipUpdateHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(h, version) 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) } @@ -110,7 +112,7 @@ func failureHandler(w http.ResponseWriter, r *http.Request) { respondWithJSON(w, VersionResponse{Error: "unsupported os and architecture"}, http.StatusBadRequest) } -func startServer() { +func createServer() *httptest.Server { mux := http.NewServeMux() mux.HandleFunc("/updater", updateHandler) mux.HandleFunc("/download", downloadHandler) @@ -118,146 +120,154 @@ func startServer() { mux.HandleFunc("/fail", failureHandler) mux.HandleFunc("/compressed", gzipUpdateHandler) mux.HandleFunc("/gzip-download.tgz", compressedDownloadHandler) - http.ListenAndServe(":8090", mux) + return httptest.NewServer(mux) } func createTestFile(t *testing.T, path string) { f, err := os.Create("tmpfile") - assert.NoError(t, err) + require.NoError(t, err) fmt.Fprint(f, "2020.08.04") f.Close() } func TestUpdateService(t *testing.T) { - go startServer() + ts := createServer() + defer ts.Close() testFilePath := "tmpfile" createTestFile(t, 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() - assert.NoError(t, err) - assert.Equal(t, v.String(), "2020.08.05") + require.NoError(t, err) + require.Equal(t, v.String(), "2020.08.05") - assert.NoError(t, v.Apply()) + require.NoError(t, v.Apply()) 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) { - go startServer() + ts := createServer() + defer ts.Close() testFilePath := "tmpfile" createTestFile(t, 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() - assert.NoError(t, err) - assert.Equal(t, v.String(), "2020.08.06") + require.NoError(t, err) + require.Equal(t, v.String(), "2020.08.06") - assert.NoError(t, v.Apply()) + require.NoError(t, v.Apply()) 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) { - go startServer() + ts := createServer() + defer ts.Close() testFilePath := "tmpfile" createTestFile(t, 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() - assert.Error(t, err) - assert.Nil(t, v) + require.Error(t, err) + require.Nil(t, v) } func TestNoUpdateService(t *testing.T) { - go startServer() + ts := createServer() + defer ts.Close() testFilePath := "tmpfile" createTestFile(t, 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() - assert.NoError(t, err) - assert.Nil(t, v) + require.NoError(t, err) + require.Nil(t, v) } func TestForcedUpdateService(t *testing.T) { - go startServer() + ts := createServer() + defer ts.Close() testFilePath := "tmpfile" createTestFile(t, 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() - assert.NoError(t, err) - assert.Equal(t, v.String(), "2020.08.05") + require.NoError(t, err) + require.Equal(t, v.String(), "2020.08.05") - assert.NoError(t, v.Apply()) + require.NoError(t, v.Apply()) 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) { - go startServer() + ts := createServer() + defer ts.Close() testFilePath := "tmpfile" createTestFile(t, testFilePath) defer os.Remove(testFilePath) 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() - assert.NoError(t, err) - assert.Equal(t, reqVersion, v.String()) + require.NoError(t, err) + require.Equal(t, reqVersion, v.String()) - assert.NoError(t, v.Apply()) + require.NoError(t, v.Apply()) 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) { - go startServer() + ts := createServer() + defer ts.Close() testFilePath := "tmpfile" createTestFile(t, 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() - assert.NoError(t, err) - assert.Equal(t, "2020.09.02", v.String()) + require.NoError(t, err) + require.Equal(t, "2020.09.02", v.String()) - assert.NoError(t, v.Apply()) + require.NoError(t, v.Apply()) 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) { - assert.False(t, IsNewerVersion("2020.8.2", "2020.8.2")) - assert.True(t, IsNewerVersion("2020.8.2", "2020.8.3")) - assert.True(t, IsNewerVersion("2020.8.2", "2021.1.2")) - assert.True(t, IsNewerVersion("2020.8.2", "2020.9.1")) - assert.True(t, IsNewerVersion("2020.8.2", "2020.12.45")) - assert.False(t, IsNewerVersion("2020.8.2", "2020.6.3")) - assert.False(t, IsNewerVersion("DEV", "2020.8.5")) - assert.False(t, IsNewerVersion("2020.8.2", "asdlkfjasdf")) - assert.True(t, IsNewerVersion("3.0.1", "4.2.1")) + require.False(t, IsNewerVersion("2020.8.2", "2020.8.2")) + require.True(t, IsNewerVersion("2020.8.2", "2020.8.3")) + require.True(t, IsNewerVersion("2020.8.2", "2021.1.2")) + require.True(t, IsNewerVersion("2020.8.2", "2020.9.1")) + require.True(t, IsNewerVersion("2020.8.2", "2020.12.45")) + require.False(t, IsNewerVersion("2020.8.2", "2020.6.3")) + require.False(t, IsNewerVersion("DEV", "2020.8.5")) + require.False(t, IsNewerVersion("2020.8.2", "asdlkfjasdf")) + require.True(t, IsNewerVersion("3.0.1", "4.2.1")) }