@@ -3,6 +3,7 @@ package cmd
3
3
import (
4
4
"bytes"
5
5
"encoding/json"
6
+ "fmt"
6
7
"io/ioutil"
7
8
"net/http"
8
9
"net/http/httptest"
@@ -504,6 +505,8 @@ func fakeSubmitServer(t *testing.T, submittedFiles map[string]string) *httptest.
504
505
}
505
506
submittedFiles [fileHeader .Filename ] = string (body )
506
507
}
508
+
509
+ fmt .Fprint (w , "{}" )
507
510
})
508
511
return httptest .NewServer (handler )
509
512
}
@@ -553,6 +556,46 @@ func TestSubmitRelativePath(t *testing.T) {
553
556
assert .Equal (t , "This is a file." , submittedFiles ["file.txt" ])
554
557
}
555
558
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
+
556
599
func TestSubmissionNotConnectedToRequesterAccount (t * testing.T ) {
557
600
submittedFiles := map [string ]string {}
558
601
ts := fakeSubmitServer (t , submittedFiles )
0 commit comments