[
  {
    "description": "should reject forbidden host in full URI",
    "env": {
      "AWS_CONTAINER_CREDENTIALS_FULL_URI": "http://192.168.1.1/endpoint"
    },
    "expect": {
      "type": "error",
      "reason": "Uri 'http://192.168.1.1/endpoint' contains an unsupported host."
    }
  },
  {
    "description": "should reject forbidden link-local host in full URI",
    "env": {
      "AWS_CONTAINER_CREDENTIALS_FULL_URI": "http://169.254.170.3/endpoint"
    },
    "expect": {
      "type": "error",
      "reason": "Uri 'http://169.254.170.3/endpoint' contains an unsupported host."
    }
  },
  {
    "description": "should reject invalid token file path",
    "env": {
      "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI": "/endpoint",
      "AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE": "/full/path/to/token/file"
    },
    "token_file": {
      "type": "error",
      "errno": "ENOENT"
    },
    "expect": {
      "type": "error",
      "reason": "Failed to read authorization token from '/full/path/to/token/file': no such file or directory"
    }
  },
    {
      "description": "https URI",
      "env": {
        "AWS_CONTAINER_CREDENTIALS_FULL_URI": "https://awscredentials.amazonaws.com/credentials"
      },
      "expect": {
        "type": "success",
        "request": {
          "method": "GET",
          "uri": "https://awscredentials.amazonaws.com/credentials",
          "headers": {}
        }
      }
    },
    {
      "description": "http loopback(v4) URI",
      "env": {
        "AWS_CONTAINER_CREDENTIALS_FULL_URI": "http://127.0.0.2/credentials"
      },
      "expect": {
        "type": "success",
        "request": {
          "method": "GET",
          "uri": "http://127.0.0.2/credentials",
          "headers": {}
        }
      }
    },
    {
      "description": "http loopback(v4) with host resolution (no port)",
      "env": {
        "AWS_CONTAINER_CREDENTIALS_FULL_URI": "http://localhost/credentials"
      },
      "expect": {
        "type": "success",
        "request": {
          "method": "GET",
          "uri": "http://localhost/credentials",
          "headers": {}
        }
      }
    },
    {
      "description": "http loopback(v4) with host resolution (port)",
      "env": {
        "AWS_CONTAINER_CREDENTIALS_FULL_URI": "http://localhost:8080/credentials"
      },
      "expect": {
        "type": "success",
        "request": {
          "method": "GET",
          "uri": "http://localhost:8080/credentials",
          "headers": {}
        }
      }
    },
    {
      "description": "http loopback(v6) URI",
      "env": {
        "AWS_CONTAINER_CREDENTIALS_FULL_URI": "http://[::1]/credentials"
      },
      "expect": {
        "type": "success",
        "request": {
          "method": "GET",
          "uri": "http://[::1]/credentials",
          "headers": {}
        }
      }
    },
    {
      "description": "http link-local ECS URI",
      "env": {
        "AWS_CONTAINER_CREDENTIALS_FULL_URI": "http://169.254.170.2/credentials"
      },
      "expect": {
        "type": "success",
        "request": {
          "method": "GET",
          "uri": "http://169.254.170.2/credentials",
          "headers": {}
        }
      }
    },
    {
      "description": "http link-local EKS URI",
      "env": {
        "AWS_CONTAINER_CREDENTIALS_FULL_URI": "http://169.254.170.23/credentials"
      },
      "expect": {
        "type": "success",
        "request": {
          "method": "GET",
          "uri": "http://169.254.170.23/credentials",
          "headers": {}
        }
      }
    },
    {
      "description": "complex full URI",
      "env": {
        "AWS_CONTAINER_CREDENTIALS_FULL_URI": "http://127.0.0.1:8080/credentials?foo=bar%20baz"
      },
      "expect": {
        "type": "success",
        "request": {
          "method": "GET",
          "uri": "http://127.0.0.1:8080/credentials?foo=bar%20baz",
          "headers": {}
        }
      }
    },
    {
      "description": "auth token from file",
      "env": {
        "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI": "/credentials-relative",
        "AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE": "/path/to/token"
      },
      "token_file": {
        "type": "success",
        "content": "Basic static%20token"
      },
      "expect": {
        "type": "success",
        "request": {
          "method": "GET",
          "uri": "http://169.254.170.2/credentials-relative",
          "headers": {
            "Authorization": "Basic static%20token"
          }
        }
      }
    },
    {
      "description": "auth token from env",
      "env": {
        "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI": "/credentials-relative",
        "AWS_CONTAINER_AUTHORIZATION_TOKEN": "Basic static%20token2"
      },
      "expect": {
        "type": "success",
        "request": {
          "method": "GET",
          "uri": "http://169.254.170.2/credentials-relative",
          "headers": {
            "Authorization": "Basic static%20token2"
          }
        }
      }
    }
]
