diff --git a/tests/test_inbox.py b/tests/test_inbox.py index 648cc3c..572fa43 100644 --- a/tests/test_inbox.py +++ b/tests/test_inbox.py @@ -64,3 +64,77 @@ def test_inbox_follow_request( # follower was saved in follower table follower_actor = db.execute(select(models.Follower)).scalar_one() assert follower_actor.ap_actor_id == ap_id + + +def test_inbox_announce_request( + db: Session, + client: TestClient, + respx_mock: respx.MockRouter, +) -> None: + + # build test actor + ra = factories.RemoteActorFactory( + base_url="https://example.com", + username="test", + public_key="pk", + ) + + ap_id = ra.ap_id # type: ignore + app.dependency_overrides[precheck.inbox_prechecker] = factories.inbox_prechecker + + # mock request + respx_mock.get(ap_id).mock(return_value=httpx.Response(200,json=ra.ap_actor)) + respx_mock.post(ap_id + "/inbox").mock(return_value=httpx.Response(202)) + + from app.models import now + from app.activitypub import VisibilityEnum + + note_id = ap.ME["id"] + (uuid4().hex) + published = now().replace(microsecond=0).isoformat().replace("+00:00", "Z") + note_object = { + "@context": ap.AS_EXTENDED_CTX, + "type": "Note", + "id": note_id, + "attributedTo": ap.ME["id"], + "content": "
Test!
", + "to": [ap.AS_PUBLIC], + "cc": [], + "published": published, + # "context": context, + # "conversation": context, + "url": note_id, + "tag": [], + "summary": None, + "inReplyTo": None, + "sensitive": False, + "attachment": [], + } + + outbox_object = models.OutboxObject( + public_id=note_id, + ap_object=note_object, + ap_id=note_id, + ap_type="Note", + visibility =VisibilityEnum.PUBLIC, + ) + + db.add(outbox_object) + db.commit() + + # send announce request + response = client.post( + "/inbox", + headers={"Content-Type": AP_CONTENT_TYPE}, + json={ + "@context": ap.AS_CTX, + "type": "Announce", + "id": ap_id + "/announce/" + (uuid4().hex), + "actor": ap_id, + "object": note_id, + }, + ) + assert response.status_code == 202 + + saved_note = db.execute(select(models.OutboxObject)).scalar_one() + print(saved_note.ap_id) + assert saved_note.announces_count == 0 # TODO WIP