Skip to content

Bob unfollows Alice

given: A new user called "alice"

given: A new user called "bob"

given: "bob" follows "alice"

when: "bob" sends "alice" a Follow Activity

outgoing.Follow
{
  "actor": "http://banach/actor/00L-saR6Ib_JMh8FoHNMBQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Follow",
    "actor": "http://banach/actor/00L-saR6Ib_JMh8FoHNMBQ",
    "to": [
      "http://abel/actor/VSD2YQjFFak5D2iAE_228w"
    ],
    "id": "follow:fe8693cb-9958-4d6f-b925-920035894092",
    "published": "2024-11-08T18:34:57Z",
    "object": "http://abel/actor/VSD2YQjFFak5D2iAE_228w"
  },
  "activity_type": "Follow"
}
incoming.Follow
{
  "actor": "http://abel/actor/VSD2YQjFFak5D2iAE_228w",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Follow",
    "actor": "http://banach/actor/00L-saR6Ib_JMh8FoHNMBQ",
    "to": [
      "http://abel/actor/VSD2YQjFFak5D2iAE_228w"
    ],
    "id": "follow:fe8693cb-9958-4d6f-b925-920035894092",
    "published": "2024-11-08T18:34:57Z",
    "object": "http://abel/actor/VSD2YQjFFak5D2iAE_228w"
  },
  "activity_type": "Follow"
}

when: "alice" sends an Accept to this Follow Activity

outgoing.Accept
{
  "actor": "http://abel/actor/VSD2YQjFFak5D2iAE_228w",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Accept",
    "actor": "http://abel/actor/VSD2YQjFFak5D2iAE_228w",
    "to": [
      "http://banach/actor/00L-saR6Ib_JMh8FoHNMBQ"
    ],
    "published": "2024-11-08T18:34:58Z",
    "object": "follow:fe8693cb-9958-4d6f-b925-920035894092"
  },
  "activity_type": "Accept"
}
incoming.Accept
{
  "actor": "http://banach/actor/00L-saR6Ib_JMh8FoHNMBQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Accept",
    "actor": "http://abel/actor/VSD2YQjFFak5D2iAE_228w",
    "to": [
      "http://banach/actor/00L-saR6Ib_JMh8FoHNMBQ"
    ],
    "published": "2024-11-08T18:34:58Z",
    "object": "follow:fe8693cb-9958-4d6f-b925-920035894092"
  },
  "activity_type": "Accept"
}

when: "bob" sends "alice" an Undo Follow Activity

outgoing.Undo
{
  "actor": "http://banach/actor/00L-saR6Ib_JMh8FoHNMBQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Undo",
    "actor": "http://banach/actor/00L-saR6Ib_JMh8FoHNMBQ",
    "to": [
      "http://abel/actor/VSD2YQjFFak5D2iAE_228w"
    ],
    "published": "2024-11-08T18:34:59Z",
    "object": "follow:fe8693cb-9958-4d6f-b925-920035894092"
  },
  "activity_type": "Undo"
}
incoming.Undo
{
  "actor": "http://abel/actor/VSD2YQjFFak5D2iAE_228w",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Undo",
    "actor": "http://banach/actor/00L-saR6Ib_JMh8FoHNMBQ",
    "to": [
      "http://abel/actor/VSD2YQjFFak5D2iAE_228w"
    ],
    "published": "2024-11-08T18:34:59Z",
    "object": "follow:fe8693cb-9958-4d6f-b925-920035894092"
  },
  "activity_type": "Undo"
}

then: The "followers" collection of "alice" does not include "bob"

receive.alice
{
  "action": "fetch_result",
  "actor": "http://abel/actor/VSD2YQjFFak5D2iAE_228w",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "id": "http://abel/followers/WLdzDrak5B99Q5Uj0vc3RQ",
    "type": "OrderedCollection"
  }
}

then: The "following" collection of "bob" does not include "alice"

receive.bob
{
  "action": "fetch_result",
  "actor": "http://banach/actor/00L-saR6Ib_JMh8FoHNMBQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "id": "http://banach/following/Oz_yvKR6G_a8GHKVgs-bfA",
    "type": "OrderedCollection"
  }
}