@ -70,7 +70,7 @@ func TestBzzrGetPath(t *testing.T) {
wg . Wait ( )
}
_ , err = http . Get ( srv . URL + "/bzzr:/" + common . ToHex ( key [ 0 ] ) [ 2 : ] + "/a" )
_ , err = http . Get ( srv . URL + "/bzz- raw :/" + common . ToHex ( key [ 0 ] ) [ 2 : ] + "/a" )
if err != nil {
t . Fatalf ( "Failed to connect to proxy: %v" , err )
}
@ -79,7 +79,7 @@ func TestBzzrGetPath(t *testing.T) {
var resp * http . Response
var respbody [ ] byte
url := srv . URL + "/bzzr:/"
url := srv . URL + "/bzz- raw :/"
if k [ : ] != "" {
url += common . ToHex ( key [ 0 ] ) [ 2 : ] + "/" + k [ 1 : ] + "?content_type=text/plain"
}
@ -104,16 +104,106 @@ func TestBzzrGetPath(t *testing.T) {
}
}
for _ , c := range [ ] struct {
path string
json string
html string
} {
{
path : "/" ,
json : ` { "common_prefixes":["a/"]} ` ,
html : "<!DOCTYPE html>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <title>Swarm index of bzz:/262e5c08c03c2789b6daef487dfa14b4d132f5340d781a3ecb1d5122ab65640c/</title>\n</head>\n\n<body>\n <h1>Swarm index of bzz:/262e5c08c03c2789b6daef487dfa14b4d132f5340d781a3ecb1d5122ab65640c/</h1>\n <hr>\n <table>\n <thead>\n <tr>\n\t<th>Path</th>\n\t<th>Type</th>\n\t<th>Size</th>\n </tr>\n </thead>\n\n <tbody>\n \n\t<tr>\n\t <td><a href=\"a/\">a/</a></td>\n\t <td>DIR</td>\n\t <td>-</td>\n\t</tr>\n \n\n \n </table>\n <hr>\n</body>\n" ,
} ,
{
path : "/a/" ,
json : ` { "common_prefixes":["a/b/"],"entries":[ { "hash":"011b4d03dd8c01f1049143cf9c4c817e4b167f1d1b83e5c6f0f10d89ba1e7bce","path":"a/a","mod_time":"0001-01-01T00:00:00Z"}]} ` ,
html : "<!DOCTYPE html>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <title>Swarm index of bzz:/262e5c08c03c2789b6daef487dfa14b4d132f5340d781a3ecb1d5122ab65640c/a/</title>\n</head>\n\n<body>\n <h1>Swarm index of bzz:/262e5c08c03c2789b6daef487dfa14b4d132f5340d781a3ecb1d5122ab65640c/a/</h1>\n <hr>\n <table>\n <thead>\n <tr>\n\t<th>Path</th>\n\t<th>Type</th>\n\t<th>Size</th>\n </tr>\n </thead>\n\n <tbody>\n \n\t<tr>\n\t <td><a href=\"b/\">b/</a></td>\n\t <td>DIR</td>\n\t <td>-</td>\n\t</tr>\n \n\n \n\t<tr>\n\t <td><a href=\"a\">a</a></td>\n\t <td></td>\n\t <td>0</td>\n\t</tr>\n \n </table>\n <hr>\n</body>\n" ,
} ,
{
path : "/a/b/" ,
json : ` { "entries":[ { "hash":"011b4d03dd8c01f1049143cf9c4c817e4b167f1d1b83e5c6f0f10d89ba1e7bce","path":"a/b/b","mod_time":"0001-01-01T00:00:00Z"}, { "hash":"011b4d03dd8c01f1049143cf9c4c817e4b167f1d1b83e5c6f0f10d89ba1e7bce","path":"a/b/c","mod_time":"0001-01-01T00:00:00Z"}]} ` ,
html : "<!DOCTYPE html>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <title>Swarm index of bzz:/262e5c08c03c2789b6daef487dfa14b4d132f5340d781a3ecb1d5122ab65640c/a/b/</title>\n</head>\n\n<body>\n <h1>Swarm index of bzz:/262e5c08c03c2789b6daef487dfa14b4d132f5340d781a3ecb1d5122ab65640c/a/b/</h1>\n <hr>\n <table>\n <thead>\n <tr>\n\t<th>Path</th>\n\t<th>Type</th>\n\t<th>Size</th>\n </tr>\n </thead>\n\n <tbody>\n \n\n \n\t<tr>\n\t <td><a href=\"b\">b</a></td>\n\t <td></td>\n\t <td>0</td>\n\t</tr>\n \n\t<tr>\n\t <td><a href=\"c\">c</a></td>\n\t <td></td>\n\t <td>0</td>\n\t</tr>\n \n </table>\n <hr>\n</body>\n" ,
} ,
{
path : "/x" ,
} ,
{
path : "" ,
} ,
} {
k := c . path
url := srv . URL + "/bzz-list:/"
if k [ : ] != "" {
url += common . ToHex ( key [ 0 ] ) [ 2 : ] + "/" + k [ 1 : ]
}
t . Run ( "json list " + c . path , func ( t * testing . T ) {
resp , err := http . Get ( url )
if err != nil {
t . Fatalf ( "HTTP request: %v" , err )
}
defer resp . Body . Close ( )
respbody , err := ioutil . ReadAll ( resp . Body )
if err != nil {
t . Fatalf ( "Read response body: %v" , err )
}
body := strings . TrimSpace ( string ( respbody ) )
if body != c . json {
isexpectedfailrequest := false
for _ , r := range expectedfailrequests {
if k [ : ] == r {
isexpectedfailrequest = true
}
}
if ! isexpectedfailrequest {
t . Errorf ( "Response list body %q does not match, expected: %v, got %v" , k , c . json , body )
}
}
} )
t . Run ( "html list " + c . path , func ( t * testing . T ) {
req , err := http . NewRequest ( http . MethodGet , url , nil )
if err != nil {
t . Fatalf ( "New request: %v" , err )
}
req . Header . Set ( "Accept" , "text/html" )
resp , err := http . DefaultClient . Do ( req )
if err != nil {
t . Fatalf ( "HTTP request: %v" , err )
}
defer resp . Body . Close ( )
respbody , err := ioutil . ReadAll ( resp . Body )
if err != nil {
t . Fatalf ( "Read response body: %v" , err )
}
if string ( respbody ) != c . html {
isexpectedfailrequest := false
for _ , r := range expectedfailrequests {
if k [ : ] == r {
isexpectedfailrequest = true
}
}
if ! isexpectedfailrequest {
t . Errorf ( "Response list body %q does not match, expected: %q, got %q" , k , c . html , string ( respbody ) )
}
}
} )
}
nonhashtests := [ ] string {
srv . URL + "/bzz:/name" ,
srv . URL + "/bzzi:/nonhash" ,
srv . URL + "/bzzr:/nonhash" ,
srv . URL + "/bzz-immutable:/nonhash" ,
srv . URL + "/bzz-raw:/nonhash" ,
srv . URL + "/bzz-list:/nonhash" ,
}
nonhashresponses := [ ] string {
"error resolving name: no DNS to resolve name: "name"" ,
"error resolving nonhash: immutable address not a content hash: "nonhash"" ,
"error resolving nonhash: no DNS to resolve name: "nonhash"" ,
"error resolving nonhash: no DNS to resolve name: "nonhash"" ,
}
for i , url := range nonhashtests {