Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions impl/e2e-tests/api-disabled.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{
"$comment": "The specification does not require that impressions saved before the API was disabled are retained once it is re-enabled, so we do not test that here",
"events": [
{
"seconds": 1,
"event": "disableAPI"
},
{
"seconds": 2,
"site": "publisher.example",
"event": "saveImpression",
"options": {
"histogramIndex": 0,
"lifetimeDays": 0
},
"$comment": "Impression options are still validated even when the API is disabled",
"expectedError": "RangeError"
},
{
"seconds": 3,
"site": "publisher.example",
"event": "saveImpression",
"options": {
"histogramIndex": 0
}
},
{
"seconds": 4,
"event": "enableAPI"
},
{
"seconds": 5,
"site": "advertiser.example",
"event": "measureConversion",
"options": {
"aggregationService": "https://agg-service.example",
"histogramSize": 1
},
"$comment": "The valid impression should not have been saved while the API was disabled",
"expected": [0]
},
{
"seconds": 6,
"site": "publisher.example",
"event": "saveImpression",
"options": {
"histogramIndex": 0
}
},
{
"seconds": 7,
"event": "disableAPI"
},
{
"seconds": 8,
"site": "advertiser.example",
"event": "measureConversion",
"options": {
"aggregationService": "https://agg-service.example",
"histogramSize": 0
},
"$comment": "Conversion options are still validated even when the API is disabled...",
"expected": "RangeError"
},
{
"seconds": 9,
"site": "advertiser.example",
"event": "measureConversion",
"options": {
"aggregationService": "https://agg-service.example",
"histogramSize": 1
},
"$comment": "... But valid conversion options only result in all-zero reports, despite the would-be-matching impression",
"expected": [0]
}
]
}
18 changes: 18 additions & 0 deletions impl/e2e.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,24 @@
},
"required": ["forgetVisits", "sites"],
"unevaluatedProperties": false
},
{
"$ref": "#/$defs/commonEvent",
"properties": {
"event": {
"const": "enableAPI"
}
},
"unevaluatedProperties": false
},
{
"$ref": "#/$defs/commonEvent",
"properties": {
"event": {
"const": "disableAPI"
}
},
"unevaluatedProperties": false
}
]
}
Expand Down
20 changes: 19 additions & 1 deletion impl/src/e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ type Event =
| SaveImpression
| MeasureConversion
| ClearImpressionsForSite
| ClearBrowsingHistoryForAttribution;
| ClearBrowsingHistoryForAttribution
| EnableAPI
| DisableAPI;

type ExpectedError =
| "RangeError"
Expand Down Expand Up @@ -64,6 +66,16 @@ interface ClearBrowsingHistoryForAttribution {
forgetVisits: boolean;
}

interface EnableAPI {
event: "enableAPI";
seconds: number;
}

interface DisableAPI {
event: "disableAPI";
seconds: number;
}

function assertThrows(
call: () => unknown,
expectedError: ExpectedError,
Expand Down Expand Up @@ -165,6 +177,12 @@ function runTest(
case "clearBrowsingHistoryForAttribution":
backend.clearState(event.sites, event.forgetVisits);
break;
case "enableAPI":
backend.enabled = true;
break;
case "disableAPI":
backend.enabled = false;
break;
}
}
}
Expand Down