cmd/swarm, swarm: cross-platform Content-Type detection (#17782)
- Mime types generator (Standard "mime" package rely on system-settings, see mime.osInitMime) - Changed swarm/api.Upload: - simplify I/O throttling by semaphore primitive and use file name where possible - f.Close() must be called in Defer - otherwise panic or future added early return will cause leak of file descriptors - one error was suppressed
This commit is contained in:
committed by
Anton Evangelatov
parent
b69942befe
commit
dc5d643bb5
@ -32,6 +32,7 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
@ -764,6 +765,16 @@ func testBzzTar(encrypted bool, t *testing.T) {
|
||||
}
|
||||
defer resp2.Body.Close()
|
||||
|
||||
if h := resp2.Header.Get("Content-Type"); h != "application/x-tar" {
|
||||
t.Fatalf("Content-Type header expected: application/x-tar, got: %s", h)
|
||||
}
|
||||
|
||||
expectedFileName := string(swarmHash) + ".tar"
|
||||
expectedContentDisposition := fmt.Sprintf("inline; filename=\"%s\"", expectedFileName)
|
||||
if h := resp2.Header.Get("Content-Disposition"); h != expectedContentDisposition {
|
||||
t.Fatalf("Content-Disposition header expected: %s, got: %s", expectedContentDisposition, h)
|
||||
}
|
||||
|
||||
file, err := ioutil.TempFile("", "swarm-downloaded-tarball")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
@ -1099,7 +1110,7 @@ func TestModify(t *testing.T) {
|
||||
res, body := httpDo(testCase.method, testCase.uri, reqBody, testCase.headers, testCase.verbose, t)
|
||||
|
||||
if res.StatusCode != testCase.expectedStatusCode {
|
||||
t.Fatalf("expected status code %d but got %d", testCase.expectedStatusCode, res.StatusCode)
|
||||
t.Fatalf("expected status code %d but got %d, %s", testCase.expectedStatusCode, res.StatusCode, body)
|
||||
}
|
||||
if testCase.assertResponseBody != "" && !strings.Contains(body, testCase.assertResponseBody) {
|
||||
t.Log(body)
|
||||
@ -1210,19 +1221,25 @@ func TestBzzGetFileWithResolver(t *testing.T) {
|
||||
hash := common.HexToHash(string(swarmHash))
|
||||
resolver.hash = &hash
|
||||
for _, v := range []struct {
|
||||
addr string
|
||||
path string
|
||||
expectedStatusCode int
|
||||
addr string
|
||||
path string
|
||||
expectedStatusCode int
|
||||
expectedContentType string
|
||||
expectedFileName string
|
||||
}{
|
||||
{
|
||||
addr: string(swarmHash),
|
||||
path: fileNames[0],
|
||||
expectedStatusCode: http.StatusOK,
|
||||
addr: string(swarmHash),
|
||||
path: fileNames[0],
|
||||
expectedStatusCode: http.StatusOK,
|
||||
expectedContentType: "text/plain",
|
||||
expectedFileName: path.Base(fileNames[0]),
|
||||
},
|
||||
{
|
||||
addr: "somebogusensname",
|
||||
path: fileNames[0],
|
||||
expectedStatusCode: http.StatusOK,
|
||||
addr: "somebogusensname",
|
||||
path: fileNames[0],
|
||||
expectedStatusCode: http.StatusOK,
|
||||
expectedContentType: "text/plain",
|
||||
expectedFileName: path.Base(fileNames[0]),
|
||||
},
|
||||
} {
|
||||
req, err := http.NewRequest("GET", fmt.Sprintf(srv.URL+"/bzz:/%s/%s", v.addr, v.path), nil)
|
||||
@ -1237,6 +1254,16 @@ func TestBzzGetFileWithResolver(t *testing.T) {
|
||||
if serverResponse.StatusCode != v.expectedStatusCode {
|
||||
t.Fatalf("expected %d, got %d", v.expectedStatusCode, serverResponse.StatusCode)
|
||||
}
|
||||
|
||||
if h := serverResponse.Header.Get("Content-Type"); h != v.expectedContentType {
|
||||
t.Fatalf("Content-Type header expected: %s, got %s", v.expectedContentType, h)
|
||||
}
|
||||
|
||||
expectedContentDisposition := fmt.Sprintf("inline; filename=\"%s\"", v.expectedFileName)
|
||||
if h := serverResponse.Header.Get("Content-Disposition"); h != expectedContentDisposition {
|
||||
t.Fatalf("Content-Disposition header expected: %s, got: %s", expectedContentDisposition, h)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user