diff --git a/ci/integration/envs_test.go b/ci/integration/envs_test.go index 1a9de9ce..e915b017 100644 --- a/ci/integration/envs_test.go +++ b/ci/integration/envs_test.go @@ -14,7 +14,6 @@ import ( "cdr.dev/slog/sloggers/slogtest" "cdr.dev/slog/sloggers/slogtest/assert" "github.com/google/go-cmp/cmp" - "github.com/stretchr/testify/require" "cdr.dev/coder-cli/coder-sdk" "cdr.dev/coder-cli/pkg/tcli" @@ -30,7 +29,7 @@ func cleanupClient(ctx context.Context, t *testing.T) coder.Client { BaseURL: u, Token: creds.token, }) - require.NoError(t, err, "failed to create coder.Client") + assert.Success(t, "failed to create coder.Client", err) return client } diff --git a/coder-sdk/activity_test.go b/coder-sdk/activity_test.go index 778ba48a..807b04f9 100644 --- a/coder-sdk/activity_test.go +++ b/coder-sdk/activity_test.go @@ -8,7 +8,7 @@ import ( "net/url" "testing" - "github.com/stretchr/testify/require" + "cdr.dev/slog/sloggers/slogtest/assert" "cdr.dev/coder-cli/coder-sdk" ) @@ -19,8 +19,8 @@ func TestPushActivity(t *testing.T) { const source = "test" const envID = "602d377a-e6b8d763cae7561885c5f1b2" server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, http.MethodPost, r.Method, "PushActivity is a POST") - require.Equal(t, "/api/private/metrics/usage/push", r.URL.Path) + assert.Equal(t, "PushActivity is a POST", http.MethodPost, r.Method) + assert.Equal(t, "URL matches", "/api/private/metrics/usage/push", r.URL.Path) expected := map[string]interface{}{ "source": source, @@ -28,8 +28,8 @@ func TestPushActivity(t *testing.T) { } var request map[string]interface{} err := json.NewDecoder(r.Body).Decode(&request) - require.NoError(t, err, "error decoding JSON") - require.EqualValues(t, expected, request, "unexpected request data") + assert.Success(t, "error decoding JSON", err) + assert.Equal(t, "unexpected request data", expected, request) w.WriteHeader(http.StatusOK) })) @@ -38,14 +38,14 @@ func TestPushActivity(t *testing.T) { }) u, err := url.Parse(server.URL) - require.NoError(t, err, "failed to parse test server URL") + assert.Success(t, "failed to parse test server URL", err) client, err := coder.NewClient(coder.ClientOptions{ BaseURL: u, Token: "SwdcSoq5Jc-0C1r8wfwm7h6h9i0RDk7JT", }) - require.NoError(t, err, "failed to create coder.Client") + assert.Success(t, "failed to create coder.Client", err) err = client.PushActivity(context.Background(), source, envID) - require.NoError(t, err) + assert.Success(t, "expected successful response from PushActivity", err) } diff --git a/coder-sdk/client_test.go b/coder-sdk/client_test.go index 854a9aa5..732678d0 100644 --- a/coder-sdk/client_test.go +++ b/coder-sdk/client_test.go @@ -9,7 +9,7 @@ import ( "testing" "time" - "github.com/stretchr/testify/require" + "cdr.dev/slog/sloggers/slogtest/assert" "cdr.dev/coder-cli/coder-sdk" ) @@ -21,7 +21,7 @@ func TestAuthentication(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { gotToken := r.Header.Get("Session-Token") - require.Equal(t, token, gotToken, "token does not match") + assert.Equal(t, "token does not match", token, gotToken) w.WriteHeader(http.StatusServiceUnavailable) })) @@ -30,19 +30,19 @@ func TestAuthentication(t *testing.T) { }) u, err := url.Parse(server.URL) - require.NoError(t, err, "failed to parse test server URL") + assert.Success(t, "failed to parse test server URL", err) client, err := coder.NewClient(coder.ClientOptions{ BaseURL: u, Token: token, }) - require.NoError(t, err, "failed to create coder.Client") + assert.Success(t, "failed to create coder.Client", err) - require.Equal(t, token, client.Token(), "expected Token to match") - require.EqualValues(t, *u, client.BaseURL(), "expected BaseURL to match") + assert.Equal(t, "expected Token to match", token, client.Token()) + assert.Equal(t, "expected BaseURL to match", *u, client.BaseURL()) _, err = client.APIVersion(context.Background()) - require.NoError(t, err, "failed to get API version information") + assert.Success(t, "failed to get API version information", err) } func TestPasswordAuthentication(t *testing.T) { @@ -54,7 +54,7 @@ func TestPasswordAuthentication(t *testing.T) { mux := http.NewServeMux() mux.HandleFunc("/auth/basic/login", func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, r.Method, http.MethodPost, "login is a POST") + assert.Equal(t, "login is a POST", http.MethodPost, r.Method) expected := map[string]interface{}{ "email": email, @@ -62,8 +62,8 @@ func TestPasswordAuthentication(t *testing.T) { } var request map[string]interface{} err := json.NewDecoder(r.Body).Decode(&request) - require.NoError(t, err, "error decoding JSON") - require.EqualValues(t, expected, request, "unexpected request data") + assert.Success(t, "error decoding JSON", err) + assert.Equal(t, "unexpected request data", expected, request) response := map[string]interface{}{ "session_token": token, @@ -71,12 +71,13 @@ func TestPasswordAuthentication(t *testing.T) { w.WriteHeader(http.StatusOK) err = json.NewEncoder(w).Encode(response) - require.NoError(t, err, "error encoding JSON") + assert.Success(t, "error encoding JSON", err) }) mux.HandleFunc("/api/v0/users/me", func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, http.MethodGet, r.Method, "Users is a GET") + assert.Equal(t, "Users is a GET", http.MethodGet, r.Method) - require.Equal(t, token, r.Header.Get("Session-Token"), "expected session token to match return of login") + gotToken := r.Header.Get("Session-Token") + assert.Equal(t, "expected session token to match return of login", token, gotToken) user := map[string]interface{}{ "id": "default", @@ -93,7 +94,7 @@ func TestPasswordAuthentication(t *testing.T) { w.WriteHeader(http.StatusOK) err := json.NewEncoder(w).Encode(user) - require.NoError(t, err, "error encoding JSON") + assert.Success(t, "error encoding JSON", err) }) server := httptest.NewTLSServer(mux) t.Cleanup(func() { @@ -101,8 +102,8 @@ func TestPasswordAuthentication(t *testing.T) { }) u, err := url.Parse(server.URL) - require.NoError(t, err, "failed to parse test server URL") - require.Equal(t, "https", u.Scheme, "expected HTTPS base URL") + assert.Success(t, "failed to parse test server URL", err) + assert.Equal(t, "expected HTTPS base URL", "https", u.Scheme) client, err := coder.NewClient(coder.ClientOptions{ BaseURL: u, @@ -110,20 +111,20 @@ func TestPasswordAuthentication(t *testing.T) { Email: email, Password: password, }) - require.NoError(t, err, "failed to create Client") - require.Equal(t, token, client.Token(), "expected token to match") + assert.Success(t, "failed to create Client", err) + assert.Equal(t, "expected token to match", token, client.Token()) user, err := client.Me(context.Background()) - require.NoError(t, err, "failed to get information about current user") - require.Equal(t, email, user.Email, "expected test user") + assert.Success(t, "failed to get information about current user", err) + assert.Equal(t, "expected test user", email, user.Email) } func TestContextRoot(t *testing.T) { t.Parallel() server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, r.Method, http.MethodGet, "Users is a GET") - require.Equal(t, r.URL.Path, "/context-root/api/v0/users") + assert.Equal(t, "Users is a GET", http.MethodGet, r.Method) + assert.Equal(t, "expected context root", "/context-root/api/v0/users", r.URL.Path) w.WriteHeader(http.StatusServiceUnavailable) })) @@ -137,7 +138,7 @@ func TestContextRoot(t *testing.T) { } u, err := url.Parse(server.URL) - require.NoError(t, err, "failed to parse test server URL") + assert.Success(t, "failed to parse test server URL", err) for _, prefix := range contextRoots { u.Path = prefix @@ -146,9 +147,9 @@ func TestContextRoot(t *testing.T) { BaseURL: u, Token: "FrOgA6xhpM-p5nTfsupmvzYJA6DJSOUoE", }) - require.NoError(t, err, "failed to create coder.Client") + assert.Success(t, "failed to create coder.Client", err) _, err = client.Users(context.Background()) - require.Error(t, err, "expected 503 error") + assert.Error(t, "expected 503 error", err) } } diff --git a/coder-sdk/users_test.go b/coder-sdk/users_test.go index f8db4b0d..31240880 100644 --- a/coder-sdk/users_test.go +++ b/coder-sdk/users_test.go @@ -9,7 +9,7 @@ import ( "testing" "time" - "github.com/stretchr/testify/require" + "cdr.dev/slog/sloggers/slogtest/assert" "cdr.dev/coder-cli/coder-sdk" ) @@ -21,8 +21,8 @@ func TestUsers(t *testing.T) { const name = "Charlie Root" server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, http.MethodGet, r.Method, "Users is a GET") - require.Equal(t, "/api/v0/users", r.URL.Path) + assert.Equal(t, "Users is a GET", http.MethodGet, r.Method) + assert.Equal(t, "Path matches", "/api/v0/users", r.URL.Path) users := []map[string]interface{}{ { @@ -41,26 +41,26 @@ func TestUsers(t *testing.T) { w.WriteHeader(http.StatusOK) err := json.NewEncoder(w).Encode(users) - require.NoError(t, err, "error encoding JSON") + assert.Success(t, "error encoding JSON", err) })) t.Cleanup(func() { server.Close() }) u, err := url.Parse(server.URL) - require.NoError(t, err, "failed to parse test server URL") + assert.Success(t, "failed to parse test server URL", err) client, err := coder.NewClient(coder.ClientOptions{ BaseURL: u, Token: "JcmErkJjju-KSrztst0IJX7xGJhKQPtfv", }) - require.NoError(t, err, "failed to create coder.Client") + assert.Success(t, "failed to create coder.Client", err) users, err := client.Users(context.Background()) - require.NoError(t, err, "error getting Users") - require.Len(t, users, 1, "users should return a single user") - require.Equal(t, name, users[0].Name) - require.Equal(t, username, users[0].Username) + assert.Success(t, "error getting Users", err) + assert.True(t, "users should return a single user", len(users) == 1) + assert.Equal(t, "expected user's name to match", name, users[0].Name) + assert.Equal(t, "expected user's username to match", username, users[0].Username) } func TestUserUpdatePassword(t *testing.T) { @@ -70,8 +70,8 @@ func TestUserUpdatePassword(t *testing.T) { const newPassword = "wmf39jw2f7pk" server := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, http.MethodPatch, r.Method, "Users is a PATCH") - require.Equal(t, "/api/v0/users/me", r.URL.Path) + assert.Equal(t, "Users is a PATCH", http.MethodPatch, r.Method) + assert.Equal(t, "Path matches", "/api/v0/users/me", r.URL.Path) expected := map[string]interface{}{ "old_password": oldPassword, @@ -79,8 +79,8 @@ func TestUserUpdatePassword(t *testing.T) { } var request map[string]interface{} err := json.NewDecoder(r.Body).Decode(&request) - require.NoError(t, err, "error decoding JSON") - require.EqualValues(t, expected, request, "unexpected request data") + assert.Success(t, "error decoding JSON", err) + assert.Equal(t, "unexpected request data", expected, request) w.WriteHeader(http.StatusOK) })) @@ -89,14 +89,14 @@ func TestUserUpdatePassword(t *testing.T) { }) u, err := url.Parse(server.URL) - require.NoError(t, err, "failed to parse test server URL") + assert.Success(t, "failed to parse test server URL", err) client, err := coder.NewClient(coder.ClientOptions{ BaseURL: u, HTTPClient: server.Client(), Token: "JcmErkJjju-KSrztst0IJX7xGJhKQPtfv", }) - require.NoError(t, err, "failed to create coder.Client") + assert.Success(t, "failed to create coder.Client", err) err = client.UpdateUser(context.Background(), "me", coder.UpdateUserReq{ UserPasswordSettings: &coder.UserPasswordSettings{ @@ -105,5 +105,5 @@ func TestUserUpdatePassword(t *testing.T) { Temporary: false, }, }) - require.NoError(t, err, "error when updating password") + assert.Success(t, "error when updating password", err) } diff --git a/go.mod b/go.mod index cbc0fd04..8a141975 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4 github.com/rjeczalik/notify v0.9.2 github.com/spf13/cobra v1.1.1 - github.com/stretchr/testify v1.6.1 + github.com/stretchr/testify v1.6.1 // indirect golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 golang.org/x/net v0.0.0-20200822124328-c89045814202 // indirect golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 diff --git a/internal/loginsrv/input_test.go b/internal/loginsrv/input_test.go index ee507318..c17cb569 100644 --- a/internal/loginsrv/input_test.go +++ b/internal/loginsrv/input_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/stretchr/testify/require" + "cdr.dev/slog/sloggers/slogtest/assert" "cdr.dev/coder-cli/internal/loginsrv" ) @@ -62,14 +62,14 @@ func TestReadLine(t *testing.T) { case err := <-errChan: t.Fatalf("ReadLine returned before we got the token (%v).", err) case actualToken := <-tokenChan: - require.Equal(t, testToken, actualToken, "Unexpected token received from readline.") + assert.Equal(t, "Unexpected token received from readline.", testToken, actualToken) } select { case <-ctx.Done(): t.Fatal("Timeout waiting for readline to finish.") case err := <-errChan: - require.NoError(t, err, "Error reading the line.") + assert.Success(t, "Error reading the line.", err) } }) } @@ -119,7 +119,7 @@ func TestReadLineMissingToken(t *testing.T) { case <-ctx.Done(): t.Fatal("Timeout waiting for readline to finish.") case err := <-errChan: - require.NoError(t, err, "Error reading the line.") + assert.Success(t, "Error reading the line.", err) case token, ok := <-tokenChan: t.Fatalf("Token channel unexpectedly unblocked. Data: %q, state: %t.", token, ok) } diff --git a/internal/loginsrv/server_test.go b/internal/loginsrv/server_test.go index 7f3413fc..3730ee90 100644 --- a/internal/loginsrv/server_test.go +++ b/internal/loginsrv/server_test.go @@ -9,7 +9,7 @@ import ( "testing" "time" - "github.com/stretchr/testify/require" + "cdr.dev/slog/sloggers/slogtest/assert" "cdr.dev/coder-cli/internal/loginsrv" ) @@ -35,7 +35,7 @@ func TestLocalLoginHTTPServer(t *testing.T) { const testToken = "hellosession" req, err := http.NewRequestWithContext(ctx, http.MethodGet, ts.URL+"?session_token="+testToken, nil) // Can't fail. - require.NoError(t, err, "Error creating the http request.") + assert.Success(t, "Error creating the http request", err) errChan := make(chan error) go func() { @@ -45,7 +45,7 @@ func TestLocalLoginHTTPServer(t *testing.T) { _, _ = io.Copy(ioutil.Discard, resp.Body) // Ignore the body, worry about the response code. _ = resp.Body.Close() // Best effort. - require.Equal(t, http.StatusOK, resp.StatusCode, "Unexpected status code.") + assert.Equal(t, "Unexpected status code", http.StatusOK, resp.StatusCode) errChan <- err }() @@ -56,14 +56,14 @@ func TestLocalLoginHTTPServer(t *testing.T) { case err := <-errChan: t.Fatalf("The HTTP client returned before we got the token (%+v).", err) case actualToken := <-tokenChan: - require.Equal(t, actualToken, actualToken, "Unexpected token received from the local server.") + assert.Equal(t, "Unexpected token received from the local server.", testToken, actualToken) } select { case <-ctx.Done(): t.Fatal("Timeout waiting for the handler to finish.") case err := <-errChan: - require.NoError(t, err, "Error calling test server.") + assert.Success(t, "Error calling test server", err) if t.Failed() { // Case where the assert within the goroutine failed. return } @@ -82,15 +82,16 @@ func TestLocalLoginHTTPServer(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), httpTimeout) defer cancel() - req, _ := http.NewRequestWithContext(ctx, http.MethodGet, ts.URL, nil) // Can't fail. + req, err := http.NewRequestWithContext(ctx, http.MethodGet, ts.URL, nil) // Can't fail. + assert.Success(t, "Error creating the http request", err) resp, err := http.DefaultClient.Do(req) - require.NoError(t, err, "Error calling test server.") + assert.Success(t, "Error calling test server", err) _, _ = io.Copy(ioutil.Discard, resp.Body) // Ignore the body, worry about the response code. _ = resp.Body.Close() // Best effort. - require.Equal(t, http.StatusBadRequest, resp.StatusCode, "Unexpected status code.") + assert.Equal(t, "Unexpected status code", http.StatusBadRequest, resp.StatusCode) select { case err := <-ctx.Done(): t.Fatalf("Unexpected context termination: %s.", err)