diff --git a/integrationtests/chrome_test.go b/integrationtests/chrome_test.go index 81180e74..9cd93743 100644 --- a/integrationtests/chrome_test.go +++ b/integrationtests/chrome_test.go @@ -148,9 +148,9 @@ var _ = Describe("Chrome tests", func() { Expect(err).ToNot(HaveOccurred()) copyFileToDocker(tmpfn) - err = wd.Get("https://quic.clemente.io/uploadform") + err = wd.Get("https://quic.clemente.io/uploadform?num=1") Expect(err).NotTo(HaveOccurred()) - elem, err := wd.FindElement(selenium.ByCSSSelector, "#upload") + elem, err := wd.FindElement(selenium.ByCSSSelector, "#upload_0") Expect(err).ToNot(HaveOccurred()) err = elem.SendKeys("/home/seluser/data.dat") Expect(err).ToNot(HaveOccurred()) @@ -172,9 +172,9 @@ var _ = Describe("Chrome tests", func() { Expect(err).ToNot(HaveOccurred()) copyFileToDocker(tmpfn) - err = wd.Get("https://quic.clemente.io/uploadform") + err = wd.Get("https://quic.clemente.io/uploadform?num=1") Expect(err).NotTo(HaveOccurred()) - elem, err := wd.FindElement(selenium.ByCSSSelector, "#upload") + elem, err := wd.FindElement(selenium.ByCSSSelector, "#upload_0") Expect(err).ToNot(HaveOccurred()) err = elem.SendKeys("/home/seluser/data.dat") Expect(err).ToNot(HaveOccurred()) diff --git a/integrationtests/integrationtests_suite_test.go b/integrationtests/integrationtests_suite_test.go index 1dd2006f..9ca49f53 100644 --- a/integrationtests/integrationtests_suite_test.go +++ b/integrationtests/integrationtests_suite_test.go @@ -7,6 +7,7 @@ import ( "fmt" "io" "io/ioutil" + "mime/multipart" "net" "net/http" "os" @@ -103,13 +104,18 @@ func setupHTTPHandlers() { Expect(err).NotTo(HaveOccurred()) }) + // requires the num GET parameter, e.g. /uploadform?num=2 + // will create num input fields for uploading files http.HandleFunc("/uploadform", func(w http.ResponseWriter, r *http.Request) { defer GinkgoRecover() - _, err := io.WriteString(w, `
- - `) + num, err := strconv.Atoi(r.URL.Query().Get("num")) + Expect(err).ToNot(HaveOccurred()) + response := "\n" + _, err = io.WriteString(w, response) Expect(err).NotTo(HaveOccurred()) }) @@ -118,13 +124,23 @@ func setupHTTPHandlers() { err := r.ParseMultipartForm(100 * (1 << 20)) // max. 100 MB Expect(err).ToNot(HaveOccurred()) - file, handler, err := r.FormFile("uploadfile") - Expect(err).ToNot(HaveOccurred()) - defer file.Close() - f, err := os.OpenFile(path.Join(uploadDir, handler.Filename), os.O_WRONLY|os.O_CREATE, 0666) - Expect(err).ToNot(HaveOccurred()) - defer f.Close() - io.Copy(f, file) + + count := 0 + for { + var file multipart.File + var handler *multipart.FileHeader + file, handler, err = r.FormFile("uploadfile_" + strconv.Itoa(count)) + if err != nil { + break + } + count++ + f, err2 := os.OpenFile(path.Join(uploadDir, handler.Filename), os.O_WRONLY|os.O_CREATE, 0666) + Expect(err2).ToNot(HaveOccurred()) + io.Copy(f, file) + f.Close() + file.Close() + } + Expect(count).ToNot(BeZero()) // there have been at least one uploaded file in this request _, err = io.WriteString(w, "") Expect(err).NotTo(HaveOccurred())