This commit is contained in:
parent
9ff2d04ccf
commit
fb4bec0845
1 changed files with 74 additions and 0 deletions
|
@ -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": "<p>Test!</p>",
|
||||
"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
|
||||
|
|
Loading…
Reference in a new issue