---
name: Test All Server Requirements That Don't Require Hard Server to Server Interactions
attributedTo:
- name: bengo
  url: https://bengo.is
status: draft
"@context":
- https://www.w3.org/ns/activitystreams
---

# Test All Server Requirements That Don't Require Hard Server to Server Interactions

## Context

* we've been testing ActivityPub Server Conformance Requirements
* there are 13 tests so far covering 16 requirements
* we want full conformant requiremnts test coverage
* bengo resolved to
    > [Focus on the 'easy to test' ActivityPub server requirements and improve their testability.](https://bengo.is/blogging/easy-to-test-activitypub-requirements/)
* some of the harder to test requirements are those involving server to server interactions, and where it seems like the only way to determine requirement satisfaction is for the test runner to operate/inspect an ActivityPub server. We've been punting those.
* It would be helpful to have a burndown of things to focus on before taking on the harder to test s2s requirements, because that will be a good milestone to do a release.

## Acceptance Criteria

* there is a list of remaining server requirements that don't require hard server to server interactions
* each of those has at least one test rule referencing it implemented in activitypub-testing

# Requirements List

- [Servers... unless the activity is transient, MUST include the new id in the Location header.](https://activitypub-testing-website.socialweb.coop/00330762-59a2-4072-8d93-87ee4c30411c)
  - test: [outbox-post-server-must-include-id-in-location-header](../src/activitypub-tests/outbox-post-server-must-include-id-in-location-header/testCase.js)

- [The server MUST then add this new Activity to the outbox collection.](https://activitypub-testing-website.socialweb.coop/58b55b12-550f-415d-9ce4-a5160c08676f)
  - test: [outbox-post-server-adds-to-outbox-collection-checked-by-outbox-get](../src/activitypub-tests/outbox-post-server-adds-to-outbox-collection-checked-by-outbox-get/testCase.js)

- [the object MUST be modified to reflect the new structure as defined in the update activity](https://activitypub-testing-website.socialweb.coop/c1cd98fe-ae9c-48a7-9b43-cdd8eb008bc8)

- [An OrderedCollection MUST be presented consistently in reverse chronological order](https://activitypub-testing-website.socialweb.coop/edc1ccb7-a9f7-499f-9687-186a5202b1a9)
  - this may be a rule that can be used by other rules, e.g. rules that require something to 'be a OrderedCollection'

- [The server MUST perform de-duplication of activities returned by the Inbox.](https://activitypub-testing-website.socialweb.coop/2a0323ec-2500-4bc3-b116-11e641035d2f)

- [The receiving server MUST take care to be sure that the Update is authorized to modify its object.](https://activitypub-testing-website.socialweb.coop/3b43c69e-cd6b-4ffd-9ccd-183c5323d212)
  - this may need many test rules for different authorization checking schemes

- [all objects distributed by the ActivityPub protocol MUST have unique global identifiers, unless they are intentionally transient](https://activitypub-testing-website.socialweb.coop/fc2bfa75-8fd0-45e0-809d-7aa3970be8ae)
  - hard to make a single test rule for servers on this. almost wants to be a check on every object that the test runner sees during a testing session

- [Such deduplication MUST be performed by comparing the id of the activities and dropping any activities already seen.](https://activitypub-testing-website.socialweb.coop/37ea3238-a8a1-4731-b6b9-2134ed3bd5dd)
  - can probably do at same time as last one
