@@ -3,6 +3,7 @@ package cmd
33import (
44 "bytes"
55 "encoding/json"
6+ "fmt"
67 "io/ioutil"
78 "net/http"
89 "net/http/httptest"
@@ -504,6 +505,8 @@ func fakeSubmitServer(t *testing.T, submittedFiles map[string]string) *httptest.
504505 }
505506 submittedFiles [fileHeader .Filename ] = string (body )
506507 }
508+
509+ fmt .Fprint (w , "{}" )
507510 })
508511 return httptest .NewServer (handler )
509512}
@@ -553,6 +556,46 @@ func TestSubmitRelativePath(t *testing.T) {
553556 assert .Equal (t , "This is a file." , submittedFiles ["file.txt" ])
554557}
555558
559+ func TestSubmitServerErr (t * testing.T ) {
560+ handler := http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
561+ w .WriteHeader (http .StatusBadRequest )
562+ fmt .Fprintf (w , `{"error": {"type": "error", "message": "test error"}}` )
563+ })
564+
565+ ts := httptest .NewServer (handler )
566+ defer ts .Close ()
567+
568+ tmpDir , err := ioutil .TempDir ("" , "submit-err-tmp-dir" )
569+ defer os .RemoveAll (tmpDir )
570+ assert .NoError (t , err )
571+
572+ v := viper .New ()
573+ v .Set ("token" , "abc123" )
574+ v .Set ("workspace" , tmpDir )
575+ v .Set ("apibaseurl" , ts .URL )
576+
577+ cfg := config.Config {
578+ Persister : config.InMemoryPersister {},
579+ UserViperConfig : v ,
580+ DefaultBaseURL : "http://example.com" ,
581+ }
582+
583+ dir := filepath .Join (tmpDir , "bogus-track" , "bogus-exercise" )
584+ os .MkdirAll (filepath .Join (dir , "subdir" ), os .FileMode (0755 ))
585+ writeFakeMetadata (t , dir , "bogus-track" , "bogus-exercise" )
586+
587+ err = ioutil .WriteFile (filepath .Join (dir , "file-1.txt" ), []byte ("This is file 1" ), os .FileMode (0755 ))
588+ assert .NoError (t , err )
589+
590+ files := []string {
591+ filepath .Join (dir , "file-1.txt" ),
592+ }
593+
594+ err = runSubmit (cfg , pflag .NewFlagSet ("fake" , pflag .PanicOnError ), files )
595+
596+ assert .Regexp (t , "test error" , err .Error ())
597+ }
598+
556599func TestSubmissionNotConnectedToRequesterAccount (t * testing.T ) {
557600 submittedFiles := map [string ]string {}
558601 ts := fakeSubmitServer (t , submittedFiles )
0 commit comments