github.com/mckael/restic@v0.8.3/internal/backend/b2/config_test.go (about)

     1  package b2
     2  
     3  import "testing"
     4  
     5  var configTests = []struct {
     6  	s   string
     7  	cfg Config
     8  }{
     9  	{"b2:bucketname", Config{
    10  		Bucket:      "bucketname",
    11  		Prefix:      "",
    12  		Connections: 5,
    13  	}},
    14  	{"b2:bucketname:", Config{
    15  		Bucket:      "bucketname",
    16  		Prefix:      "",
    17  		Connections: 5,
    18  	}},
    19  	{"b2:bucketname:/prefix/directory", Config{
    20  		Bucket:      "bucketname",
    21  		Prefix:      "prefix/directory",
    22  		Connections: 5,
    23  	}},
    24  	{"b2:foobar", Config{
    25  		Bucket:      "foobar",
    26  		Prefix:      "",
    27  		Connections: 5,
    28  	}},
    29  	{"b2:foobar:", Config{
    30  		Bucket:      "foobar",
    31  		Prefix:      "",
    32  		Connections: 5,
    33  	}},
    34  	{"b2:foobar:/", Config{
    35  		Bucket:      "foobar",
    36  		Prefix:      "",
    37  		Connections: 5,
    38  	}},
    39  }
    40  
    41  func TestParseConfig(t *testing.T) {
    42  	for _, test := range configTests {
    43  		t.Run("", func(t *testing.T) {
    44  			cfg, err := ParseConfig(test.s)
    45  			if err != nil {
    46  				t.Fatalf("%s failed: %v", test.s, err)
    47  			}
    48  
    49  			if cfg != test.cfg {
    50  				t.Fatalf("input: %s\n wrong config, want:\n  %#v\ngot:\n  %#v",
    51  					test.s, test.cfg, cfg)
    52  			}
    53  		})
    54  	}
    55  }
    56  
    57  var invalidConfigTests = []struct {
    58  	s   string
    59  	err string
    60  }{
    61  	{
    62  		"b2",
    63  		"invalid format, want: b2:bucket-name[:path]",
    64  	},
    65  	{
    66  		"b2:",
    67  		"bucket name not found",
    68  	},
    69  	{
    70  		"b2:bucket_name",
    71  		"bucket name contains invalid characters, allowed are: a-z, 0-9, dash (-)",
    72  	},
    73  	{
    74  		"b2:bucketname/prefix/directory/",
    75  		"bucket name contains invalid characters, allowed are: a-z, 0-9, dash (-)",
    76  	},
    77  }
    78  
    79  func TestInvalidConfig(t *testing.T) {
    80  	for _, test := range invalidConfigTests {
    81  		t.Run("", func(t *testing.T) {
    82  			cfg, err := ParseConfig(test.s)
    83  			if err == nil {
    84  				t.Fatalf("expected error not found for invalid config: %v, cfg is:\n%#v", test.s, cfg)
    85  			}
    86  
    87  			if err.Error() != test.err {
    88  				t.Fatalf("unexpected error found, want:\n  %v\ngot:\n  %v", test.err, err.Error())
    89  			}
    90  		})
    91  	}
    92  }