diff options
Diffstat (limited to 'internal/ap/extractattachments_test.go')
-rw-r--r-- | internal/ap/extractattachments_test.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/internal/ap/extractattachments_test.go b/internal/ap/extractattachments_test.go index 3d5fc7e89..1ec6e53c8 100644 --- a/internal/ap/extractattachments_test.go +++ b/internal/ap/extractattachments_test.go @@ -18,6 +18,8 @@ package ap_test import ( + "context" + "encoding/json" "testing" "github.com/stretchr/testify/suite" @@ -38,6 +40,43 @@ func (suite *ExtractAttachmentsTestSuite) TestExtractAttachmentMissingURL() { suite.Nil(attachment) } +func (suite *ExtractAttachmentsTestSuite) TestExtractDescription() { + // Note: normally a single attachment on a Note or + // similar wouldn't have the `@context` field set, + // but we set it here because we're parsing it as + // a discrete/standalone AP Object for this test. + attachmentableJSON := `{ + "@context": "https://www.w3.org/ns/activitystreams", + "mediaType": "image/jpeg", + "name": "z64KTcw2h2bZ8s67k2.jpg", + "summary": "A very large panel that is entirely twist switches", + "type": "Document", + "url": "https://example.org/d/XzKw4M2Sc1pBxj3hY4.jpg" +}` + + raw := make(map[string]interface{}) + if err := json.Unmarshal([]byte(attachmentableJSON), &raw); err != nil { + suite.FailNow(err.Error()) + } + + t, err := streams.ToType(context.Background(), raw) + if err != nil { + suite.FailNow(err.Error()) + } + + attachmentable, ok := t.(ap.Attachmentable) + if !ok { + suite.FailNow("type was not Attachmentable") + } + + attachment, err := ap.ExtractAttachment(attachmentable) + if err != nil { + suite.FailNow(err.Error()) + } + + suite.Equal("A very large panel that is entirely twist switches", attachment.Description) +} + func TestExtractAttachmentsTestSuite(t *testing.T) { suite.Run(t, &ExtractAttachmentsTestSuite{}) } |