85 lines
1.9 KiB
Go
85 lines
1.9 KiB
Go
|
package getter
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestS3Detector(t *testing.T) {
|
||
|
cases := []struct {
|
||
|
Input string
|
||
|
Output string
|
||
|
}{
|
||
|
// Virtual hosted style
|
||
|
{
|
||
|
"bucket.s3.amazonaws.com/foo",
|
||
|
"s3::https://s3.amazonaws.com/bucket/foo",
|
||
|
},
|
||
|
{
|
||
|
"bucket.s3.amazonaws.com/foo/bar",
|
||
|
"s3::https://s3.amazonaws.com/bucket/foo/bar",
|
||
|
},
|
||
|
{
|
||
|
"bucket.s3.amazonaws.com/foo/bar.baz",
|
||
|
"s3::https://s3.amazonaws.com/bucket/foo/bar.baz",
|
||
|
},
|
||
|
{
|
||
|
"bucket.s3-eu-west-1.amazonaws.com/foo",
|
||
|
"s3::https://s3-eu-west-1.amazonaws.com/bucket/foo",
|
||
|
},
|
||
|
{
|
||
|
"bucket.s3-eu-west-1.amazonaws.com/foo/bar",
|
||
|
"s3::https://s3-eu-west-1.amazonaws.com/bucket/foo/bar",
|
||
|
},
|
||
|
{
|
||
|
"bucket.s3-eu-west-1.amazonaws.com/foo/bar.baz",
|
||
|
"s3::https://s3-eu-west-1.amazonaws.com/bucket/foo/bar.baz",
|
||
|
},
|
||
|
// Path style
|
||
|
{
|
||
|
"s3.amazonaws.com/bucket/foo",
|
||
|
"s3::https://s3.amazonaws.com/bucket/foo",
|
||
|
},
|
||
|
{
|
||
|
"s3.amazonaws.com/bucket/foo/bar",
|
||
|
"s3::https://s3.amazonaws.com/bucket/foo/bar",
|
||
|
},
|
||
|
{
|
||
|
"s3.amazonaws.com/bucket/foo/bar.baz",
|
||
|
"s3::https://s3.amazonaws.com/bucket/foo/bar.baz",
|
||
|
},
|
||
|
{
|
||
|
"s3-eu-west-1.amazonaws.com/bucket/foo",
|
||
|
"s3::https://s3-eu-west-1.amazonaws.com/bucket/foo",
|
||
|
},
|
||
|
{
|
||
|
"s3-eu-west-1.amazonaws.com/bucket/foo/bar",
|
||
|
"s3::https://s3-eu-west-1.amazonaws.com/bucket/foo/bar",
|
||
|
},
|
||
|
{
|
||
|
"s3-eu-west-1.amazonaws.com/bucket/foo/bar.baz",
|
||
|
"s3::https://s3-eu-west-1.amazonaws.com/bucket/foo/bar.baz",
|
||
|
},
|
||
|
// Misc tests
|
||
|
{
|
||
|
"s3-eu-west-1.amazonaws.com/bucket/foo/bar.baz?version=1234",
|
||
|
"s3::https://s3-eu-west-1.amazonaws.com/bucket/foo/bar.baz?version=1234",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
pwd := "/pwd"
|
||
|
f := new(S3Detector)
|
||
|
for i, tc := range cases {
|
||
|
output, ok, err := f.Detect(tc.Input, pwd)
|
||
|
if err != nil {
|
||
|
t.Fatalf("err: %s", err)
|
||
|
}
|
||
|
if !ok {
|
||
|
t.Fatal("not ok")
|
||
|
}
|
||
|
|
||
|
if output != tc.Output {
|
||
|
t.Fatalf("%d: bad: %#v", i, output)
|
||
|
}
|
||
|
}
|
||
|
}
|