Skip to content

Commit 89e80c4

Browse files
author
Katrina Owen
authored
Merge pull request #793 from jdsutherland/submit-handles-non2xx
Submit handles non 2xx responses
2 parents 1d02944 + 10aea95 commit 89e80c4

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

cmd/submit.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"fmt"
77
"io"
88
"mime/multipart"
9-
"net/http"
109
"os"
1110
"path/filepath"
1211

@@ -268,7 +267,7 @@ func (s *submitCmdContext) submit(metadata *workspace.ExerciseMetadata, docs []w
268267
}
269268
defer resp.Body.Close()
270269

271-
if resp.StatusCode == http.StatusBadRequest {
270+
if resp.StatusCode < 200 || resp.StatusCode > 299 {
272271
return decodedAPIError(resp)
273272
}
274273

cmd/submit_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,44 @@ func TestSubmitServerErr(t *testing.T) {
611611
assert.Regexp(t, "test error", err.Error())
612612
}
613613

614+
func TestHandleErrorResponse(t *testing.T) {
615+
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
616+
w.WriteHeader(404)
617+
})
618+
619+
ts := httptest.NewServer(handler)
620+
defer ts.Close()
621+
622+
tmpDir, err := ioutil.TempDir("", "submit-nonsuccess")
623+
defer os.RemoveAll(tmpDir)
624+
assert.NoError(t, err)
625+
626+
v := viper.New()
627+
v.Set("token", "abc123")
628+
v.Set("workspace", tmpDir)
629+
v.Set("apibaseurl", ts.URL)
630+
631+
cfg := config.Config{
632+
Persister: config.InMemoryPersister{},
633+
UserViperConfig: v,
634+
DefaultBaseURL: "http://example.com",
635+
}
636+
637+
dir := filepath.Join(tmpDir, "bogus-track", "bogus-exercise")
638+
os.MkdirAll(filepath.Join(dir, "subdir"), os.FileMode(0755))
639+
writeFakeMetadata(t, dir, "bogus-track", "bogus-exercise")
640+
641+
err = ioutil.WriteFile(filepath.Join(dir, "file-1.txt"), []byte("This is file 1"), os.FileMode(0755))
642+
assert.NoError(t, err)
643+
644+
files := []string{
645+
filepath.Join(dir, "file-1.txt"),
646+
}
647+
648+
err = runSubmit(cfg, pflag.NewFlagSet("fake", pflag.PanicOnError), files)
649+
assert.Error(t, err)
650+
}
651+
614652
func TestSubmissionNotConnectedToRequesterAccount(t *testing.T) {
615653
submittedFiles := map[string]string{}
616654
ts := fakeSubmitServer(t, submittedFiles)

0 commit comments

Comments
 (0)