@@ -611,6 +611,45 @@ func TestSubmitServerErr(t *testing.T) {
611611 assert .Regexp (t , "test error" , err .Error ())
612612}
613613
614+ func TestHandle404Response (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+ if assert .Error (t , err ) {
650+ assert .Contains (t , err .Error (), "unsuccessful" )
651+ }
652+ }
614653func TestSubmissionNotConnectedToRequesterAccount (t * testing.T ) {
615654 submittedFiles := map [string ]string {}
616655 ts := fakeSubmitServer (t , submittedFiles )
0 commit comments