From 53c59ed3353cd394c71dc23b074ebc211a92f7a5 Mon Sep 17 00:00:00 2001 From: Cory Slep Date: Wed, 6 Jun 2018 22:26:48 +0200 Subject: [PATCH] Inboxes and outboxes now contain IRIs. As part of normalization of objects and not embedding them everywhere. --- pub/fed_test.go | 10 +++++++++- pub/internal.go | 12 ++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/pub/fed_test.go b/pub/fed_test.go index 422050b..f743925 100644 --- a/pub/fed_test.go +++ b/pub/fed_test.go @@ -2172,10 +2172,13 @@ func TestPostInbox_Create_SetsObject(t *testing.T) { req := ActivityPubRequest(httptest.NewRequest("POST", testInboxURI, bytes.NewBuffer(MustSerialize(testCreateNote)))) gotSet := 0 var setObject PubObject + var gotSetInbox PubObject app.MockFederateApp.set = func(c context.Context, o PubObject) error { gotSet++ if gotSet == 1 { setObject = o + } else if gotSet == 2 { + gotSetInbox = o } return nil } @@ -2183,6 +2186,9 @@ func TestPostInbox_Create_SetsObject(t *testing.T) { return nil } handled, err := p.PostInbox(context.Background(), resp, req) + expectedInbox := &vocab.OrderedCollection{} + expectedInbox.AppendType("OrderedCollection") + expectedInbox.AppendOrderedItemsIRI(testCreateNote.GetId()) if err != nil { t.Fatal(err) } else if !handled { @@ -2191,6 +2197,8 @@ func TestPostInbox_Create_SetsObject(t *testing.T) { t.Fatalf("expected %d, got %d", 2, gotSet) } else if err := PubObjectEquals(setObject, testNote); err != nil { t.Fatalf("unexpected set object: %s", err) + } else if err := PubObjectEquals(gotSetInbox, expectedInbox); err != nil { + t.Fatalf("unexpected callback object: %s", err) } } @@ -4497,7 +4505,7 @@ func TestPostOutbox_Create_SetCreatedObject(t *testing.T) { handled, err := p.PostOutbox(context.Background(), resp, req) expectedOutbox := &vocab.OrderedCollection{} expectedOutbox.AppendType("OrderedCollection") - expectedOutbox.AppendOrderedItemsObject(testClientExpectedCreateNote) + expectedOutbox.AppendOrderedItemsIRI(testClientExpectedCreateNote.GetId()) if err != nil { t.Fatal(err) } else if !handled { diff --git a/pub/internal.go b/pub/internal.go index 0bb260d..9ee1da5 100644 --- a/pub/internal.go +++ b/pub/internal.go @@ -1726,7 +1726,6 @@ func (f *federator) ownsAnyObjects(c context.Context, a vocab.ActivityType) (boo return f.ownsAnyIRIs(c, iris), nil } -// TODO: Only Set IRIs func (f *federator) addToOutbox(c context.Context, r *http.Request, m map[string]interface{}) error { outbox, err := f.App.GetOutbox(c, r, ReadWrite) if err != nil { @@ -1739,11 +1738,13 @@ func (f *federator) addToOutbox(c context.Context, r *http.Request, m map[string if err := f.App.Set(c, activity); err != nil { return err } - outbox.PrependOrderedItemsObject(activity) + if !activity.HasId() { + return fmt.Errorf("activity missing id") + } + outbox.PrependOrderedItemsIRI(activity.GetId()) return f.App.Set(c, outbox) } -// TODO: Only Set IRIs func (f *federator) addToInbox(c context.Context, r *http.Request, m map[string]interface{}) error { inbox, err := f.App.GetInbox(c, r, ReadWrite) if err != nil { @@ -1757,8 +1758,11 @@ func (f *federator) addToInbox(c context.Context, r *http.Request, m map[string] if err != nil { return err } + if !activity.HasId() { + return fmt.Errorf("activity missing id") + } if !iriSet[activity.GetId().String()] { - inbox.PrependOrderedItemsObject(activity) + inbox.PrependOrderedItemsIRI(activity.GetId()) return f.App.Set(c, inbox) } return nil