Skip to content

Add smoke tests: PeerTube #685

@sij411

Description

@sij411

Background

Part of the phase 3 interoperability smoke test rollout tracked in #682 .

PeerTube is a video-focused ActivityPub server. Its primary federation
unit is the channel, which is represented as a Group actor rather
than a Person. This makes it a good target for verifying Fedify's
handling of Group actors and Video objects.

Docker image requirements

  • Deployable via Docker Compose with no manual steps beyond configuration
  • Exposes an HTTP endpoint reachable by the Caddy TLS proxy within the
    smoke Docker network
  • Supports ActivityPub federation out of the box
  • Allows programmatic account creation and API token issuance without
    requiring email verification
  • Note: PeerTube does not implement the Mastodon-compatible API.
    The provisioning script and any new scenarios must use the PeerTube
    REST API (/api/v1/*) directly

Test scenarios

The six baseline scenarios in orchestrator.ts do not apply here since
PeerTube does not implement the Mastodon-compatible API. The following
new scenarios are required:

  • Fedify → PeerTube (Follow a channel): follow a PeerTube channel
    (Group actor) from the Fedify harness and verify Accept(Follow) is
    received
  • PeerTube → Fedify (Announce(Video)): publish a video on PeerTube
    and verify the harness inbox receives an Announce(Video) activity

The Follow handler in federation.ts currently only accepts follows
from Person actors. It needs to be extended to also accept follows
where the target is a Group.

Acceptance criteria

  • test/smoke/peertube/ is added with the required files:
    docker-compose.yml, Caddyfile.peertube, Caddyfile.fedify-harness,
    generate-certs.sh, provision.sh, and a server config file
  • The provisioning script creates a test user, obtains an API token, and
    resolves the Fedify harness account
  • Both scenarios above pass reliably
  • A GitHub Actions workflow (.github/workflows/smoke-peertube.yml) is
    added, triggered on pushes to main, next, and *.*-maintenance
    branches, and on workflow_dispatch

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions