A Test Rule for an ActivityPub Requirement
Use these identifiers to refer to this Test.
urn:uuid:30018b5d-699a-45a9-a623-1f09a36cf0a6
This slug is memorable, but it is not guaranteed to be globally unique like a URI.
post-outbox-server-overwrites-id-property
This describes the input that each test run will use to select test targets.
the url to the Outbox handling an Activity POST request
{ "help": "the url to the Outbox handling an Activity POST request", "required": true, "type": "xsd:anyUri", "rangeIncludes": [ "https://www.w3.org/ns/activitystreams#outbox" ] }
{ "outbox": { "help": "the url to the Outbox handling an Activity POST request", "required": true, "type": "xsd:anyUri", "rangeIncludes": [ "https://www.w3.org/ns/activitystreams#outbox" ] }, "authorization": { "help": "HTTP Authorization header value to include in outbox POST request", "required": false, "type": [ "xsd:string", "https://activitypub-testing.socialweb.coop/ns/HiddenInTestResults" ], "rangeIncludes": [ "https://www.rfc-editor.org/rfc/rfc9110#field.authorization.value" ] } }
How to derive test targets from input: * let postOutboxResponse be the http response from using an activitypub client to post to input.outbox * if postOutboxResponse does not contain a 'location' header, result outcome is inapplicable. * let outboxResultResponse be the response from using an activitypub client to fetch an activitypub object for the URL indicated by the value of the postOutboxResponse http response header named 'location' * let target.result be the result of parsing outboxResultResponse http response body as JSON. If the response body is not a JSON object, result outcome is inapplicable.
How to derive test targets from input: * let postOutboxResponse be the http response from using an activitypub client to post to input.outbox * if postOutboxResponse does not contain a 'location' header, result outcome is inapplicable. * let outboxResultResponse be the response from using an activitypub client to fetch an activitypub object for the URL indicated by the value of the postOutboxResponse http response header named 'location' * let target.result be the result of parsing outboxResultResponse http response body as JSON. If the response body is not a JSON object, result outcome is inapplicable.
* target.result must be a JSON object * target.result.id MUST not be the same as input.submission.id * rationale: the requirement is that the submission.id MUST be overwrittedn/ignored * target.result.id MUST be a string * rationale: the requirement says the server MUST generate a new id
* target.result must be a JSON object * target.result.id MUST not be the same as input.submission.id * rationale: the requirement is that the submission.id MUST be overwrittedn/ignored * target.result.id MUST be a string * rationale: the requirement says the server MUST generate a new id
This Test has been derived from these specified requirements.
{ "source": "https://www.w3.org/TR/activitypub/", "section": { "id": "https://www.w3.org/TR/activitypub/#x6-client-to-server-interactions", "branch": [ 6 ] }, "selector": { "type": "TextQuoteSelector", "exact": "If an Activity is submitted with a value in the id property, servers MUST ignore this and generate a new id for the Activity.\n", "suffix": "Servers MUST return a 201 Created HTTP code, and unless the activity is transient, MUST include the new id in the Location header.\n" } }
{ "id": "urn:uuid:2bdc4682-308f-42ae-87cf-847f62f64e36", "type": "Behavior", "uuid": "2bdc4682-308f-42ae-87cf-847f62f64e36", "content": "If an Activity is submitted with a value in the id property, servers MUST ignore this and generate a new id for the Activity.\n", "context": [ "https://www.w3.org/TR/activitypub/", { "name": "Client to server interaction" }, { "name": "clients posting Activities to an actor's outbox" } ], "tag": [ { "name": "ActivityPubServer", "id": "https://socialweb.coop/tag/ActivityPubServer" } ], "origin": { "source": "https://www.w3.org/TR/activitypub/", "section": { "id": "https://www.w3.org/TR/activitypub/#x6-client-to-server-interactions", "branch": [ 6 ] }, "selector": { "type": "TextQuoteSelector", "exact": "If an Activity is submitted with a value in the id property, servers MUST ignore this and generate a new id for the Activity.\n", "suffix": "Servers MUST return a 201 Created HTTP code, and unless the activity is transient, MUST include the new id in the Location header.\n" } }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] }
{ "name": "post outbox server must overwrite id property", "description": "A Test Rule for an ActivityPub Requirement", "applicability": "\nHow to derive test targets from input:\n* let postOutboxResponse be the http response from using an activitypub client to post to input.outbox\n* if postOutboxResponse does not contain a 'location' header, result outcome is inapplicable.\n* let outboxResultResponse be the response from using an activitypub client to fetch an activitypub object for the URL indicated by the value of the postOutboxResponse http response header named 'location'\n* let target.result be the result of parsing outboxResultResponse http response body as JSON. If the response body is not a JSON object, result outcome is inapplicable.\n", "expectations": "\n* target.result must be a JSON object\n* target.result.id MUST not be the same as input.submission.id\n * rationale: the requirement is that the submission.id MUST be overwrittedn/ignored\n* target.result.id MUST be a string\n * rationale: the requirement says the server MUST generate a new id\n", "slug": "post-outbox-server-overwrites-id-property", "uuid": "30018b5d-699a-45a9-a623-1f09a36cf0a6", "requirementReference": [ { "id": "urn:uuid:2bdc4682-308f-42ae-87cf-847f62f64e36", "url": "https://activitypub-testing-website.socialweb.coop/2bdc4682-308f-42ae-87cf-847f62f64e36" } ], "input": { "outbox": { "help": "the url to the Outbox handling an Activity POST request", "required": true, "type": "xsd:anyUri", "rangeIncludes": [ "https://www.w3.org/ns/activitystreams#outbox" ] }, "authorization": { "help": "HTTP Authorization header value to include in outbox POST request", "required": false, "type": [ "xsd:string", "https://activitypub-testing.socialweb.coop/ns/HiddenInTestResults" ], "rangeIncludes": [ "https://www.rfc-editor.org/rfc/rfc9110#field.authorization.value" ] } }, "passedCases": [], "inapplicableCases": [ { "name": "404 response outbox", "input": { "outbox": "https://socialweb.coop/activitypub/testing/utilities/response?status=404" }, "result": { "outcome": "inapplicable" } } ], "attributedTo": [ { "name": "bengo", "url": "https://bengo.is/" }, { "name": "codenamedmitri" } ] }