chromium/content/test/data/attribution_reporting/interop/attribution_scopes_null_scopes_removes_data.json

{
  "description": "An incoming source with null scopes should remove previous matching sources' scopes data.",
  "api_config": {
    "needs_attribution_scopes": true,
    "max_destinations_per_rate_limit_window": "2",
    "max_destinations_per_rate_limit_window_reporting_site": "2"
  },
  "input": {
    "registrations": [
      // S1: attribution scopes -> [1] destinations -> [D1]
      // attribution scope limit -> 4.
      {
        "timestamp": "0",
        "registration_request": {
          "context_origin": "https://source.test",
          "Attribution-Reporting-Eligible": "navigation-source"
        },
        "responses": [
          {
            "url": "https://reporter.test/register-source",
            "response": {
              "Attribution-Reporting-Register-Source": {
                "destination": "https://destination.test",
                "source_event_id": "123",
                "attribution_scopes": {
                  "limit": 4,
                  "values": [
                    "1"
                  ]
                }
              }
            }
          }
        ]
      },
      // S2: used to trigger global destination limit in following sources.
      {
        "timestamp": "1",
        "registration_request": {
          "context_origin": "https://source.test",
          "Attribution-Reporting-Eligible": "navigation-source"
        },
        "responses": [
          {
            "url": "https://reporter2.test/register-source",
            "response": {
              "Attribution-Reporting-Register-Source": {
                "destination": "https://destination2.test",
                "source_event_id": "111",
                "attribution_scopes": {
                  "limit": 4,
                  "values": [
                    "1"
                  ]
                }
              }
            }
          }
        ]
      },
      // S3: attribution_scopes -> [] destinations -> [D1, D3].
      // S1 attribution scope fields will be defaulted. S3 will hit the global
      // max destinations limit and not register.
      {
        "timestamp": "1000",
        "registration_request": {
          "context_origin": "https://source.test",
          "Attribution-Reporting-Eligible": "navigation-source"
        },
        "responses": [
          {
            "url": "https://reporter.test/register-source",
            "response": {
              "Attribution-Reporting-Register-Source": {
                "destination": [
                  "https://destination.test",
                  "https://destination3.test"
                ],
                "source_event_id": "234"
              }
            }
          }
        ]
      },
      // T1: attribution scope -> "1", destination -> D1.
      // This should match to none as S1 scopes were set to null.
      {
        "timestamp": "2000",
        "registration_request": {
          "context_origin": "https://destination.test"
        },
        "responses": [
          {
            "url": "https://reporter.test/register-trigger",
            "debug_permission": true,
            "response": {
              "Attribution-Reporting-Register-Trigger": {
                "attribution_scopes": [
                  "1"
                ],
                "debug_reporting": true,
                "event_trigger_data": [
                  {}
                ]
              }
            }
          }
        ]
      },
      // T2: attribution scope -> [], destination -> D1.
      // This should match to S1 as S3 was not registered.
      {
        "timestamp": "3000",
        "registration_request": {
          "context_origin": "https://destination.test"
        },
        "responses": [
          {
            "url": "https://reporter.test/register-trigger",
            "debug_permission": true,
            "response": {
              "Attribution-Reporting-Register-Trigger": {
                "debug_reporting": true,
                "event_trigger_data": [
                  {
                    "trigger_data": "2"
                  }
                ]
              }
            }
          }
        ]
      },
      // S4: attribution_scope_limit -> 4 attribution scopes -> [1].
      // S1 should be deleted due to having a now null scope limit. S4 will hit
      // the global max destinations limit and not register.
      {
        "timestamp": "4000",
        "registration_request": {
          "context_origin": "https://source.test",
          "Attribution-Reporting-Eligible": "navigation-source"
        },
        "responses": [
          {
            "url": "https://reporter.test/register-source",
            "response": {
              "Attribution-Reporting-Register-Source": {
                "destination": [
                  "https://destination.test",
                  "https://destination3.test"
                ],
                "source_event_id": "345",
                "attribution_scopes": {
                  "limit": 4,
                  "values": [
                    "2"
                  ]
                }
              }
            }
          }
        ]
      },
      // T3: attribution scope -> [], destination -> D1.
      // This should match to none as S1 was deleted and S4 was not registered.
      {
        "timestamp": "5000",
        "registration_request": {
          "context_origin": "https://destination.test"
        },
        "responses": [
          {
            "url": "https://reporter.test/register-trigger",
            "debug_permission": true,
            "response": {
              "Attribution-Reporting-Register-Trigger": {
                "debug_reporting": true,
                "event_trigger_data": [
                  {
                    "trigger_data": "3"
                  }
                ]
              }
            }
          }
        ]
      }
    ]
  },
  "output": {
    "reports": [
      {
        "payload": [
          {
            "body": {
              "attribution_destination": "https://destination.test"
            },
            "type": "trigger-no-matching-source"
          }
        ],
        "report_time": "2000",
        "report_url": "https://reporter.test/.well-known/attribution-reporting/debug/verbose"
      },
      {
        "payload": [
          {
            "body": {
              "attribution_destination": "https://destination.test"
            },
            "type": "trigger-no-matching-source"
          }
        ],
        "report_time": "5000",
        "report_url": "https://reporter.test/.well-known/attribution-reporting/debug/verbose"
      },
      {
        "payload": {
          "attribution_destination": "https://destination.test",
          "randomized_trigger_rate": 0.0024263,
          "scheduled_report_time": "172800",
          "source_event_id": "123",
          "source_type": "navigation",
          "trigger_data": "2"
        },
        "report_url": "https://reporter.test/.well-known/attribution-reporting/report-event-attribution",
        "report_time": "172800000"
      }
    ]
  }
}