func TestDescribe(t *testing.T) { for testn, tt := range describeTests { idx := test.NewFakeIndex() tt.setup(idx) h := NewHandler(idx, owner) js := make(map[string]interface{}) dr := h.NewDescribeRequest() dr.Describe(blobref.MustParse(tt.blob), tt.depth) dr.PopulateJSON(js) got, _ := json.MarshalIndent(js, "", " ") want, _ := json.MarshalIndent(tt.expect, "", " ") if !bytes.Equal(got, want) { t.Errorf("test %d:\nwant: %s\n got: %s", testn, string(want), string(got)) } } }
func TestPublishURLs(t *testing.T) { owner := blobref.MustParse("owner-123") picNode := blobref.MustParse("picpn-123") galRef := blobref.MustParse("gal-123") rootRef := blobref.MustParse("root-abc") camp0 := blobref.MustParse("picpn-98765432100") camp1 := blobref.MustParse("picpn-98765432111") camp0f := blobref.MustParse("picfile-f00f00f00a5") camp1f := blobref.MustParse("picfile-f00f00f00b6") rootName := "foo" for ti, tt := range publishURLTests { idx := test.NewFakeIndex() idx.AddSignerAttrValue(owner, "camliRoot", rootName, rootRef) sh := search.NewHandler(idx, owner) ph := &PublishHandler{ RootName: rootName, Search: sh, } idx.AddMeta(owner, "text/x-openpgp-public-key", 100) for _, br := range []*blobref.BlobRef{picNode, galRef, rootRef, camp0, camp1} { idx.AddMeta(br, "application/json; camliType=permanode", 100) } for _, br := range []*blobref.BlobRef{camp0f, camp1f} { idx.AddMeta(br, "application/json; camliType=file", 100) } idx.AddClaim(owner, rootRef, "set-attribute", "camliPath:singlepic", picNode.String()) idx.AddClaim(owner, rootRef, "set-attribute", "camliPath:camping", galRef.String()) idx.AddClaim(owner, galRef, "add-attribute", "camliMember", camp0.String()) idx.AddClaim(owner, galRef, "add-attribute", "camliMember", camp1.String()) idx.AddClaim(owner, camp0, "set-attribute", "camliContent", camp0f.String()) idx.AddClaim(owner, camp1, "set-attribute", "camliContent", camp1f.String()) rw := httptest.NewRecorder() if !strings.HasPrefix(tt.path, "/pics/") { panic("expected /pics/ prefix on " + tt.path) } req, _ := http.NewRequest("GET", "http://foo.com"+tt.path, nil) pfxh := &httputil.PrefixHandler{ Prefix: "/pics/", Handler: http.HandlerFunc(func(_ http.ResponseWriter, req *http.Request) { pr := ph.NewRequest(rw, req) err := pr.findSubject() if tt.subject != "" { if err != nil { t.Errorf("test #%d, findSubject: %v", ti, err) return } if pr.subject.String() != tt.subject { t.Errorf("test #%d, got subject %q, want %q", ti, pr.subject, tt.subject) } } if pr.subres != tt.subres { t.Errorf("test #%d, got subres %q, want %q", ti, pr.subres, tt.subres) } }), } pfxh.ServeHTTP(rw, req) } }