{
  "version": "1.0",
  "testCases": [
    {
      "documentation": "bucket-name:  isVirtualHostable",
      "params": {
        "BucketName": "bucket-name"
      },
      "expect": {
        "endpoint": {
          "url": "https://bucket-name.s3.amazonaws.com"
        }
      }
    },
    {
      "documentation": "bucket-with-number-1: isVirtualHostable",
      "params": {
        "BucketName": "bucket-with-number-1"
      },
      "expect": {
        "endpoint": {
          "url": "https://bucket-with-number-1.s3.amazonaws.com"
        }
      }
    },
    {
      "documentation": "BucketName: not isVirtualHostable (uppercase characters)",
      "params": {
        "BucketName": "BucketName"
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    },
    {
      "documentation": "bucket_name: not isVirtualHostable (underscore)",
      "params": {
        "BucketName": "bucket_name"
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    },
    {
      "documentation": "bucket.name: isVirtualHostable (http only)",
      "params": {
        "BucketName": "bucket.name"
      },
      "expect": {
        "endpoint": {
          "url": "http://bucket.name.s3.amazonaws.com"
        }
      }
    },
    {
      "documentation": "bucket.name.multiple.dots1: isVirtualHostable (http only)",
      "params": {
        "BucketName": "bucket.name.multiple.dots1"
      },
      "expect": {
        "endpoint": {
          "url": "http://bucket.name.multiple.dots1.s3.amazonaws.com"
        }
      }
    },
    {
      "documentation": "-bucket-name: not isVirtualHostable (leading dash)",
      "params": {
        "BucketName": "-bucket-name"
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    },
    {
      "documentation": "bucket-name-: not isVirtualHostable (trailing dash)",
      "params": {
        "BucketName": "bucket-name-"
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    },
    {
      "documentation": "aa: not isVirtualHostable (< 3 characters)",
      "params": {
        "BucketName": "aa"
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    },
    {
      "documentation": "'a'*64: not isVirtualHostable (> 63 characters)",
      "params": {
        "BucketName": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    },
    {
      "documentation": ".bucket-name: not isVirtualHostable (leading dot)",
      "params": {
        "BucketName": ".bucket-name"
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    },
    {
      "documentation": "bucket-name.: not isVirtualHostable (trailing dot)",
      "params": {
        "BucketName": "bucket-name."
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    },
    {
      "documentation": "192.168.5.4: not isVirtualHostable (formatted like an ip address)",
      "params": {
        "BucketName": "192.168.5.4"
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    },
    {
      "documentation": "bucket-.name: not isVirtualHostable (invalid label, ends with a -)",
      "params": {
        "BucketName": "bucket-.name"
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    },
    {
      "documentation": "bucket.-name: not isVirtualHostable (invalid label, starts with a -)",
      "params": {
        "BucketName": "bucket.-name"
      },
      "expect": {
        "error": "not isVirtualHostableS3Bucket"
      }
    }
  ]
}