func doReq(t *testing.T, method, path string, body io.Reader, check ResponseChecker) { req, err := http.NewRequest(method, path, body) if err != nil { t.Fatalf("cannot create request: " + err.Error()) } req.Host = serviceHost //req.URL.Host = req.Host var o s3intf.Owner for i, b := range backers { if o, err = b.GetOwner("test"); err != nil { t.Errorf("cannot get owner for test: %s", err) continue } if Debug { log.Printf("===") s3intf.Debug = Debug } bts := s3intf.GetBytesToSign(req, serviceHost) if Debug { log.Printf("bts: %q", bts) log.Printf("---") } t.Logf("owner: %s bts=%q", o, bts) actsign := b64.EncodeToString(o.CalcHash(bts)) req.Header.Set("Authorization", "AWS test:"+actsign) rw := httptest.NewRecorder() handlers[i].ServeHTTP(rw, req) if check != nil { if err = check(rw); err != nil { t.Fatalf("bad response for %s %s: %s (body:%q)", method, path, err.Error(), rw.Body.Bytes()) } } } }