worker_test.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package inbox
  2. import (
  3. "net/url"
  4. "testing"
  5. "github.com/go-fed/activity/streams"
  6. "github.com/go-fed/activity/streams/vocab"
  7. "github.com/owncast/owncast/activitypub/apmodels"
  8. "github.com/owncast/owncast/activitypub/persistence"
  9. "github.com/owncast/owncast/core/data"
  10. )
  11. func makeFakePerson() vocab.ActivityStreamsPerson {
  12. iri, _ := url.Parse("https://freedom.eagle/user/mrfoo")
  13. name := "Mr Foo"
  14. username := "foodawg"
  15. inbox, _ := url.Parse("https://fake.fediverse.server/user/mrfoo/inbox")
  16. userAvatarURL, _ := url.Parse("https://fake.fediverse.server/user/mrfoo/avatar.png")
  17. person := streams.NewActivityStreamsPerson()
  18. id := streams.NewJSONLDIdProperty()
  19. id.Set(iri)
  20. person.SetJSONLDId(id)
  21. nameProperty := streams.NewActivityStreamsNameProperty()
  22. nameProperty.AppendXMLSchemaString(name)
  23. person.SetActivityStreamsName(nameProperty)
  24. preferredUsernameProperty := streams.NewActivityStreamsPreferredUsernameProperty()
  25. preferredUsernameProperty.SetXMLSchemaString(username)
  26. person.SetActivityStreamsPreferredUsername(preferredUsernameProperty)
  27. inboxProp := streams.NewActivityStreamsInboxProperty()
  28. inboxProp.SetIRI(inbox)
  29. person.SetActivityStreamsInbox(inboxProp)
  30. image := streams.NewActivityStreamsImage()
  31. imgProp := streams.NewActivityStreamsUrlProperty()
  32. imgProp.AppendIRI(userAvatarURL)
  33. image.SetActivityStreamsUrl(imgProp)
  34. icon := streams.NewActivityStreamsIconProperty()
  35. icon.AppendActivityStreamsImage(image)
  36. person.SetActivityStreamsIcon(icon)
  37. return person
  38. }
  39. func TestMain(m *testing.M) {
  40. data.SetupPersistence(":memory:")
  41. data.SetServerURL("https://my.cool.site.biz")
  42. persistence.Setup(data.GetDatastore())
  43. m.Run()
  44. }
  45. func TestBlockedDomains(t *testing.T) {
  46. person := makeFakePerson()
  47. data.SetBlockedFederatedDomains([]string{"freedom.eagle", "guns.life"})
  48. if len(data.GetBlockedFederatedDomains()) != 2 {
  49. t.Error("Blocked federated domains is not set correctly")
  50. }
  51. for _, domain := range data.GetBlockedFederatedDomains() {
  52. if domain == person.GetJSONLDId().GetIRI().Host {
  53. return
  54. }
  55. }
  56. t.Error("Failed to catch blocked domain")
  57. }
  58. func TestBlockedActors(t *testing.T) {
  59. person := makeFakePerson()
  60. fakeRequest := streams.NewActivityStreamsFollow()
  61. persistence.AddFollow(apmodels.ActivityPubActor{
  62. ActorIri: person.GetJSONLDId().GetIRI(),
  63. Inbox: person.GetJSONLDId().GetIRI(),
  64. FollowRequestIri: person.GetJSONLDId().GetIRI(),
  65. RequestObject: fakeRequest,
  66. }, false)
  67. persistence.BlockOrRejectFollower(person.GetJSONLDId().GetIRI().String())
  68. blocked, err := isBlockedActor(person.GetJSONLDId().GetIRI())
  69. if err != nil {
  70. t.Error(err)
  71. return
  72. }
  73. if !blocked {
  74. t.Error("Failed to block actor")
  75. }
  76. failedBlockIRI, _ := url.Parse("https://freedom.eagle/user/mrbar")
  77. failedBlock, err := isBlockedActor(failedBlockIRI)
  78. if failedBlock {
  79. t.Error("Invalid blocking of unblocked actor IRI")
  80. }
  81. }