foxhole/tests/factories.py

71 lines
1.7 KiB
Python

#!/usr/bin/env python3
import factory
import fastapi
import app.activitypub as ap
from app import models
from sqlalchemy import orm
from app import activitypub as ap
from app import actor
from app import models
from app.database import SessionLocal
_Session = orm.scoped_session(SessionLocal)
class BaseModelMeta:
sqlalchemy_session = _Session
sqlalchemy_session_persistence = "commit"
class RemoteActorFactory(factory.Factory): # pyright: disable
class Meta:
model = ap.BaseActor
exclude = (
"base_url",
"username",
"public_key",
"also_known_as",
)
ap_actor = factory.LazyAttribute(
lambda o: {
"@context": ap.AS_CTX,
"type": "Person",
"id": o.base_url,
"following": o.base_url + "/following",
"followers": o.base_url + "/followers",
"inbox": o.base_url + "/inbox",
"outbox": o.base_url + "/outbox",
"preferredUsername": o.username,
"name": o.username,
"summary": "test user",
"endpoints": {},
"url": o.base_url,
"manuallyApprovesFollowers": False,
"attachment": [],
"icon": {},
"publicKey": {
"id": f"{o.base_url}#main-key",
"owner": o.base_url,
"publicKeyPem": o.public_key,
},
"alsoKnownAs": [],
}
)
class ActorFactory(factory.alchemy.SQLAlchemyModelFactory):
class Meta(BaseModelMeta):
model = models.Actor
ap_type = "Person"
ap_id = "stub"
async def inbox_prechecker(
request: fastapi.Request,
) -> bool:
return True