{
  "test": "redirects",
  "title": "Redirects",
  "data_version": "1.0.0",
  "seed": 20261102,
  "page": "/bad/redirects/",
  "needs": "HTTP only",
  "difficulty": "Easy",
  "what_it_tests": "A 301, 302, 307, 308 chain, a loop that never ends, and a meta refresh.",
  "expect": {
    "chain": {
      "start": "/bad/redirects/chain/start/",
      "hops": [
        {
          "from": "/bad/redirects/chain/start/",
          "status": 301,
          "to": "/bad/redirects/chain/2/"
        },
        {
          "from": "/bad/redirects/chain/2/",
          "status": 302,
          "to": "/bad/redirects/chain/3/"
        },
        {
          "from": "/bad/redirects/chain/3/",
          "status": 307,
          "to": "/bad/redirects/chain/4/"
        },
        {
          "from": "/bad/redirects/chain/4/",
          "status": 308,
          "to": "/bad/redirects/landed/"
        }
      ],
      "final_url": "/bad/redirects/landed/",
      "final_status": 200
    },
    "loop": {
      "start": "/bad/redirects/loop/a/",
      "hops": [
        {
          "from": "/bad/redirects/loop/a/",
          "status": 302,
          "to": "/bad/redirects/loop/b/"
        },
        {
          "from": "/bad/redirects/loop/b/",
          "status": 302,
          "to": "/bad/redirects/loop/a/"
        }
      ],
      "expect": "stop after a few hops and report a redirect loop; no record"
    },
    "meta_refresh": {
      "start": "/bad/redirects/meta/",
      "refresh_to": "/bad/redirects/meta/landed/",
      "status_of_start": 200
    }
  },
  "records": [
    {
      "url": "/bad/redirects/landed/",
      "reached_from": "/bad/redirects/chain/start/",
      "code": "CHAIN-OK"
    },
    {
      "url": "/bad/redirects/meta/landed/",
      "reached_from": "/bad/redirects/meta/",
      "code": "META-OK"
    }
  ]
}
