MCPcopy Create free account
hub / github.com/exercism/cli / fakeSubmitServer

Function fakeSubmitServer

cmd/submit_test.go:499–533  ·  view source on GitHub ↗
(t *testing.T, submittedFiles map[string]string)

Source from the content-addressed store, hash-verified

497}
498
499func fakeSubmitServer(t *testing.T, submittedFiles map[string]string) *httptest.Server {
500 handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
501 err := r.ParseMultipartForm(2 << 10)
502 if err != nil {
503 t.Fatal(err)
504 }
505 mf := r.MultipartForm
506
507 files := mf.File["files[]"]
508 for _, fileHeader := range files {
509 file, err := fileHeader.Open()
510 if err != nil {
511 t.Fatal(err)
512 }
513 defer file.Close()
514 body, err := io.ReadAll(file)
515 if err != nil {
516 t.Fatal(err)
517 }
518 // Following RFC 7578, Go 1.17+ strips the directory information in fileHeader.Filename.
519 // Validating the submitted files directory tree is important so Content-Disposition is used for
520 // obtaining the unmodified filename.
521 v := fileHeader.Header.Get("Content-Disposition")
522 _, dispositionParams, err := mime.ParseMediaType(v)
523 if err != nil {
524 t.Fatalf("failed to obtain submitted filename from multipart header: %s", err.Error())
525 }
526 filename := dispositionParams["filename"]
527 submittedFiles[filename] = string(body)
528 }
529
530 fmt.Fprint(w, "{}")
531 })
532 return httptest.NewServer(handler)
533}
534
535func TestSubmitRelativePath(t *testing.T) {
536 co := newCapturedOutput()

Calls 1

ErrorMethod · 0.45

Tested by

no test coverage detected