Skip to content

Commit

Permalink
Error message returned if the track is locked
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamario Rankins committed Aug 14, 2019
1 parent 2bfd6c8 commit 08d56c1
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 4 deletions.
10 changes: 6 additions & 4 deletions cmd/download.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package cmd

import (
"bytes"
"encoding/json"
"errors"
"fmt"
"io"
"io/ioutil"
"net/http"
netURL "net/url"
"os"
Expand Down Expand Up @@ -185,12 +187,12 @@ func newDownload(flags *pflag.FlagSet, usrCfg *viper.Viper) (*download, error) {
}
defer res.Body.Close()

if err := json.NewDecoder(res.Body).Decode(&d.payload); err != nil {
body, err := ioutil.ReadAll(res.Body)
res.Body = ioutil.NopCloser(bytes.NewReader(body))

if err := json.Unmarshal(body, &d.payload); err != nil || res.StatusCode < 200 || res.StatusCode > 299 {
return nil, decodedAPIError(res)
}
if d.payload.Error.Message != "" {
return nil, errors.New(d.payload.Error.Message)
}

return d, nil
}
Expand Down
36 changes: 36 additions & 0 deletions cmd/download_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,42 @@ func assertDownloadedCorrectFiles(t *testing.T, targetDir string) {
assert.True(t, os.IsNotExist(err), "It should not write the file if empty.")
}

func TestDownloadError(t *testing.T) {
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusBadRequest)
fmt.Fprintf(w, `{"error": {"type": "error", "message": "test error"}}`)
})

ts := httptest.NewServer(handler)
defer ts.Close()

tmpDir, err := ioutil.TempDir("", "submit-err-tmp-dir")
defer os.RemoveAll(tmpDir)
assert.NoError(t, err)

v := viper.New()
v.Set("token", "abc123")
v.Set("workspace", tmpDir)
v.Set("apibaseurl", ts.URL)

cfg := config.Config{
Persister: config.InMemoryPersister{},
UserViperConfig: v,
DefaultBaseURL: "http://example.com",
}

flags := pflag.NewFlagSet("fake", pflag.PanicOnError)
setupDownloadFlags(flags)
flags.Set("uuid", "value")

err = runDownload(cfg, flags, []string{})

fmt.Println(err)

assert.Regexp(t, "test error", err.Error())

}

const payloadTemplate = `
{
"solution": {
Expand Down

0 comments on commit 08d56c1

Please sign in to comment.