forked from TrueCloudLab/restic
8f5ff379b7
Prepends the object path prefix to all s3 paths and allows to have multiple independent restic backup repositories in a single s3 bucket. Removed the hardcoded "restic" prefix from s3 paths. Use "restic" as the default object path prefix for s3 if no other prefix gets specified. This will retain backward compatibility with existing s3 repository configurations. Simplified the parse flow to have a single point where we parse the bucket name and the prefix within the bucket. Added tests for s3 object path prefix and the new default prefix to config_test and location_test.
62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package s3
|
|
|
|
import "testing"
|
|
|
|
var configTests = []struct {
|
|
s string
|
|
cfg Config
|
|
}{
|
|
{"s3://eu-central-1/bucketname", Config{
|
|
Endpoint: "eu-central-1",
|
|
Bucket: "bucketname",
|
|
Prefix: "restic",
|
|
}},
|
|
{"s3://eu-central-1/bucketname/prefix/directory", Config{
|
|
Endpoint: "eu-central-1",
|
|
Bucket: "bucketname",
|
|
Prefix: "prefix/directory",
|
|
}},
|
|
{"s3:eu-central-1/foobar", Config{
|
|
Endpoint: "eu-central-1",
|
|
Bucket: "foobar",
|
|
Prefix: "restic",
|
|
}},
|
|
{"s3:eu-central-1/foobar/prefix/directory", Config{
|
|
Endpoint: "eu-central-1",
|
|
Bucket: "foobar",
|
|
Prefix: "prefix/directory",
|
|
}},
|
|
{"s3:https://hostname:9999/foobar", Config{
|
|
Endpoint: "hostname:9999",
|
|
Bucket: "foobar",
|
|
Prefix: "restic",
|
|
}},
|
|
{"s3:http://hostname:9999/foobar", Config{
|
|
Endpoint: "hostname:9999",
|
|
Bucket: "foobar",
|
|
Prefix: "restic",
|
|
UseHTTP: true,
|
|
}},
|
|
{"s3:http://hostname:9999/bucket/prefix/directory", Config{
|
|
Endpoint: "hostname:9999",
|
|
Bucket: "bucket",
|
|
Prefix: "prefix/directory",
|
|
UseHTTP: true,
|
|
}},
|
|
}
|
|
|
|
func TestParseConfig(t *testing.T) {
|
|
for i, test := range configTests {
|
|
cfg, err := ParseConfig(test.s)
|
|
if err != nil {
|
|
t.Errorf("test %d failed: %v", i, err)
|
|
continue
|
|
}
|
|
|
|
if cfg != test.cfg {
|
|
t.Errorf("test %d: wrong config, want:\n %v\ngot:\n %v",
|
|
i, test.cfg, cfg)
|
|
continue
|
|
}
|
|
}
|
|
}
|