github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/lib/http/api_test.go (about) 1 package http 2 3 import ( 4 "bytes" 5 "net/http" 6 "testing" 7 8 "github.com/google/go-cmp/cmp" 9 "github.com/qri-io/qri/dsref" 10 ) 11 12 func TestDatasetRefFromReq(t *testing.T) { 13 cases := []struct { 14 url string 15 expected dsref.Ref 16 err string 17 }{ 18 {"http://localhost:2503/peername", dsref.Ref{Username: "peername"}, ""}, 19 {"http://localhost:2503/peername?limit=10&offset=2", dsref.Ref{Username: "peername"}, ""}, 20 {"http://localhost:2503/peername/datasetname", dsref.Ref{Username: "peername", Name: "datasetname"}, ""}, 21 {"http://localhost:2503/peername/datasetname/at/ipfs/QmdWJ7RnFj3SdWW85mR4AYP17C8dRPD9eUPyTqUxVyGMgD", dsref.Ref{Username: "peername", Name: "datasetname", Path: "/ipfs/QmdWJ7RnFj3SdWW85mR4AYP17C8dRPD9eUPyTqUxVyGMgD"}, ""}, 22 // {"http://localhost:2503/peername/datasetname/at/ntwk/QmdWJ7RnFj3SdWW85mR4AYP17C8dRPD9eUPyTqUxVyGMgD", dsref.Ref{Username: "peername", Name: "datasetname", Path: "/ntwk/QmdWJ7RnFj3SdWW85mR4AYP17C8dRPD9eUPyTqUxVyGMgD"}, ""}, 23 {"http://localhost:2503/peername/datasetname/at/mem/QmdWJ7RnFj3SdWW85mR4AYP17C8dRPD9eUPyTqUxVyGMgD/dataset.json", dsref.Ref{Username: "peername", Name: "datasetname", Path: "/mem/QmdWJ7RnFj3SdWW85mR4AYP17C8dRPD9eUPyTqUxVyGMgD"}, "unexpected character at position 72: '/'"}, 24 {"http://localhost:2503/peername/datasetname/at/ipfs/QmdWJ7RnFj3SdWW85mR4AYP17C8dRPD9eUPyTqUxVyGMgD", dsref.Ref{Username: "peername", Name: "datasetname", Path: "/ipfs/QmdWJ7RnFj3SdWW85mR4AYP17C8dRPD9eUPyTqUxVyGMgD"}, ""}, 25 {"http://google.com:8000/peername/datasetname/at/ipfs/QmdWJ7RnFj3SdWW85mR4AYP17C8dRPD9eUPyTqUxVyGMgD", dsref.Ref{Username: "peername", Name: "datasetname", Path: "/ipfs/QmdWJ7RnFj3SdWW85mR4AYP17C8dRPD9eUPyTqUxVyGMgD"}, ""}, 26 {"http://google.com:8000/peername", dsref.Ref{Username: "peername"}, ""}, 27 // {"http://google.com/peername", dsref.Ref{Username: "peername"}, ""}, 28 {"/peername", dsref.Ref{Username: "peername"}, ""}, 29 {"http://www.fkjhdekaldschjxilujkjkjknwjkn.org/peername/datasetname", dsref.Ref{Username: "peername", Name: "datasetname"}, ""}, 30 {"http://www.fkjhdekaldschjxilujkjkjknwjkn.org/peername/datasetname/", dsref.Ref{Username: "peername", Name: "datasetname"}, "unexpected character at position 20: '/'"}, 31 {"http://example.com", dsref.Ref{}, ""}, 32 {"", dsref.Ref{}, ""}, 33 } 34 35 for i, c := range cases { 36 r, err := http.NewRequest("GET", c.url, bytes.NewReader(nil)) 37 if err != nil { 38 t.Errorf("case %d, error making request: %s", i, err) 39 } 40 got, err := DatasetRefFromReq("", r) 41 if (c.err != "" && err == nil) || (err != nil && c.err != err.Error()) { 42 t.Errorf("case %d, error mismatch: expected '%s' but got '%s'", i, c.err, err) 43 continue 44 } 45 if diff := cmp.Diff(c.expected, got); diff != "" { 46 t.Errorf("case %d: output mismatch (-want +got):\n%s", i, diff) 47 } 48 } 49 }